Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Python

The process of job creation can be checked before the suite definition
is loaded into the ecflow_server. The following checks are done:
When the suite definition is large and has many ecf script this
checking can save a lot of time.

The following points should be noted about about job creation checking:

  • It is independent of the ecflow_server.
    Hence ECF_PORT and ECF_HOST in the job file will have default values.
  • Job files have a .job0 extension, whereas the server will always generate jobs with a extension .job<1-n>, i.e. t1.job1, t1.job2.
    The numbers correspond to ECF_TRYNO which is never zero.
  • By default the job file is created in the same directory as the ecf script. See ECF_JOB

Checking is done using ecflow.Defs.check_job_creation

Update $HOME/course/test.py with:

Code Block
languagepy
title$HOME/course/test.py
#!/usr/bin/env python2.7
import os
import
from ecflow import Defs,Suite,Task,Edit
   
print "Creating suite definition"

defs
home = 
ecflow.Defs() suite = defs.add_suite("test") suite.add_variable("ECF_HOME",
os.path.join(os.getenv("HOME"),  "course")
defs = Defs( 
        Suite('test',
            Edit(ECF_HOME=home)
suite.add_task("t1"
,
            Task('t1')))
print defs

print "Checking job creation: .ecf -> .job0"   
print defs.check_job_creation()

# We can assert, so that we only progress
,
 once
all
 job creation works
# assert len(defs.check_job_creation()) == 0, "Job generation failed
"  


Note
It is highly advisable that job creation checking is enabled for all subsequent examples.

What to do

  1. Add job creation checking to $HOME/course/test.py
  2. Examine the job file $HOME/course/test/t1.job0

...