Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/FamiliesAdd+Manual |
---|
|
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/Variable+inheritance |
---|
|
|
|
We already saw that ecFlow has some
variable‘s, like ECF_HOME.
There are three kinds of variables:
The variables that are used by ecFlow, like ECF_HOME., ECF_INCLUDE
The variables that are defined by the user.
They should not start with “ECF”.
It is good practice to name these variables with capital letters.
The variables that are generated by ecFlow, and that you can use in
your jobs, like ECF_DATE which contains the date of the suite.
...
Ecf Script
In the previous example, we have copied the file t1.ecf to the file t2.ecf.
Edit those two files so they call the
unix UNIX sleep command with a
user variable called SLEEP as a parameter.
Code Block |
---|
language | bash |
---|
title | $HOME/course/f1/t1.ecf |
---|
|
%include <head.h>
echo "I will now sleep for %SLEEP% seconds"
sleep %SLEEP%
%include <tail.h> |
Text
Then add the variable to the suite definition:
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
task t1
edit SLEEP 20
task t2
edit SLEEP 20
endfamily
endsuite |
Python
Python
#!/usr/bin/env python2.7
Code Block |
---|
language | py |
---|
title | $HOME/course/test.py |
---|
|
import os
from ecflow import |
ecflowDefs,Suite,Family,Task,Edit
def create_family_f1( |
namef1 =ecflow.name )f1.add_task).add_variable("SLEEP", 20)
f1.add_task).add_variable("SLEEP", 20)
return f1
print ,Edit(SLEEP=20)))
print("Creating suite definition" |
defs = ecflow.Defs(suitedefs.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") )
print defs_f1()))
print(defs)
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
- 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 ecflowview ecflow_ui . You should see the tasks with a status active for 20 second. Look at the job output.
Horizontal Navigation Bar |
---|
Button Group |
---|
Button Hyperlink |
---|
title | Previous |
---|
type | standard |
---|
url | https://softwareconfluence.ecmwf.int/wiki/display/ECFLOW/FamiliesAdd+Manual |
---|
|
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/Variable+inheritance |
---|
|
|
|
...