Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/ecFlow+variables |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Going+Further |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Add+Trigger |
---|
|
|
|
In the previous chapter, we saw how to define a
variable for a
task.
When all the tasks of the same
family share the same variable value,
the value could be defined at the family level.
In the examples below the
variable could have been defined at the
level of the
suite, achieving the same results.
Variables are inherited from the parent node.
If a variable is redefined lower in the tree, it is said to be overridden.
In this case, the new definition is the one being used.
It is possible to override the generated variables.
This is not recommended and you should understand all the consequences
if you decide to do so.
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
Python
#!/usr/bin/env python2.7
Code Block |
---|
language | py |
---|
title | $HOME/course/test.py |
---|
|
importfrom ecflow import Defs,Suite,Family,Task,Edit
def create_family_f1( |
namef1 =ecflow.name )
f1.add_variable("SLEEP", 20)
f1.add_taskf1.add_task("t2")
returnf1
("Creating suite definition" |
defs = ecflow.Defs(suite defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"), |
)
suite.add_variable("ECF_HOME",
defs = Defs(
Suite("test",
|
os.path.join(os.getenv("HOME"), "course"))
suite.add_family(Edit(ECF_INCLUDE=home,ECF_HOME=home),
create_family_f1( |
"f1" defs ("Checking job creation: .ecf -> .job0") |
(defs.check_job_creation())
print |
("Saving definition to file 'test.def'")
defs.save_as_defs("test.def") |
Quiz
Let us have a quiz. Consider the following suite:
Code Block |
---|
suite test
edit SLEEP 100
family f1
edit SLEEP 80
task t1
task t2
edit SLEEP 9
family g1
edit SLEEP 89
task x1
edit SLEEP 10
task x2
endfamily
endfamily
family f2
task t1
task t2
edit SLEEP 77
family g2
task x1
edit SLEEP 12
task x2
endfamily
endfamily
endsuite |
Here is the value for SLEEP for the above suite. Make sure you understand this.
| |
---|
/test/f1/t1 | 80 |
/test/f1/t2 | 9 |
/test/f1/g1/x1 | 10 |
/test/f1/g1/x2 | 89 |
/test/f2/t1 | 100 |
/test/f2/t2 | 77 |
/test/f2/g2/x1 | 12 |
/test/f2/g2/x2 | 100 |
What to do
- Do the modifications
- Replace the suite
python: python3 test.py
python3 client.py
text: ecflow_client --suspend=/test; ecflow_client --replace=/test test.def - Watch in ecflow_ui .
Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/ecFlow+variables |
---|
|
Button Hyperlink |
---|
title | Up |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Going+Further |
---|
|
Button Hyperlink |
---|
title | Next |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/Add+Trigger |
---|
|
|
|
...