<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>