taskflow 5.8.0__tar.gz → 5.9.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskflow-5.8.0 → taskflow-5.9.1}/.zuul.yaml +10 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/ChangeLog +12 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/PKG-INFO +2 -1
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/jobs.rst +41 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/playbooks/tests/functional/Debian.yaml +1 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/playbooks/tests/functional/RedHat.yaml +1 -0
- taskflow-5.9.1/releasenotes/notes/etcd-jobboard-backend-8a9fea2238fb0f12.yaml +6 -0
- taskflow-5.9.1/releasenotes/notes/fix-revert-all-revert-a0310cd7beaa7409.yaml +6 -0
- taskflow-5.9.1/setup-etcd-env.sh +31 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/setup.cfg +3 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/runtime.py +12 -0
- taskflow-5.9.1/taskflow/jobs/backends/impl_etcd.py +610 -0
- taskflow-5.9.1/taskflow/tests/unit/jobs/test_etcd_job.py +421 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_retries.py +52 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/utils.py +36 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/PKG-INFO +2 -1
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/SOURCES.txt +5 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/entry_points.txt +1 -0
- taskflow-5.9.1/taskflow.egg-info/pbr.json +1 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/requires.txt +3 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/test-requirements.txt +3 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tox.ini +2 -1
- taskflow-5.8.0/taskflow.egg-info/pbr.json +0 -1
- {taskflow-5.8.0 → taskflow-5.9.1}/.coveragerc +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/.mailmap +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/.pre-commit-config.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/.stestr.conf +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/AUTHORS +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/CONTRIBUTING.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/LICENSE +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/README.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/bindep.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/diagrams/area_of_influence.graffle.tgz +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/diagrams/core.graffle.tgz +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/diagrams/jobboard.graffle.tgz +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/diagrams/tasks.graffle.tgz +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/diagrams/worker-engine.graffle.tgz +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/requirements.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/conf.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/index.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/templates/layout.html +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/arguments_and_results.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/atoms.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/conductors.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/engines.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/examples.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/exceptions.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/history.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/area_of_influence.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/conductor.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/conductor_cycle.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/distributed_flow_rpc.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/engine_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/flow_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/job_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/jobboard.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/mandelbrot.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/retry_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/task_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/tasks.png +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/wbe_request_states.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/img/worker-engine.svg +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/index.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/inputs_and_outputs.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/notifications.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/patterns.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/persistence.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/resumption.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/shelf.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/states.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/types.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/utils.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/doc/source/user/workers.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/playbooks/tests/functional/pre.yml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/pylintrc +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/.placeholder +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/add-sentinel-redis-support-9fd16e2a5dd5c0c9.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/bug-2056656-871b67ddbc8cfc92.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/disable-process_executor-python-312-d1074c816bc8303e.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/drop-python-2-7-73d3113c69d724d6.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/fix-endless-loop-on-storage-error-dd4467f0bbc66abf.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/fix-endless-loop-on-storage-failures-b98b30f0c34d25e1.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/fix-storage-failure-handling-5c115d92daa0eb82.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/fix-zookeeper-option-parsing-f9d37fbc39af47f4.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/redis-username-df0eb33869db09a2.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/remove-strict-redis-f2a5a924b314de41.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/sentinel-fallbacks-6fe2ab0d68959cdf.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/sentinel-ssl-399c56ed7067d282.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/sentinel-use-redis-creds-63f58b12ad46a2b5.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/notes/zookeeper-ssl-support-b9abf24a39096b62.yaml +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/2023.1.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/2023.2.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/2024.1.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/_static/.placeholder +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/_templates/.placeholder +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/conf.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/index.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/ocata.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/pike.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/queens.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/rocky.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/stein.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/train.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/unreleased.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/ussuri.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/releasenotes/source/victoria.rst +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/requirements.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/run_tests.sh +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/setup.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/atom.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/backends/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/backends/impl_blocking.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/backends/impl_executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/backends/impl_nonblocking.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/conductors/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/contrib/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/deciders.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/actions/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/actions/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/actions/retry.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/actions/task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/builder.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/compiler.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/completer.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/deciders.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/engine.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/process_executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/scheduler.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/scopes.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/selector.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/action_engine/traversal.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/helpers.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/dispatcher.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/endpoint.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/engine.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/protocol.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/proxy.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/server.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/types.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/engines/worker_based/worker.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/99_bottles.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/alphabet_soup.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/build_a_car.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/buildsystem.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/calculate_in_parallel.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/calculate_linear.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/create_parallel_volume.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/delayed_return.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/distance_calculator.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/dump_memory_backend.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/echo_listener.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/example_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/fake_billing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/graph_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/hello_world.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/jobboard_produce_consume_colors.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/parallel_table_multiply.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/persistence_example.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/pseudo_scoping.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/pseudo_scoping.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_from_backend.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_from_backend.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_many_flows/my_flows.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_many_flows/resume_all.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_many_flows/run_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_many_flows.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_many_flows.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_vm_boot.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/resume_volume_create.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/retry_flow.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/retry_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/reverting_linear.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/reverting_linear.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/run_by_iter.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/run_by_iter.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/run_by_iter_enumerate.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/run_by_iter_enumerate.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/share_engine_thread.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear_listening.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear_listening.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear_pass.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_linear_pass.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/simple_map_reduce.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/switch_graph_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/timing_listener.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/tox_conductor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wbe_event_sender.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wbe_mandelbrot.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wbe_mandelbrot.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wbe_simple_linear.out.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wbe_simple_linear.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/examples/wrapped_exception.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/exceptions.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/formatters.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/jobs/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/jobs/backends/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/jobs/backends/impl_redis.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/jobs/backends/impl_zookeeper.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/jobs/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/capturing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/claims.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/logging.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/printing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/listeners/timing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/logging.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/patterns/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/patterns/graph_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/patterns/linear_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/patterns/unordered_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/impl_dir.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/impl_memory.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/impl_sqlalchemy.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/impl_zookeeper.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/README +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/alembic.ini +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/env.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/script.py.mako +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/0bc3e1a3c135_set_result_meduimtext_type.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/14b227d79a87_add_intention_column.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1c783c0c2875_replace_exception_an.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1cea328f0f65_initial_logbook_deta.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/2ad4984f2864_switch_postgres_to_json_native.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/3162c0f3f8e4_add_revert_results_and_revert_failure_.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/40fc8c914bd2_fix_atomdetails_failure_size.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/589dccdf2b6e_rename_taskdetails_to_atomdetails.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/6df9422fcb43_fix_flowdetails_meta_size.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/84d6e888850_add_task_detail_type.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/README +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/migration.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/backends/sqlalchemy/tables.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/models.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/persistence/path_based.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/retry.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/states.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/storage.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/test.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/fixtures.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/test_examples.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/test_builder.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/test_compile.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/test_creation.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/test_process_executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/action_engine/test_scoping.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/jobs/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/jobs/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/jobs/test_entrypoint.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/jobs/test_redis_job.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/jobs/test_zk_job.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/patterns/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/patterns/test_graph_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/patterns/test_linear_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/patterns/test_unordered_flow.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/base.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/test_dir_persistence.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/test_memory_persistence.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/test_sql_persistence.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/persistence/test_zk_persistence.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_arguments_passing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_check_transition.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_conductors.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_deciders.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_engine_helpers.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_engines.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_exceptions.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_failure.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_flow_dependencies.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_formatters.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_functor_task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_listeners.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_mapfunctor_task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_notifier.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_progress.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_reducefunctor_task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_states.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_storage.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_suspend.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_task.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_types.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils_async_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils_binary.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils_iter_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils_kazoo_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/test_utils_threading_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_creation.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_dispatcher.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_endpoint.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_executor.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_message_pump.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_pipeline.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_protocol.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_proxy.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_server.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_types.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/tests/unit/worker_based/test_worker.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/entity.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/failure.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/graph.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/latch.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/notifier.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/sets.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/timing.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/types/tree.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/__init__.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/async_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/banner.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/eventlet_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/iter_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/kazoo_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/kombu_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/misc.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/persistence_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/redis_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/schema_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/utils/threading_utils.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow/version.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/dependency_links.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/not-zip-safe +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/taskflow.egg-info/top_level.txt +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/clear_zk.sh +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/env_builder.sh +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/pretty_tox.sh +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/schema_generator.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/speed_test.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/state_graph.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/subunit_trace.py +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/test-setup.sh +0 -0
- {taskflow-5.8.0 → taskflow-5.9.1}/tools/update_states.sh +0 -0
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
tox_environment:
|
|
14
14
|
PIFPAF_DAEMON: redis
|
|
15
15
|
|
|
16
|
+
- job:
|
|
17
|
+
name: taskflow-functional-etcd
|
|
18
|
+
parent: taskflow-functional
|
|
19
|
+
vars:
|
|
20
|
+
tox_environment:
|
|
21
|
+
PIFPAF_DAEMON: etcd
|
|
22
|
+
SETUP_ENV_SCRIPT: ./setup-etcd-env.sh
|
|
23
|
+
|
|
16
24
|
- project:
|
|
17
25
|
templates:
|
|
18
26
|
- check-requirements
|
|
@@ -25,6 +33,8 @@
|
|
|
25
33
|
check:
|
|
26
34
|
jobs:
|
|
27
35
|
- taskflow-functional-redis
|
|
36
|
+
- taskflow-functional-etcd
|
|
28
37
|
gate:
|
|
29
38
|
jobs:
|
|
30
39
|
- taskflow-functional-redis
|
|
40
|
+
- taskflow-functional-etcd
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
CHANGES
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
5.9.1
|
|
5
|
+
-----
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
5.9.0
|
|
9
|
+
-----
|
|
10
|
+
|
|
11
|
+
* Follow-up of "Add Etcd backend for jobboard"
|
|
12
|
+
* Add functional test with etcd
|
|
13
|
+
* Add Etcd backend for jobboard
|
|
14
|
+
|
|
4
15
|
5.8.0
|
|
5
16
|
-----
|
|
6
17
|
|
|
7
18
|
* Python3.12: disable process\_executor, which depends on asyncore
|
|
19
|
+
* Fix REVERT\_ALL with Retries in unordered Flows
|
|
8
20
|
* Remove SQLAlchemy tips jobs
|
|
9
21
|
* Remove old excludes
|
|
10
22
|
* Remove assertRaisesRegex
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskflow
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.9.1
|
|
4
4
|
Summary: Taskflow structured state management library.
|
|
5
5
|
Home-page: https://docs.openstack.org/taskflow/latest/
|
|
6
6
|
Author: OpenStack
|
|
@@ -101,6 +101,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
101
101
|
Classifier: Topic :: System :: Distributed Computing
|
|
102
102
|
Requires-Python: >=3.8
|
|
103
103
|
Provides-Extra: database
|
|
104
|
+
Provides-Extra: etcd
|
|
104
105
|
Provides-Extra: eventlet
|
|
105
106
|
Provides-Extra: redis
|
|
106
107
|
Provides-Extra: test
|
|
@@ -288,6 +288,40 @@ optionally expire after a given amount of time).
|
|
|
288
288
|
See :py:class:`~taskflow.jobs.backends.impl_redis.RedisJobBoard`
|
|
289
289
|
for implementation details.
|
|
290
290
|
|
|
291
|
+
Etcd
|
|
292
|
+
----
|
|
293
|
+
|
|
294
|
+
**Board type**: ``'etcd'``
|
|
295
|
+
|
|
296
|
+
Uses `etcd`_ to provide the jobboard capabilities by using Etcd key values data
|
|
297
|
+
structures and individual job ownership key (that can optionally expire after a
|
|
298
|
+
given amount of time).
|
|
299
|
+
|
|
300
|
+
Additional *kwarg* parameters:
|
|
301
|
+
|
|
302
|
+
* ``persistence``: a class that provides a :doc:`persistence <persistence>`
|
|
303
|
+
backend interface; it will be used for loading jobs logbooks for usage at
|
|
304
|
+
runtime or for usage before a job is claimed for introspection.
|
|
305
|
+
|
|
306
|
+
Additional *configuration* parameters:
|
|
307
|
+
|
|
308
|
+
* ``path``: the Etcd path to store job information (*defaults* to
|
|
309
|
+
``jobboard``)
|
|
310
|
+
* ``host``: the Etcd host to connect to (*defaults* to ``localhost``)
|
|
311
|
+
* ``port``: the port of the Etcd server (*defaults* to ``2379``)
|
|
312
|
+
* ``api_path``: the path of the Etcd API endpoint
|
|
313
|
+
* ``protocol``: the protocol used to communicate with the server (*defaults* to
|
|
314
|
+
``http``, choices are ``http`` or ``https``)
|
|
315
|
+
* ``ca_cert``, ``cert_key`` and ``cert_cert``: the certificate information
|
|
316
|
+
passed to Etcd3gw for ``https`` communications
|
|
317
|
+
* ``timeout``: the timeout used when performing operations with Etcd
|
|
318
|
+
* ``ttl``: the default time-to-live when claiming a job (*defaults* to
|
|
319
|
+
``None``)
|
|
320
|
+
|
|
321
|
+
.. note::
|
|
322
|
+
See :py:class:`~taskflow.jobs.backends.impl_etcd.EtcdJobBoard`
|
|
323
|
+
for implementation details.
|
|
324
|
+
|
|
291
325
|
Considerations
|
|
292
326
|
==============
|
|
293
327
|
|
|
@@ -356,6 +390,11 @@ Redis
|
|
|
356
390
|
|
|
357
391
|
.. automodule:: taskflow.jobs.backends.impl_redis
|
|
358
392
|
|
|
393
|
+
Etcd
|
|
394
|
+
----
|
|
395
|
+
|
|
396
|
+
.. automodule:: taskflow.jobs.backends.impl_etcd
|
|
397
|
+
|
|
359
398
|
Hierarchy
|
|
360
399
|
=========
|
|
361
400
|
|
|
@@ -363,6 +402,7 @@ Hierarchy
|
|
|
363
402
|
taskflow.jobs.base
|
|
364
403
|
taskflow.jobs.backends.impl_redis
|
|
365
404
|
taskflow.jobs.backends.impl_zookeeper
|
|
405
|
+
taskflow.jobs.backends.impl_etcd
|
|
366
406
|
:parts: 1
|
|
367
407
|
|
|
368
408
|
.. _paradigm shift: https://wiki.openstack.org/wiki/TaskFlow/Paradigm_shifts#Workflow_ownership_transfer
|
|
@@ -370,3 +410,4 @@ Hierarchy
|
|
|
370
410
|
.. _kazoo: https://kazoo.readthedocs.io/en/latest/
|
|
371
411
|
.. _stevedore: https://docs.openstack.org/stevedore/latest
|
|
372
412
|
.. _redis: https://redis.io/
|
|
413
|
+
.. _etcd: https://etcd.io/
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -eux
|
|
3
|
+
if [ -z "$(which etcd)" ]; then
|
|
4
|
+
ETCD_VERSION=3.3.27
|
|
5
|
+
case `uname -s` in
|
|
6
|
+
Darwin)
|
|
7
|
+
OS=darwin
|
|
8
|
+
SUFFIX=zip
|
|
9
|
+
;;
|
|
10
|
+
Linux)
|
|
11
|
+
OS=linux
|
|
12
|
+
SUFFIX=tar.gz
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
echo "Unsupported OS"
|
|
16
|
+
exit 1
|
|
17
|
+
esac
|
|
18
|
+
case `uname -m` in
|
|
19
|
+
x86_64)
|
|
20
|
+
MACHINE=amd64
|
|
21
|
+
;;
|
|
22
|
+
*)
|
|
23
|
+
echo "Unsupported machine"
|
|
24
|
+
exit 1
|
|
25
|
+
esac
|
|
26
|
+
TARBALL_NAME=etcd-v${ETCD_VERSION}-$OS-$MACHINE
|
|
27
|
+
test ! -d "$TARBALL_NAME" && curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${TARBALL_NAME}.${SUFFIX} | tar xz
|
|
28
|
+
export PATH=$PATH:$TARBALL_NAME
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
$*
|
|
@@ -34,6 +34,7 @@ packages =
|
|
|
34
34
|
taskflow.jobboards =
|
|
35
35
|
zookeeper = taskflow.jobs.backends.impl_zookeeper:ZookeeperJobBoard
|
|
36
36
|
redis = taskflow.jobs.backends.impl_redis:RedisJobBoard
|
|
37
|
+
etcd = taskflow.jobs.backends.impl_etcd:EtcdJobBoard
|
|
37
38
|
taskflow.conductors =
|
|
38
39
|
blocking = taskflow.conductors.backends.impl_blocking:BlockingConductor
|
|
39
40
|
nonblocking = taskflow.conductors.backends.impl_nonblocking:NonBlockingConductor
|
|
@@ -58,6 +59,8 @@ zookeeper =
|
|
|
58
59
|
zake>=0.1.6 # Apache-2.0
|
|
59
60
|
redis =
|
|
60
61
|
redis>=4.0.0 # MIT
|
|
62
|
+
etcd =
|
|
63
|
+
etcd3gw>=2.0.0 # Apache-2.0
|
|
61
64
|
workers =
|
|
62
65
|
kombu>=4.3.0 # BSD
|
|
63
66
|
eventlet =
|
|
@@ -291,6 +291,18 @@ class Runtime(object):
|
|
|
291
291
|
"""Resets all the provided atoms to the given state and intention."""
|
|
292
292
|
tweaked = []
|
|
293
293
|
for atom in atoms:
|
|
294
|
+
cur_intention = self.storage.get_atom_intention(atom.name)
|
|
295
|
+
# Don't trigger a RETRY if the atom needs to be REVERTED.
|
|
296
|
+
# This is a workaround for a bug when REVERT_ALL is applied to
|
|
297
|
+
# unordered flows
|
|
298
|
+
# (https://bugs.launchpad.net/taskflow/+bug/2043808)
|
|
299
|
+
# A subflow may trigger a REVERT_ALL, all the atoms of all the
|
|
300
|
+
# related subflows are marked as REVERT but a task of a related
|
|
301
|
+
# flow may still be running in another thread. If this task
|
|
302
|
+
# triggers a RETRY, it overrides the previously set REVERT status,
|
|
303
|
+
# breaking the revert path of the flow.
|
|
304
|
+
if cur_intention == st.REVERT and intention == st.RETRY:
|
|
305
|
+
continue
|
|
294
306
|
if state or intention:
|
|
295
307
|
tweaked.append((atom, state, intention))
|
|
296
308
|
if state:
|