[occi-wg] Nouns and Verbs (was: Syntax of OCCI API)

Andre Merzky andre at merzky.net
Fri Apr 17 07:27:24 CDT 2009

Quoting [Sam Johnston] (Apr 17 2009):
>    On Fri, Apr 17, 2009 at 1:18 PM, Edmonds, AndrewX
>    <[1]andrewx.edmonds at intel.com> wrote:
>      Ah! As always the devilish details! :-)
>      Such important nuances, I believe, can be supported via attribute
>      (just a parameter) of the verb:
>      e.g. stop (GRACEFUL) or stop(KILL)
>      where the parameters wrt the stop verb are defined by a
>      restriction/enumeration. This too supports the restart verb (b).
>    So a client should probably know where to find basic buttons like
>    "start" and "stop" without having to know all the permutations
>    (including others yet to be invented relating to live migrations and
>    the like). Parameters are one way to implement this but they increase
>    complexity... maybe just "stop" for the most sensible approach for the
>    given infrastructure (ranging from pinging a daemon to ask for a
>    graceful shutdown to yanking the cord for physical servers), and
>    "stop/graceful" etc. for more nuanced versions.

A client can always map from a complex API to a simple
(G)UI.  It should not be problem to have a single STOP
button, and when pressing that to perform a couple of API
calls with more diverse semantics?

>    Let's flesh out the options first...
>    > (a) What state is a server in when it is created?
>      Well won't the result of a POST to server/create utilise HATEOAS or
>      something similar? The result should contain information pertaining
>      to the state of the resultant action.
>    Agreed, most actions should return [pointers to] resources and from
>    there you can tell whether you're "stopped", "starting" or "started"
>    and you'll know what transitions are available to you.

BTW: we should start to draft a state model...

Oh well, I don't have a candidate, really, but here is food
for discussion:

  New --> Running  --> Stopped

  Running <--> Suspended
  Running <--> Migrating


>    Sam
>    -----Original Message-----
>    From: Chris Webb [mailto:[2]chris.webb at elastichosts.com]
>    Sent: 17 April 2009 12:06
>    To: Sam Johnston
>    Cc: Edmonds, AndrewX; Andre Merzky; [3]occi-wg at ogf.org
>    Subject: Re: Nouns and Verbs (was: Syntax of OCCI API)
>    Sam Johnston <[4]samj at samj.net> writes:
>    > Ok so nouns and verbs (ignoring CRUD which is common anyway):
>    >
>    > server:
>    >  - start
>    >  - stop
>    >  - restart
>    >  - deploy/undeploy? (comes back to persistent vs ephemeral etc.)
>    >  - clone/snapshot?
>    Tackling just this one first, there are two core semantic issues:
>    1. Ephemoral vs persistent servers
>    There will be providers that only have a concept of servers in the
>    running
>    state (e.g. Amazon), providers with a concept of stopped/shutdown vms
>    (e.g.
>    GoGrid) and clouds that want to implement both.
>    2. What's possible from outside in a virtualisation environment
>    We think the (complete?) list of user-visible 'things you can do to a
>    vm'
>    are ACPI power button press, reset signal, kill the machine, pause the
>    machine and suspend/hibernate the vm to disk. Providers will implement
>    some
>    subset of these, and of course machines can also reboot and
>    shutdown/power-off from within, independently of the API. These reflect
>    on
>    the operations we can support, and how their behaviours can reasonably
>    be
>    defined.
>    (a) What state is a server in when it is created? In Amazon's case,
>    there's
>    only one state if the server exists---it's running. However, a more
>    general
>    provider like GoGrid can have guests in a stopped state, and we might
>    reasonably want to be able to create them stopped, especially when
>    implementing a web interface. This means that if we want to support
>    stopped
>    servers at all, we really need to be able to specify the desired
>    initial
>    state of server when creating it, e.g.
>     POST /server/create
>     state stopped
>     cpu 1000
>     [...]
>    (b) Whilst there is only really one meaning of 'start' and only one
>    (implementable) meaning of 'reset'/'restart', there are two varieties
>    of
>    stop that we might want to expose: a graceful shutdown (which might be
>    implemented by an ACPI power-down event for example) and a hard kill of
>    the
>    VM. Which sort of stop a 'destroy' does also needs to be specified. I
>    think
>    there's also a hibernate or suspend operation that some providers might
>    want
>    to export.
>    (c) What happens when a virtual machine powers-off from within? A
>    provider
>    like Amazon has only one behaviour they can exhibit: shutdown = stop =
>    destroy. However, people who support persistent servers might want to
>    yield
>    a server in a stopped state instead. To get predictable behaviour,
>    there
>    probably needs to be a property of a server which indicates whether
>    it's
>    supposed to persist or be one-shot.
>    Is the complete operation list perhaps something like
>     [usual create / info / set / destroy ]
>     start
>     kill
>     shutdown
>     suspend
>     reset
>    where destroy probably wants to be equivalent to a kill in effect, and
>    with
>    a boolean 'persist' server property that determines when a server moves
>    to a
>    stopped state or is deleted following a shutdown from the API or
>    within.
>    (This can clearly only be false for people like Amazon.)
>    What did you have in mind for deploy and undeploy? I can see how they
>    might
>    be identical to either start/stop or create/destroy, but I guess you
>    intend
>    another meaning?
>    Let's discuss clone/snapshot later once we have some firmer ideas about
>    the
>    core stuff.
>    Cheers,
>    Chris.
>    -------------------------------------------------------------
>    Intel Ireland Limited (Branch)
>    Collinstown Industrial Park, Leixlip, County Kildare, Ireland
>    Registered Number: E902934
>    This e-mail and any attachments may contain confidential material for
>    the sole use of the intended recipient(s). Any review or distribution
>    by others is strictly prohibited. If you are not the intended
>    recipient, please contact the sender and delete all copies.
> References
>    1. mailto:andrewx.edmonds at intel.com
>    2. mailto:chris.webb at elastichosts.com
>    3. mailto:occi-wg at ogf.org
>    4. mailto:samj at samj.net

Nothing is ever easy.

More information about the occi-wg mailing list