This document describes the main steps in moving from as SMS system to a suite managed by an ecFlow server. Related documentation for each system can be found here:
Multiple scenarios are available:
the best case is perhaps when starting a new project, with no prior historical constraint nor inherited scripts. A suite designer can choose their preferred language for the suite definition, either python, or using another any language to produce a text definition file such as simple ksh scripting, other scripting languages, an interpreted or a compiled language. The best language is the one you are fluent with, pleased to work with, alone and as a team. Its purpose is to produce an expanded definition file, containing the description of the tasks to run, their time, date and trigger dependencies, their specific configuration (variables). For SMS, the play environment keywords available are (CDP>man -s play):
EOF abort action autocancel automigrate autorestore
clock complete cron date day defstatus
edit endfamily endsuite endtask event extern
family inlimit label late limit meter
owner repeat suite task text time
today trigger
For ecFlow this list is slightly smaller:
autocancel
clock complete cron date day defstatus
edit endfamily endsuite endtask event extern
family inlimit label late limit meter
repeat suite task time
today trigger
Next comes the task wrappers definition. Again, there is no right way to do this. It is simple to design a task whose language is pure python or pure perl. We tend to use use Ksh scripting for task templates for the following reasons:
- trap ERROR 0: to prevent early exit from the script and call the ERROR if exited
- set -e: to raise an error if a command exit status is not 0
- set -u: to prevent undefined variable usage
- set -x: to display each command before execution
- PS4 variable: to allow time stamping and evaluate each lines runtime
- trap: to redirect internal/external signal reception to an ERROR function
Task headers can be used to make common what can be shared among multiple tasks (head.h, tail.h, trap.h, rcp.h, qsub.h).
another migration strategy is a one step migration: this document can be used as a check-list. However, it may not be exhaustive and may be enriched with your contribution, reporting a case not mentioned.
a frequent migration strategy may be to evolve to a situation where it is possible to run a suite under both SMS or ecFlow.
Milestone are: