[openstack-dev] [Heat][Summit] Input wanted - real world heat spec

Joshua Harlow harlowja at yahoo-inc.com
Thu Apr 24 22:08:38 UTC 2014


Chiming in,

I'd like taskflow to get into the state-machine area (it's been discussed for a while [1]). It also does the workflow through defined steps[2] until completion (which imho is a subset in a way of the fully changeable state-machine). It also tries to add more value since when u declaratively define what the 'work' should be (within limits) u can then have taskflow execute it (via [3]), making imho your code less complicated (although it at the same time does at a new layer in), and letting taskflow try to help make it reliable for u (helping u do things like resume from a crash, run your code remotely via workers). Of course the library is actively developed (jump on #openstack-state-management) so additions like this or something like in the mentioned machinist library, which seems like just the foundational state-machine classes, could be hooked in/added.

The trouble I've had and that will likely be had with a approach like this is imho the complexity of it (and how much structuring code will there be, aka boilerplate); even currently taskflow already imposes some boilerplate (task/flow/engines objects) and mindset changes to adopting projects. A state-machine would impose similar + more (the states u could think of as task objects, the transitions would have to be some type of table, the reactions would be ?? and so on). Going down this path imho has to be done carefully and with consideration (and nothing will likely be perfect). This has always made me hesitate a little, in that it seems to add a lot of complexity that if not done carefully will cause more pain than goodness (the yin and yang). This is where I'd rather carefully figure out what this state-machine looks like (machinst looks to be the raw state-machine building blocks) and how it will/could be used and what benefit will it be bringing short-term and long-term. But I guess the one way to do it is try & learn (if u don't try u will never learn).

Certain other things that become interesting questions for taskflow and any type of state-machine (concepts that taskflow has that are being used that aren't typically thought about):

1. Persistence [4] (see how it is used)
2. What does undoing/reverting/resuming a state-machine even mean?

[1] https://etherpad.openstack.org/p/CinderTaskFlowFSM
[2] http://docs.openstack.org/developer/taskflow/states.html
[3] http://docs.openstack.org/developer/taskflow/engines.html
[4] http://docs.openstack.org/developer/taskflow/persistence.html

Anyways just some thoughts.

-Josh

From: Chris Armstrong <chris.armstrong at RACKSPACE.COM<mailto:chris.armstrong at RACKSPACE.COM>>
Reply-To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Date: Thursday, April 24, 2014 at 9:49 AM
To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org<mailto:openstack-dev at lists.openstack.org>>
Subject: Re: [openstack-dev] [Heat][Summit] Input wanted - real world heat spec

On April 23, 2014 at 7:47:37 PM, Robert Collins (robertc at robertcollins.net<mailto:robertc at robertcollins.net>) wrote:
Hi, we've got this summit session planned -
http://summit.openstack.org/cfp/details/428 which is really about
https://etherpad.openstack.org/p/heat-workflow-vs-convergence

We'd love feedback and questions - this is a significant amount of
work, but work I (and many others based on responses so far) believe
it is needed to really take Heat to users and ops teams.

Right now we're looking for both high and low level design and input.

One thing I’m curious about is whether we would gain benefit from explicitly managing resources as state machines. I’m not very familiar with TaskFlow, but my impression is that it basically knows how to run a defined workflow through multiple steps until completion. Heat resources will, with this change, become objects that need to react to inputs at any point in time, so I wonder if it’s better to model them as a finite state machine instead of just with workflows.

Granted, I’m pretty unfamiliar with TaskFlow, so I may be off the mark here. I would like to point out that a new very simple but concise FSM-modeling library was recently released called “Machinist”, and it may be worth taking a look at: https://github.com/hybridcluster/machinist

--

--
Christopher Armstrong
IRC: radix


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140424/e31ab4a5/attachment.html>


More information about the OpenStack-dev mailing list