Parents should be frozen after creation.

Use a tuple to ensure that the parents list
can not be mutated after flow creation.

Change-Id: Ic2a0ed73a2a7211184deb92d57720ff417429dca
Provide the length of the flows.

Its useful to be able to check if a flow contains
anything by just inspecting the len() of the flow.
This can be used to avoid running a flow in the
first place if nothing is in said flow.

Change-Id: Ibfea7f10fc67d5dd3ddfa6f6fe6c08805562998a
Add a way to use taskflow until library stabilized.

In order to encourage taskflow adoption, take a hint
from oslo-incubator and have a similar update.py script
that will allow users of taskflow to selectively pick up
flows and there dependencies for usage in there own projects.

Example run:

$ python2.6 update.py  --base cinder --dest-dir /tmp/cinder_test --primitives flow.linear_flow

Copying module 'taskflow.decorators' -> 'cinder.taskflow.decorators'
  '/tmp/cinder_test/cinder/taskflow/' (new)
  '/tmp/cinder_test/cinder/taskflow/__init__.py' (new)
  'taskflow/decorators.py' -> '/tmp/cinder_test/cinder/taskflow/decorators.py'
Copying module 'taskflow.exceptions' -> 'cinder.taskflow.exceptions'
  'taskflow/exceptions.py' -> '/tmp/cinder_test/cinder/taskflow/exceptions.py'
Copying module 'taskflow.patterns.base' -> 'cinder.taskflow.patterns.base'
  '/tmp/cinder_test/cinder/taskflow/patterns/' (new)
  '/tmp/cinder_test/cinder/taskflow/patterns/__init__.py' (new)
  'taskflow/patterns/base.py' -> '/tmp/cinder_test/cinder/taskflow/patterns/base.py'
Copying module 'taskflow.patterns.linear_flow' -> 'cinder.taskflow.patterns.linear_flow'
  'taskflow/patterns/linear_flow.py' -> '/tmp/cinder_test/cinder/taskflow/patterns/linear_flow.py'
Copying module 'taskflow.states' -> 'cinder.taskflow.states'
  'taskflow/states.py' -> '/tmp/cinder_test/cinder/taskflow/states.py'
Copying module 'taskflow.utils' -> 'cinder.taskflow.utils'
  'taskflow/utils.py' -> '/tmp/cinder_test/cinder/taskflow/utils.py'

Change-Id: Ib4e6299bdae737e2759f22b1eff35c344bb8beb2
Merge "Provide the length of the flows."
Merge "Add a way to use taskflow until library stabilized."
Show file modifications and fix dirpath based on config file.

Change-Id: Iad230d4d565ad9eab3f54f490aff1c1d1b308ab7
Fix two minor bugs in docs/examples

+ taskflow path in sys.path

+ listener => notifier

Change-Id: I0a657540571f9862e2adea5a40d03dfa3ce90e2b
Fix minor code style

Change-Id: Ib051581cd820cbb478b95b1b4421adb2b577567d
Fix typos in test_linear_flow.py and simple_linear_listening.py

Change-Id: I8704143682437097d148f076547e575fd85dc687
Adjust a bunch of hacking violations.

- Fix new hacking violations!
- Add more comments!

Change-Id: Ida0c1b6c98a8f45a15985b33529a1f479e595db5
Move examples under the source tree.

The examples will likely be easier to find
if they are colocated next to the rest of
the source tree. They can also be turned into
test cases in the future this way also.

Change-Id: Iedcf5c51778459e5216b8072e71e271e7c7ee0bf
Add a more complicated graph example.

Add an example that creates tasks that will
build a car and has the dependencies specified
to build the car in the right order and have each
task be submitted to the flow and then run and
watch the tasks occur in the right order automatically.

Change-Id: I17a2f621dfd7ceefb0a9c863e3e68b21b92672c2
Add a example which simulates booting a vm

Show how a booting a vm like workflow could be
structured via an example and add some simple
reverting methods which will attempt to undo
the changes that they applied (automatically).

This flow is similar to how nova runs in a way.

Change-Id: Id068ef80d7702b9b5f9af3c2569b52de3c58d32d
Deep-copy not always possible.

In working with cinder it appears that at last
cinder is using objects which can not be deep
copied (sqlalchemy objects) and which actually
cause the deepcopy routine to fail. To get
around this avoid the deepcopy until proven
its really needed.

Change-Id: Ia7b7c49e82c2151351cc0f78ecb1531c35540652
Quiet the provider linking.

The log output actually seems to be
less useful when this is integrated into
cinder than I thought it would be so lets
turn it off.

Change-Id: I2832f6bc9153153fcf6e76e65d8430ba536539e8
Add a new simple calculator example.

Add a simple linear calculator example which will
be given a few sets of tasks to do and some initial provided
data and then combine the correct ordering of that tasks
to produce an output result that then can be extracted.

Change-Id: Ica84dff67ce0a6b7699cd98effebc85c7dbd4cb2
Merge "Adjust a bunch of hacking violations."
Merge "Deep-copy not always possible."
Merge "Quiet the provider linking."
Merge "Add a new simple calculator example."