Versions Compared

Key

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

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                The repeat is not found
  • event    The event                  The event is not found
  • meter    meter                 The meter is not found
  • limit/limit_max   The limit is not found
  • label                   The label is not found
  • variable              No variable 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                                                        # node )                                                      # return the current value as a string

  • value=$(ecflow_client --query repeat /path/to/node   prev                  prev  )                                               # return the previous value as a string, does not modify real repeat

  • value=$(ecflow_client --query repeat /path/to/node   next                                            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

...