There are three kinds of variables:
The variables that are used by ecFlow, like ECF_HOME.
- 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 inyour 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 sleep command with a variable
called SLEEP as a parameter.
%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:
# 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
#!/usr/bin/env python2.7
import os
import ecflow
def create_family(name):
f1 = ecflow.Family(name )
f1.add_task("t1").add_variable("SLEEP", 20)
f1.add_task("t2").add_variable("SLEEP", 20)
return f1
print "Creating suite definition"
defs = ecflow.Defs()
suite = defs.add_suite("test")
suite.add_variable("ECF_INCLUDE", os.path.join(os.getenv("HOME"), "course"))
suite.add_variable("ECF_HOME", os.path.join(os.getenv("HOME"), "course"))
suite.add_family( create_family("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
- Watch in ecflowview. You should see the tasks with a status active for 20 second