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 a small follow up exercise showing user of 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.
Where possible you should give preference to triggers on the definitions, since these are checked on creation, whereas embedded triggers are checked at run time.
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
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 |
---|
|
|
|