alter
Description
The CLI command alter enables the manipulation of node attributes in
an ecFlow suite, namely it allows to:
add new node attributes
remove existing node attributes
update some characteristics of existing node attributes
set/clear node flags
sort node attributes
The arguments to the alter command are specified as a sequence of space
separated options:
ecflow_client --alter <operation> <type> <name> <value> <path>
where
<operation>, determines what operation is performed (one ofdelete,change,add,set_flag,clear_flag, orsort)
<type>, specifies which type of attribute is being manipulated (the list of types possible depends on the type of command selected previously)
<name>, is the name of the attribute being manipulated (in the case where the attribute is unnamed, e.g. Repeat, Complete, Trigger, this option should be omitted)
<value>, is the value to be used in the operation (this option is not required for all commands, e.g. when deleting an attribute)
<path> (<path> (...)), one or more paths to the nodes where the operation is to be performed
See more details about each argument in the next section.
Output of --help=alter
The following help text is generated by ecflow_client --help=alter
alter
-----
Alter the node according to the options.
arg1 = [ delete | change | add | set_flag | clear_flag | sort ]
arg2 = For delete:
[ variable | time | today | date | day | cron | event | meter | late | generic |
queue | label | trigger | complete | repeat | limit | inlimit | limit_path |
zombie | aviso | mirror ]
For change:
[ variable | clock_type | clock_gain | clock_date | clock_sync | event | meter |
label | trigger | complete | repeat | limit_max | limit_value | defstatus |
late | time | today | aviso | mirror ]
For add:
[ variable | time | today | date | day | zombie | event | meter | late | limit |
inlimit | label | aviso | mirror ]
For set_flag or clear_flag:
[ force_aborted | user_edit | task_aborted | edit_failed | ecfcmd_failed |
statuscmd_failed | killcmd_failed | no_script | killed | status | late |
message complete | queue_limit | task_waiting | locked | zombie | archived |
restored | threshold | log_error | checkpt_error ]
For sort:
[ event | meter | label | variable| limit | all ]
arg3 = [ <name> | <value> ]
arg4 = <new-value>
arg5 = <path> (<path> (...)) - at least one node path required.
*Important Notes*
* All paths must start with a leading '/' character.
* To update, create or remove server variables use '/' for path.
* When updating unnamed attributes (Repeat, Trigger, Complete, ...) the name/arg3 is not necessary.
* After changing the clock the suite needs to be re-queued for the change to take effect.
* When adding or updating node attributes (e.g. variable, meter, event, label, limits, late)
the name (arg3) and value (arg4) must be quoted.
* When sorting attributes, 'recursive' can be used as the value (arg3).
* When adding a meter, the value (arg4) is expected to be a comma-separated triplet
of numerical values the form "<min>,<max>,<value>" (n.b. no spaces are allowed).
* When adding an event, the non-optional value (arg4) must be either "set" or "clear".
* When adding or updating aviso and mirror attributes, the value (arg4) is expected to be
a quoted list of configuration options. For example:
* for aviso, "--remote_path /s1/f1/t2 --remote_host host --polling 20 --remote_port 3141 --ssl)"
* for mirror, "--listener '{ \"event\": \"mars\", \"request\": { \"class\": "od" } }'
--url http://aviso/ --schema /path/to/schema --polling 60"
* For both aviso and mirror, the special value "reload" forces reloading the configuration.
This is typically useful after updating variables used to configure these kind of attributes.
Usage:
ecflow_client --alter=add variable <variable-name> "value" / # add server variable
ecflow_client --alter=add variable <variable-name> "value" /path/to/node # add node variable
ecflow_client --alter=add time "+00:20" /path/to/node
ecflow_client --alter=add date "01.*.*" /path/to/node
ecflow_client --alter=add day "sunday" /path/to/node
ecflow_client --alter=add label <label-name> "label_value" /path/to/node
ecflow_client --alter=add event <event-name> "set"|"clear" /path/to/node
ecflow_client --alter=add meter <meter-name> "<min>,<max>,value" /path/to/node
ecflow_client --alter=add late "-s 00:01 -a 14:30 -c +00:01" /path/to/node
ecflow_client --alter=add limit mars "100" /path/to/node
ecflow_client --alter=add inlimit /path/to/node/withlimit:limit_name "10" /path/to/node
ecflow_client --alter=add inlimit /path/to/node/withlimit:limit_name "-s 10" /path/to/node
ecflow_client --alter=add inlimit /path/to/node/withlimit:limit_name "-n 10" /path/to/node
# zombie attributes have the following structure:
`zombie_type`:(`client_side_action` | `server_side_action`):`child`:`zombie_life_time`
zombie_type = "user" | "ecf" | "path" | "ecf_pid" | "ecf_passwd" | "ecf_pid_passwd"
client_side_action = "fob" | "fail" | "block"
server_side_action = "adopt" | "delete" | "kill"
child = "init" | "event" | "meter" | "label" | "wait" | "abort" | "complete" | "queue"
zombie_life_time = unsigned integer default: user(300), ecf(3600), path(900) minimum is 60
ecflow_client --alter=add zombie "ecf:fail::" /path/to/node # ask system zombies to fail
ecflow_client --alter=add zombie "user:fail::" /path/to/node # ask user generated zombies to fail
ecflow_client --alter=add zombie "path:fail::" /path/to/node # ask path zombies to fail
ecflow_client --alter=delete variable FRED /path/to/node # delete variable FRED
ecflow_client --alter=delete variable /path/to/node # delete *ALL* variables on the given snode
The client considers, for both user and child commands, the following environment variables:
ECF_HOST <string> [mandatory*]
The main server hostname; default value is 'localhost'
ECF_PORT <int> [mandatory*]
The main server port; default value is '3141'
ECF_SSL <any> [optional*]
Enable secure communication between client and server.
ECF_HOSTFILE <string> [optional]
File that lists alternate hosts to try, if connection to main host fails
ECF_HOSTFILE_POLICY <string> [optional]
The policy ('task' or 'all') to define which commands consider using alternate hosts.
The options marked with (*) must be specified in order for the client to communicate
with the server, either by setting the environment variables or by specifying the
command line options.