Skip to content

Commit 5908fa7

Browse files
authored
Merge pull request #867 from oliver-sanders/command-task-matching
Command task matching
2 parents 0fcfed6 + 33d7f22 commit 5908fa7

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

src/reference/changes.rst

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,77 @@ Cylc 8.6
3636
:cylc-rose: `1.5 <https://github.com/cylc/cylc-rose/blob/master/CHANGES.md>`__
3737
:rose: `2.4 <https://github.com/metomi/rose/blob/master/CHANGES.md>`__
3838
39+
40+
Task Matching
41+
^^^^^^^^^^^^^
42+
43+
Various Cylc commands (e.g. ``cylc trigger``, ``cylc set`` and ``cylc hold``)
44+
allow us to select the tasks we want to operate on using cycle points,
45+
family names or globs, e.g:
46+
47+
.. code-block:: bash
48+
49+
# trigger active tasks in cycle "2000"
50+
cylc trigger workflow//2000
51+
52+
# trigger active tasks in "FAMILY" in cycle "2000"
53+
cylc trigger workflow//2000/FAMILY
54+
55+
# trigger all tasks in cycle "2000" with names starting with "foo"
56+
cylc trigger workflow//2000/foo*
57+
58+
However, prior to 8.6 family names and globs would only match :term:`active tasks <active task>`.
59+
So, if you attempted to hold a family of tasks, Cylc would only hold the
60+
members of the family which were active at the time.
61+
62+
As of Cylc 8.6.0, this restriction has been lifted, so for example, holding a
63+
family will now hold all tasks within the family, irrespective of whether they
64+
are active or not.
65+
66+
.. code-block:: bash
67+
68+
# hold all tasks in "FAMILY" at cycle "2000"
69+
cylc hold workflow//2000/FAMILY
70+
71+
# re-run all tasks in cycle "2000" (in order)
72+
cylc trigger workflow//2000
73+
74+
# mark all tasks beginning with "foo" in cycle "2000" as "succeeded"
75+
cylc set workflow//2000/foo* --out=succeeded
76+
77+
Because Cylc workflows can be infinite, if a cycle includes a "glob" pattern
78+
(e.g. ``*``), this will only match :term:`active cycles <active cycle>`
79+
(any cycle which contains at least one :term:`active task`), e.g:
80+
81+
.. code-block:: bash
82+
83+
# remove the task "foo" from all active cycles of the workflow
84+
cylc remove workflow//*/foo
85+
86+
# release all tasks in "FAMILY" in all active cycles of the workflow
87+
cylc release workflow//*/FAMILY
88+
89+
This (combined with :ref:`changes.8.5.0.triggering_multiple_tasks`)
90+
makes Cylc 7 "reset to waiting" use cases much easier:
91+
92+
.. list-table::
93+
:class: grid-table
94+
95+
* - **Cylc 7**
96+
- **Cylc 8**
97+
* - ::
98+
99+
cylc insert workflow FAMILY.cycle
100+
cylc reset workflow FAMILY.cycle --state=waiting
101+
# Trigger the task(s) that start the FAMILY sub-graph
102+
cylc trigger workflow member1.cycle
103+
- ::
104+
105+
cylc trigger workflow//cycle/FAMILY
106+
107+
For more information on Cylc IDs, run ``cylc help id``.
108+
109+
39110
Supported Python versions
40111
^^^^^^^^^^^^^^^^^^^^^^^^^
41112

@@ -72,6 +143,8 @@ shown in the information view:
72143
:align: center
73144
:width: 65%
74145

146+
.. _changes.8.5.0.triggering_multiple_tasks:
147+
75148
Triggering Multiple Tasks
76149
^^^^^^^^^^^^^^^^^^^^^^^^^
77150

0 commit comments

Comments
 (0)