[openstack-dev] [Nova] State machines in Nova

Joshua Harlow harlowja at fastmail.com
Tue May 31 20:26:43 UTC 2016


Timofei Durakov wrote:
> Hi team,
>
> there is blueprint[1] that was approved during Liberty and resubmitted
> to Newton(with spec[2]).
> The idea is to define state machines for operations as live-migration,
> resize, etc. and to deal with them operation states.
> The spec PoC patches are overall good. At the same time I think is will
> be good to get agreement on the usage of state-machines in Nova.
> There are 2 options:
>
>   * implement proposed change and use state machines to deal with states
>     only

I think this is what could be called the ironic equivalent correct?

In ironic @ 
https://github.com/openstack/ironic/blob/master/ironic/common/states.py 
the state machine here is used to ensure proper states are transitioned 
over and no invalid/unexpected state transitions happen. The code though 
itself still runs in a implicit fashion and afaik only interacts with 
the state machine as a side-effect of actions occurring (instead of the 
reverse where the state machine itself is 'driving' those actions to 
happen/to completion).

>       o procs:
>           + could be implemented/merged right now
>           + cleans up states for migrations
>       o cons:
>           + state machine only deal with states, and it will be hard to
>             build on top of it task API, as bp [1] was designed for
>             another thing.
>
>   * use state machines in Task API(which I'm going to work on during
>     next release):

So this would be the second model described above, where the state 
machine (or set of state machines) itself (together could be formed into 
a action plan, or action workflow or ...) would be the 'entity' 
realizing a given action and ensuring that it is performed until 
completed (or tracking where it was paused and such); is that correct?

>       o procs:
>           + Task API will orchestrate and deal with long running tasks
>           + usage state-machines could help with actions
>             rollbacks/retries/etc.
>       o cons:
>           + big amount of work
>           + requires time.
>
> I'd like to discuss these options in this thread.

It seems like one could progress from the first model to the second one, 
although that kind of progression would still be large (because if my 
understanding is correct the control of who runs what has to be given 
over to something else in the second model, similar to the control a 
taskflow engine or mistral engine has over what it runs); said control 
means that certain programming models may not map so well (from what I 
have seen).

>
> Timofey
>
> [1] -
> https://blueprints.launchpad.net/openstack/?searchtext=migration-state-machine
> [2] - https://review.openstack.org/#/c/320849/
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



More information about the OpenStack-dev mailing list