<div dir="ltr">This broke grenade on stable/juno, here is the fix.<div><br></div><div><a href="https://review.openstack.org/#/c/152333/">https://review.openstack.org/#/c/152333/</a><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 2, 2015 at 10:56 AM, Joshua Harlow <span dir="ltr"><<a href="mailto:harlowja@outlook.com" target="_blank">harlowja@outlook.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The Oslo team is pleased to announce the release of:<br>
<br>
TaskFlow 0.7.0: taskflow structured state management library.<br>
<br>
For more details, please see the git log history below and:<br>
<br>
<a href="http://launchpad.net/taskflow/+milestone/0.7.0" target="_blank">http://launchpad.net/taskflow/<u></u>+milestone/0.7.0</a><br>
<br>
Please report issues through launchpad:<br>
<br>
<a href="http://bugs.launchpad.net/taskflow/" target="_blank">http://bugs.launchpad.net/<u></u>taskflow/</a><br>
<br>
Noteable changes<br>
----------------<br>
<br>
* Using non-deprecated oslo.utils and oslo.serialization imports.<br>
* Added note(s) about publicly consumable types into docs.<br>
* Increase robustness of WBE producer/consumers by supporting and using<br>
the kombu provided feature to retry/ensure on transient/recoverable<br>
failures (such as timeouts).<br>
* Move the jobboard/job bases to a jobboard/base module and<br>
move the persistence base to the parent directory (standardizes how<br>
all pluggable types now have a similiar base module in a similar location,<br>
making the layout of taskflow's codebase easier to understand/follow).<br>
* Add executor statistics, using taskflow.futures executors now provides a<br>
useful feature to know about the following when using these executors.<br>
--------------------------<br>
| Statistic | What it is |<br>
------------------------------<u></u>------------------------------<u></u>-------------<br>
| failures | How many submissions ended up raising exceptions |<br>
| executed | How many submissions were executed (failed or not) |<br>
| runtime | Total runtime of all submissions executed (failed or not) |<br>
| cancelled | How many submissions were cancelled before executing |<br>
------------------------------<u></u>------------------------------<u></u>-------------<br>
* The taskflow logger module does not provide a logging adapter [bug]<br>
* Use monotonic time when/if available for stopwatches (py3.3+ natively<br>
supports this) and other time.time usage (where the usage of time.time only<br>
cares about the duration between two points in time).<br>
* Make all/most usage of type errors follow a similar pattern (exception<br>
cleanup).<br>
<br>
Changes in /homes/harlowja/dev/os/<u></u>taskflow 0.6.1..0.7.0<br>
------------------------------<u></u>-------------------------<br>
<br>
NOTE: Skipping requirement commits...<br>
<br>
19f9674 Abstract out the worker finding from the WBE engine<br>
99b92ae Add and use a nicer kombu message formatter<br>
df6fb03 Remove duplicated 'do' in types documentation<br>
43d70eb Use the class defined constant instead of raw strings<br>
344b3f6 Use kombu socket.timeout alias instead of socket.timeout<br>
d5128cf Stopwatch usage cleanup/tweak<br>
2e43b67 Add note about publicly consumable types<br>
e9226ca Add docstring to wbe proxy to denote not for public use<br>
80888c6 Use monotonic time when/if available<br>
7fe2945 Link WBE docs together better (especially around arguments)<br>
f3a1dcb Emit a warning when no routing keys provided on publish()<br>
802bce9 Center SVG state diagrams<br>
97797ab Use importutils.try_import for optional eventlet imports<br>
84d44fa Shrink the WBE request transition SVG image size<br>
ca82e20 Add a thread bundle helper utility + tests<br>
e417914 Make all/most usage of type errors follow a similar pattern<br>
2f04395 Leave use-cases out of WBE developer documentation<br>
e3e2950 Allow just specifying 'workers' for WBE entrypoint<br>
66fc2df Add comments to runner state machine reaction functions<br>
35745c9 Fix coverage environment<br>
fc9cb88 Use explicit WBE worker object arguments (instead of kwargs)<br>
0672467 WBE documentation tweaks/adjustments<br>
55ad11f Add a WBE request state diagram + explanation<br>
45ef595 Tidy up the WBE cache (now WBE types) module<br>
1469552 Fix leftover/remaining 'oslo.utils' usage<br>
93d73b8 Show the failure discarded (and the future intention)<br>
5773fb0 Use a class provided logger before falling back to module<br>
addc286 Use explicit WBE object arguments (instead of kwargs)<br>
342c59e Fix persistence doc inheritance hierarchy<br>
072210a The gathered runtime is for failures/not failures<br>
410efa7 add clarification re parallel engine<br>
cb27080 Increase robustness of WBE producer/consumers<br>
bb38457 Move implementation(s) to there own sections<br>
f14ee9e Move the jobboard/job bases to a jobboard/base module<br>
ac5345e Have the serial task executor shutdown/restart its executor<br>
426484f Mirror the task executor methods in the retry action<br>
d92c226 Add back a 'eventlet_utils' helper utility module<br>
1ed0f22 Use constants for runner state machine event names<br>
bfc1136 Remove 'SaveOrderTask' and test state in class variables<br>
22eef96 Provide the stopwatch elapsed method a maximum<br>
3968508 Fix unused and conflicting variables<br>
2280f9a Switch to using 'oslo_serialization' vs 'oslo.serialization'<br>
d748db9 Switch to using 'oslo_utils' vs 'oslo.utils'<br>
9c15eff Add executor statistics<br>
bf2f205 Use oslo.utils reflection for class name<br>
9fe99ba Add split time capturing to the stop watch<br>
42a665d Use platform neutral line separator(s)<br>
eb536da Create and use a multiprocessing sync manager subclass<br>
4c756ef Use a single sender<br>
778e210 Include the 'old_state' in all currently provided listeners<br>
c07a96b Update the README.rst with accurate requirements<br>
2f7d86a Include docstrings for parallel engine types/strings supported<br>
0d602a8 The taskflow logger module does not provide a logging adapter<br>
96e6d97 Send in the prior atom state on notification of a state change<br>
a588e48 Pass a string as executor in the example instead of an executor<br>
a18a939 Fix for job consumption example using wrong object<br>
1d84fdd Add edge labels for engine states<br>
d0edb62 Move the persistence base to the parent directory<br>
84b387f Rework the in-memory backend<br>
<br>
Diffstat (except docs and test files)<br>
------------------------------<u></u>-------<br>
<br>
README.rst | 29 +-<br>
requirements-py2.txt | 4 +-<br>
requirements-py3.txt | 4 +-<br>
setup.cfg | 1 +<br>
taskflow/atom.py | 5 +-<br>
taskflow/engines/action_<u></u>engine/actions/base.py | 42 +<br>
taskflow/engines/action_<u></u>engine/actions/retry.py | 80 +-<br>
taskflow/engines/action_<u></u>engine/actions/task.py | 43 +-<br>
taskflow/engines/action_<u></u>engine/compiler.py | 2 +-<br>
taskflow/engines/action_<u></u>engine/engine.py | 45 +-<br>
taskflow/engines/action_<u></u>engine/executor.py | 60 +-<br>
taskflow/engines/action_<u></u>engine/runner.py | 143 ++-<br>
taskflow/engines/action_<u></u>engine/runtime.py | 5 +-<br>
taskflow/engines/action_<u></u>engine/scheduler.py | 3 +-<br>
taskflow/engines/helpers.py | 4 +-<br>
taskflow/engines/worker_based/<u></u>cache.py | 48 -<br>
taskflow/engines/worker_based/<u></u>dispatcher.py | 57 +-<br>
taskflow/engines/worker_based/<u></u>endpoint.py | 2 +-<br>
taskflow/engines/worker_based/<u></u>engine.py | 9 +-<br>
taskflow/engines/worker_based/<u></u>executor.py | 170 +--<br>
taskflow/engines/worker_based/<u></u>protocol.py | 48 +-<br>
taskflow/engines/worker_based/<u></u>proxy.py | 156 ++-<br>
taskflow/engines/worker_based/<u></u>server.py | 51 +-<br>
taskflow/engines/worker_based/<u></u>types.py | 234 +++++<br>
taskflow/engines/worker_based/<u></u>worker.py | 39 +-<br>
taskflow/examples/alphabet_<u></u>soup.py | 28 +-<br>
taskflow/examples/build_a_car.<u></u>py | 17 +-<br>
taskflow/examples/create_<u></u>parallel_volume.py | 2 +-<br>
taskflow/examples/echo_<u></u>listener.py | 56 +<br>
taskflow/examples/fake_<u></u>billing.py | 8 +-<br>
taskflow/examples/hello_world.<u></u>py | 9 +-<br>
taskflow/examples/parallel_<u></u>table_multiply.py | 4 +-<br>
taskflow/examples/resume_many_<u></u>flows.py | 2 +-<br>
taskflow/examples/resume_vm_<u></u>boot.py | 8 +-<br>
taskflow/examples/simple_<u></u>linear_listening.py | 7 +-<br>
taskflow/examples/wbe_event_<u></u>sender.py | 4 +-<br>
taskflow/examples/wbe_<u></u>mandelbrot.py | 2 +-<br>
taskflow/exceptions.py | 10 +-<br>
taskflow/flow.py | 2 +-<br>
taskflow/jobs/backends/impl_<u></u>zookeeper.py | 64 +-<br>
taskflow/jobs/base.py | 297 ++++++<br>
taskflow/jobs/job.py | 111 --<br>
taskflow/jobs/jobboard.py | 206 ----<br>
taskflow/listeners/base.py | 21 +-<br>
taskflow/listeners/claims.py | 4 +-<br>
taskflow/listeners/logging.py | 60 +-<br>
taskflow/persistence/backends/<u></u>base.py | 126 ---<br>
taskflow/persistence/backends/<u></u>impl_dir.py | 12 +-<br>
taskflow/persistence/backends/<u></u>impl_memory.py | 223 ++--<br>
taskflow/persistence/backends/<u></u>impl_sqlalchemy.py | 16 +-<br>
taskflow/persistence/backends/<u></u>impl_zookeeper.py | 14 +-<br>
taskflow/persistence/backends/<u></u>sqlalchemy/models.py | 6 +-<br>
taskflow/persistence/base.py | 126 +++<br>
taskflow/persistence/logbook.<u></u>py | 66 +-<br>
taskflow/storage.py | 8 +-<br>
taskflow/task.py | 2 +-<br>
taskflow/types/cache.py | 17 +-<br>
taskflow/types/failure.py | 15 +-<br>
taskflow/types/fsm.py | 2 +-<br>
taskflow/types/futures.py | 213 +++-<br>
taskflow/types/graph.py | 3 +-<br>
taskflow/types/latch.py | 15 +-<br>
taskflow/types/notifier.py | 2 +-<br>
taskflow/types/periodic.py | 179 ++++<br>
taskflow/types/table.py | 12 +-<br>
taskflow/types/timing.py | 187 +++-<br>
taskflow/types/tree.py | 4 +-<br>
taskflow/utils/async_utils.py | 11 +-<br>
taskflow/utils/deprecation.py | 2 +-<br>
taskflow/utils/eventlet_utils.<u></u>py | 34 +<br>
taskflow/utils/kazoo_utils.py | 5 +-<br>
taskflow/utils/kombu_utils.py | 73 ++<br>
taskflow/utils/misc.py | 83 +-<br>
taskflow/utils/persistence_<u></u>utils.py | 11 +-<br>
taskflow/utils/threading_<u></u>utils.py | 104 ++<br>
test-requirements.txt | 2 +-<br>
tools/generate_states.sh | 4 +<br>
tools/state_graph.py | 43 +-<br>
tox.ini | 1 +<br>
122 files changed, 4704 insertions(+), 2295 deletions(-)<br>
<br>
Requirements updates<br>
--------------------<br>
<br>
diff --git a/requirements-py2.txt b/requirements-py2.txt<br>
index e142007..083caec 100644<br>
--- a/requirements-py2.txt<br>
+++ b/requirements-py2.txt<br>
@@ -29,2 +29,2 @@ jsonschema>=2.0.0,<3.0.0<br>
-oslo.utils>=1.1.0 # Apache-2.0<br>
-oslo.serialization>=1.0.0 # Apache-2.0<br>
+oslo.utils>=1.2.0 # Apache-2.0<br>
+oslo.serialization>=1.2.0 # Apache-2.0<br>
diff --git a/requirements-py3.txt b/requirements-py3.txt<br>
index d827a17..b04fc0a 100644<br>
--- a/requirements-py3.txt<br>
+++ b/requirements-py3.txt<br>
@@ -23,2 +23,2 @@ jsonschema>=2.0.0,<3.0.0<br>
-oslo.utils>=1.1.0 # Apache-2.0<br>
-oslo.serialization>=1.0.0 # Apache-2.0<br>
+oslo.utils>=1.2.0 # Apache-2.0<br>
+oslo.serialization>=1.2.0 # Apache-2.0<br>
diff --git a/test-requirements.txt b/test-requirements.txt<br>
index 96ab944..293ec5d 100644<br>
--- a/test-requirements.txt<br>
+++ b/test-requirements.txt<br>
@@ -27 +27 @@ kazoo>=1.3.1<br>
-alembic>=0.7.1<br>
+alembic>=0.7.2<br>
<br>
______________________________<u></u>______________________________<u></u>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" target="_blank">OpenStack-dev-request@lists.<u></u>openstack.org?subject:<u></u>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/<u></u>cgi-bin/mailman/listinfo/<u></u>openstack-dev</a><br>
</blockquote></div><br></div></div></div>