The next step is to let ecflow_server know about your suite or to “load” the suite definition file.
This checks the file test.def and describes the suite to the ecflow_server.
This can be done in several ways, depending on how the suite was created.
Text
From within the course directory do the following from the UNIX shell:
ecflow_client --load=test.def
You will have already seen ecflow_client being used in head.h and tail.h include files.
Please ensure you have exported ECF_PORT, alternatively use --port <port_number> on the command line.
Python
import os from ecflow import Defs,Suite,Task,Edit print("Creating suite definition") home = os.path.join(os.getenv("HOME"), "course") defs = Defs( Suite('test', Edit(ECF_HOME=home), Task('t1'))) 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") # To restore the definition from file 'test.def' we can use: # restored_defs = ecflow.Defs("test.def")
If you called “defs.save_as_defs()” the file test.def will be written.
This can be loaded in the server as described earlier. (See Text)
try:
print("Load the in memory definition(defs) into the server")
ci = ecflow.Client()
ci.load(defs) # load the in memory python definition(def) into server
except RuntimeError as e:
print("Failed:",e)
import ecflow try: print("Loading definition in 'test.def' into the server") ci = ecflow.Client() ci.load("test.def") # read definition from disk and load into the server except RuntimeError as e: print("Failed:", e)
If everything is OK, you should have defined a suite in the server.
Have a look in the window running the ecflow_server, and look at the log file
What to do
- Load the definition file. Choose between loading as a text file, or using python API (Update $HOME/course/test.py to write out the definition to disk)
- If using python, examine test.def and create the file client.py.
- Check the log file.
ecflow_client --delete /test
ecflow_client --help replace ecflow_client --replace=/test test.def # e.g. to replace the whole suite ecflow_client --replace=/test/t1 test.def # or just the one task