Currently, the ecflow python api API provides quite extensive functionality.
However sometimes we just want to query simple state on the command line, and using the full-blown python apiAPI, can seem like an overkill.
Query can be used in these simple cases
Query the status of attributes i.e. state, dstate, repeat,event, meter, variable, limit , limit_max or trigger expression without blocking
- state return [unknown | complete | queued | aborted | submitted | active] to standard out
- dstate return [unknown | complete | queued | aborted | submitted | active | suspended] to standard out
- repeat returns current value as a string to standard out, can also retrieve the next and previous value of the repeat. See examples below
The next/prev will always stay within repeat bounds. hence calling 'next' on the last value of the repeat, will return last value.
Likewise calling 'prev' on a repeat that has not started, will return the first/start value. - event event return 'set' | 'clear' to standard out
- meter return meter return value of the meter to standard out
- limit return the current value of the limit
- limit_max return the maximum value of the limit
- label return new value otherwise the old value
- variable return value of the variable, repeat or generated variable to standard out, will search up the node tree
- trigger trigger returns 'true' if the expression is true, otherwise 'false'\n\n"
If this command is called within a '.ecf' script we will additionally log the task calling this command
...
The command will fail if the node path to the attribute does not exist in the definition and if:
- repeat The repeat is not found
- event The event The event is not found
- meter The meter is not found
- limit/limit_max The limit is not found
- label The label meter The meter is not found\
- variable No No user or generated variable or repeat of that name found on node, or any of its parents
- trigger Trigger trigger Trigger does not parse, or reference to nodes/attributes in the expression are not valid\n"
Arguments:
- arg1 = [ state | event | meter | label | variable | trigger | limit | limit_max ]
- arg2 = <path> | <path>:name where name is name of a event, meter,limit or variable
- arg3 = trigger expression (optional) | prev | next # prev,next only used when arg1 is repeat
Usage:
- state=$(ecflow_client --query state /path/to/node node) # return node state to standard out
- dstate=$(ecflow_client --query dstate /path/to/node node) # state that can includes suspended
value=$(ecflow_client --query repeat /path/to/node )
# state that can includes suspended# return the current value as a string
value=$(ecflow_client --query repeat /path/to/node prev ) # return the previous value as a string, does not modify real repeat
value=$(ecflow_client --query repeat /path/to/node next) # return the next value as a string, does not modify real repeat
- event=$(ecflow_client --query event /path/to/task/with/event:event_name name) # return set | clear to standard out
- meter=$(ecflow_client --query meter /path/to/task/with/meter:meter_name # name) # returns the current value of the meter to standard out
- value=$(ecflow_client --query variable /path/to/task/with/var:var_name # returns the variable value to standard out_name ) # returns the variable value to standard out
limit_value=$(ecflow_client --query limit /path/to/task/with/limit:limit_name) # returns the current value of the limit to standard out
limit_max=$(ecflow_client --query limit_max /path/to/task/with/limit:limit_name) # returns the max value of the limit to standard out
- label_value=$(ecflow_client --query label %ECF_NAME%:label_name) # returns the current value of the label to standard out
- value=$(ecflow_client --query trigger /path/to/node/with/trigger \"/suite/task == complete\" ) # return true if expression evaluates false otherwise
...