Add job states in docs + states in python
Change-Id: I25af798974dbfe61e144b15056090084aa8ef6dd
This commit is contained in:
parent
a51785ea20
commit
0eee98d0d4
8
doc/source/img/job_states.svg
Normal file
8
doc/source/img/job_states.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 13 KiB |
@ -194,3 +194,26 @@ already in the ``FAILURE`` state then this is a no-op).
|
|||||||
**RETRYING** - If flow that is associated with the current retry was failed and
|
**RETRYING** - If flow that is associated with the current retry was failed and
|
||||||
reverted, the engine prepares the flow for the next run and transitions the
|
reverted, the engine prepares the flow for the next run and transitions the
|
||||||
retry to the ``RETRYING`` state.
|
retry to the ``RETRYING`` state.
|
||||||
|
|
||||||
|
Jobs
|
||||||
|
====
|
||||||
|
|
||||||
|
.. image:: img/job_states.svg
|
||||||
|
:width: 500px
|
||||||
|
:align: center
|
||||||
|
:alt: Job state transitions
|
||||||
|
|
||||||
|
**UNCLAIMED** - A job (with details about what work is to be completed) has
|
||||||
|
been initially posted (by some posting entity) for work on by some other
|
||||||
|
entity (for example a :doc:`conductor <conductors>`). This can also be a state
|
||||||
|
that is entered when some owning entity has manually abandoned (or
|
||||||
|
lost ownership of) a previously claimed job.
|
||||||
|
|
||||||
|
**CLAIMED** - A job that is *actively* owned by some entity; typically that
|
||||||
|
ownership is tied to jobs persistent data via some ephemeral connection so
|
||||||
|
that the job ownership is lost (typically automatically or after some
|
||||||
|
timeout) if that ephemeral connection is lost.
|
||||||
|
|
||||||
|
**COMPLETE** - The work defined in the job has been finished by its owning
|
||||||
|
entity and the job can no longer be processed (and it *may* be removed at
|
||||||
|
some/any point in the future).
|
||||||
|
@ -53,6 +53,21 @@ SCHEDULING = 'SCHEDULING'
|
|||||||
WAITING = 'WAITING'
|
WAITING = 'WAITING'
|
||||||
ANALYZING = 'ANALYZING'
|
ANALYZING = 'ANALYZING'
|
||||||
|
|
||||||
|
# Job state transitions
|
||||||
|
# See: http://docs.openstack.org/developer/taskflow/states.html
|
||||||
|
|
||||||
|
_ALLOWED_JOB_TRANSITIONS = frozenset((
|
||||||
|
# Job is being claimed.
|
||||||
|
(UNCLAIMED, CLAIMED),
|
||||||
|
|
||||||
|
# Job has been lost (or manually unclaimed/abandoned).
|
||||||
|
(CLAIMED, UNCLAIMED),
|
||||||
|
|
||||||
|
# Job has been finished.
|
||||||
|
(CLAIMED, COMPLETE),
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
# Flow state transitions
|
# Flow state transitions
|
||||||
# See: http://docs.openstack.org/developer/taskflow/states.html
|
# See: http://docs.openstack.org/developer/taskflow/states.html
|
||||||
|
|
||||||
|
@ -34,3 +34,7 @@ $xsltproc $PWD/.diagram-tools/notugly.xsl /tmp/states.svg > $img_dir/retry_state
|
|||||||
echo "---- Updating wbe request state diagram ----"
|
echo "---- Updating wbe request state diagram ----"
|
||||||
python $script_dir/state_graph.py -w -f /tmp/states.svg
|
python $script_dir/state_graph.py -w -f /tmp/states.svg
|
||||||
$xsltproc $PWD/.diagram-tools/notugly.xsl /tmp/states.svg > $img_dir/wbe_request_states.svg
|
$xsltproc $PWD/.diagram-tools/notugly.xsl /tmp/states.svg > $img_dir/wbe_request_states.svg
|
||||||
|
|
||||||
|
echo "---- Updating job state diagram ----"
|
||||||
|
python $script_dir/state_graph.py -j -f /tmp/states.svg
|
||||||
|
$xsltproc $PWD/.diagram-tools/notugly.xsl /tmp/states.svg > $img_dir/job_states.svg
|
||||||
|
@ -71,7 +71,7 @@ def map_color(internal_states, state):
|
|||||||
return 'red'
|
return 'red'
|
||||||
if state == states.REVERTED:
|
if state == states.REVERTED:
|
||||||
return 'darkorange'
|
return 'darkorange'
|
||||||
if state == states.SUCCESS:
|
if state in (states.SUCCESS, states.COMPLETE):
|
||||||
return 'green'
|
return 'green'
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -96,6 +96,10 @@ def main():
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
help="use wbe request transitions",
|
help="use wbe request transitions",
|
||||||
default=False)
|
default=False)
|
||||||
|
parser.add_option("-j", "--jobs", dest="jobs",
|
||||||
|
action='store_true',
|
||||||
|
help="use job transitions",
|
||||||
|
default=False)
|
||||||
parser.add_option("-T", "--format", dest="format",
|
parser.add_option("-T", "--format", dest="format",
|
||||||
help="output in given format",
|
help="output in given format",
|
||||||
default='svg')
|
default='svg')
|
||||||
@ -109,9 +113,10 @@ def main():
|
|||||||
options.retries,
|
options.retries,
|
||||||
options.tasks,
|
options.tasks,
|
||||||
options.wbe_requests,
|
options.wbe_requests,
|
||||||
|
options.jobs,
|
||||||
]
|
]
|
||||||
if sum([int(i) for i in types]) > 1:
|
if sum([int(i) for i in types]) > 1:
|
||||||
parser.error("Only one of task/retry/engines/wbe requests"
|
parser.error("Only one of task/retry/engines/wbe requests/jobs"
|
||||||
" may be specified.")
|
" may be specified.")
|
||||||
|
|
||||||
internal_states = list()
|
internal_states = list()
|
||||||
@ -135,6 +140,10 @@ def main():
|
|||||||
source_type = "WBE requests"
|
source_type = "WBE requests"
|
||||||
source = make_machine(protocol.WAITING,
|
source = make_machine(protocol.WAITING,
|
||||||
list(protocol._ALLOWED_TRANSITIONS), [])
|
list(protocol._ALLOWED_TRANSITIONS), [])
|
||||||
|
elif options.jobs:
|
||||||
|
source_type = "Jobs"
|
||||||
|
source = make_machine(states.UNCLAIMED,
|
||||||
|
list(states._ALLOWED_JOB_TRANSITIONS), [])
|
||||||
else:
|
else:
|
||||||
source_type = "Flow"
|
source_type = "Flow"
|
||||||
source = make_machine(states.PENDING,
|
source = make_machine(states.PENDING,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user