Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://confluence.ecmwf.int/display/ECFLOW/Add+Trigger |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://software.ecmwf.int/wiki/display/ECFLOW/Going+Further |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://confluence.ecmwf.int/display/ECFLOW/Add+an+event |
---|
|
|
|
This is small follow up exercise where we will use embedded triggers.
These are trigger expression embedded within the scripts using the --wait child command.
Whilst the expression is not true, then job will hold
Ecf Script
Add/amend the t2.ecf script
Code Block |
---|
title | $HOME/course/test/f1/t2.ecf |
---|
|
%include <head.h>
ecflow_client --wait="t1 == complete"
%include <tail.h> |
Text
Code Block |
---|
|
# Definition of the suite test.
suite test
edit ECF_INCLUDE "$HOME/course" # replace '$HOME' with the path to your home directory
edit ECF_HOME "$HOME/course"
family f1
edit SLEEP 20
task t1
task t2
endfamily
endsuite |
Python
The trigger expression can be checked, this is especially important when dealing with very large suites and complex triggers.
Code Block |
---|
language | py |
---|
title | $HOME/course/test.py |
---|
|
import os
from ecflow import Defs,Suite,Family,Task,Edit,Trigger
def create_family_f1():
return Family("f1",
Edit(SLEEP=20),
Task("t1"),
Task("t2"))
print("Creating suite definition")
home = os.path.join(os.getenv("HOME"), "course")
defs = Defs(
Suite("test",
Edit(ECF_INCLUDE=home,ECF_HOME=home),
create_family_f1()))
print(defs)
print("check trigger expressions")
check = defs.check()
assert len(check) == 0, check
print("Checking job creation: .ecf -> .job0")
print(defs.check_job_creation())
print("Saving definition to file 'test.def'")
defs.save_as_defs("test.def") |
What to do
- Edit the suite definition file.
- Replace the suite
python: python3 test.py ; python3 client.py
text: ecflow_client --suspend=/test ; ecflow_client --replace=/test test.def - Observe the tasks in ecflow_ui .
- Notice the wait icon on task t2.
Introduce an error in the wait expression and ensure that abort the job
Code Block |
---|
language | bash |
---|
title | Introduce error in wait expression |
---|
|
ecflow_client --wait="txx == complete" # there is no node with name tax, this should abort the task |
Introduce an impossible expression, what is the effect.
Code Block |
---|
ecflow_client --wait="1 == 0" # this expression will never be satisfied. |
Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://confluence.ecmwf.int/display/ECFLOW/Add+Trigger |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://software.ecmwf.int/wiki/display/ECFLOW/Going+Further |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://confluence.ecmwf.int/display/ECFLOW/Add+an+event |
---|
|
|
|