Page History
Info | ||
---|---|---|
| ||
The functionality of the script presented in the article is migrated to JS7 - Unix Shell CLI for Workflow Status Operations Users can continue to use the below script, no maintenance is provided. |
Table of Contents |
---|
Introduction
...
- The script is available for Linux and MacOS® using bash shellsshell.
- The script terminates with exit code 0 to signal successful cancellation, with exit code 1 for command line argument errors and with exit code 4 for non-recoverable errors. Exit code 3 signals that no matching orders have been found.
- The script is intended as a baseline example for customization by JS7 users and by SOS within the scope of professional services.
...
The Script requires the jq utility to be available from the operating system.
jq is ships with the MIT license, see https://opensource.org/licenses/MIT.
...
Code Block | ||
---|---|---|
| ||
Usage: cancel-orders.sh [Options] [Switches] Options: --url=<url> | required: JOC Cockpit URL --controller-id=<identifier> | required: Controller ID --user=<account> | required: JOC Cockpit user account --password=<password> | optional: JOC Cockpit password --ca-cert=<path> | optional: path to CA Certificate used for JOC Cockpit login --client-cert=<path> | optional: path to Client Certificate used for login --client-key=<path> | optional: path to Client Key used for login --date-to=<date> | optional: orders scheduled before the given date will be cancelled, default: now --time-zone=<tz> | optional: specifies the time zone for the given date, default: Europe/London<time-zone> see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones --states=<state[,state]> | optional: list of states limiting orders that will be cancelled, default: SCHEDULED PLANNED, PENDING, SCHEDULED, INPROGRESS, RUNNING, SUSPENDED, WAITING, PROMPTING, FAILED, BLOCKED, UNKNOWN --folders=<path[,path]> | optional: list of folders holding workflows for which scheduled orders will be cancelled --workflows=<path[,path]> | optional: list of workflows for which scheduled orders will be cancelled --log-dir=<directory> | optional: path to the directory holding the script's batch log files Switches: -h | --help | displays usage -v | --verbose | displays verbose output -p | --password | asks for password -r | --recursive | specifies folders to be looked up recursively -k | --kill | specifies that tasks of running orders will be killed -t | --sigterm | specifies that tasks of running orders will be sent a SIGTERM signal before SIGKILL --show-logs | shows log output if --log-dir is used --make-dirs | creates directories if they do not exist |
...
--url
- Specifies the URL by which JOC Cockpit is accessible using
<http|https>://<host>:<port>
. - Example: http://centostest-primary.sos:4446
- Example: https://centostest-primary.sos:4443
- Specifies the URL by which JOC Cockpit is accessible using
--controller-id
- Specifies the identification of the Controller that holds related orders.
--user
- Specifies the user account for login to JOC Cockpit. If JS7 - Identity Services are available for Client authentication certificates that are specified with the
--client-cert
and--client-key
options then their common name (CN) attribute has to match the user account. - If a user account is specified then a password can be specified using the
--password
option or interactive keyboard input can be prompted using the-p
switch.
- Specifies the user account for login to JOC Cockpit. If JS7 - Identity Services are available for Client authentication certificates that are specified with the
--password
- Specifies the password used for the account specified with the
--user
option to login to JOC Cockpit. - Consider use of the
-p
switch offering a secure option for interactive keyboard input.
- Specifies the password used for the account specified with the
--cacert
- Specifies the path to a .pem file that holds the Root CA Certificate and optionally Intermediate CA Certificates to verify HTTPS connections to JOC Cockpit.
--client-cert
- Specifies the path to a .pem file that holds the Client Certificate if HTTPS mutual authentication is used..
--client-key
- Specifies the path to a .pem file that holds the Client Privae Key if HTTPS mutual authentication is used..
--date-to
- Specifies the date and time in ISO format to which orders have been scheduled. The default value
now
indicates the current point in time.- An absolute date, for example
2023-10-23T14:00:00
will affect all orders scheduled for execution before that date. - A relative date, for example
--date-to=-1d
(1 day back),--date-to=-2h
(2 hours back),--date-to=-30m
(30 minutes back).
- An absolute date, for example
- Dates and times can be calculated from the
date
command.--date-to="$(TZ=Europe/London date +'%Y-%m-%d')T00:00:00"
specifies orders scheduled for a date before the current day in the Europe/London time zone.--date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')T00:00:00"
specifies orders scheduled for execution before yesterday.
- Specifies the date and time in ISO format to which orders have been scheduled. The default value
--time-zone
- Specifies the time zone to be used for the
--date-to
option. By default the system time zone is used. - The time zone is specified from an identifier as explained by https://en.wikipedia.org/wiki/List_of_tz_database_time_zones, for example
--time-zone=Europe/London
.
- Specifies the time zone to be used for the
--states
- Specifies one or more states - separated by comma - for which orders should be cancelled. By default the
SCHEDULED
state is used. - Valid states are
PLANNED, PENDING, SCHEDULED, INPROGRESS, RUNNING, SUSPENDED, WAITING, PROMPTING, FAILED, BLOCKED, UNKNOWN
. - For example
--states=SCHEDULED,SUSPENDED,FAILED
will cancel orders holding any of the given states.
- Specifies one or more states - separated by comma - for which orders should be cancelled. By default the
--folders
- Specifies one or more JOC Cockpit inventory folders from absolute paths - separated by comma - holding workflows for which orders have been scheduled.
- For example
--folders=/ProductDemo/CyclicExecution,/ProductDemo/ScheduledExecution
will cancel orders scheduled for workflows in the given folders. - If the
--recursive
switch is used then sub-folders will be looked up recursively.
--workflows
- Specifies one or more workflows - separated by comma - for which orders have been scheduled.
- For example
--workflows=/ProductDemo/CyclicExecution/Cyclic-Check,/ProductDemo/ScheduledExecution/Daily-EOD
will consider orders scheduled for theCyclic-Check
andDaily-EOD
workflows from the given folders.
--log-dir
- If a log directory is specified then the script will log information about processing steps to a log file in this directory.
- File names are created according to the pattern:
set_job_resourcecancel-orders.<yyyy>-<MM>-<dd>T<hh>-<mm>-<ss>.log
- For example:
set_job_resourcecancel-orders.2022-03-19T20-50-45.log
Switches
-h | --help
- Displays usage.
-p | --password
- Asks the user for interactive keyboard input of the password used for the account specified with the
--user
option.. - The switch is used for secure interactive input as an alternative to use of the option
--password=<password>
.
- Asks the user for interactive keyboard input of the password used for the account specified with the
-r | --recursive
- Specifies that folders should will be looked up recursively if the
--folders
option is used.
- Specifies that folders should will be looked up recursively if the
-k | --kill
- Specifies that tasks of running orders should will be killed.
- If used without the
--sigterm
switch then orders are immediately killed using a SIGKILL signal corresponding to the command:kill -9
.
-t | --sigterm
- Specifies that a SIGTERM signal will be sent to tasks of running orders if the
--kill
switch is used. - The switch allows shell jobs that implement traps to perform some clean-up and to gracefully terminate before being killed by a SIGKILL signal.
- Specifies that a SIGTERM signal will be sent to tasks of running orders if the
-v | --verbose
- Displays verbose log output.
--show-logs
- Displays the log output created by the script if the
--log-dir
option is used.
- Displays the log output created by the script if the
--make-dirs
- If directories are missing that are indicated with the
--log-dir
option then they will be created.
- If directories are missing that are indicated with the
Exit Codes
0:
cancellation of orders have been successfully cancelledinitiated1
: argument errors3
: no orders found4
: is returned if the JS7 REST Web Service is not reachable or reports errors
...
Code Block | ||||
---|---|---|---|---|
| ||||
./cancel-orders.sh \ --url=http://joc-2-0-primary:7446 \ --user=root \ --password=root \ --controller-id=controller \ --date-to="$(date +'%Y-%m-%d')T00:00:00" # cancels all orders scheduled for a date before begin of the current day # limits cancellation to orders in the SCHEDULED state (default) # implies that the system time zone is used (default) |
Cancel failed and suspended orders to a Daily Plan date two days ago
Code Block | ||||
---|---|---|---|---|
| ||||
./cancel-orders.sh \ --url=https://joc-2-0-primary:7443 \ --cacert=/home/sos/jstest/certs/root-ca.pem \ --user=root \ -p \ --controller-id=controller \ --date-to="$(TZ=Europe/London date --date="1 day ago" +'%Y-%m-%d')T00:00:00" \ --time-zone=Europe/London \ --states=FAILED,SUSPENDED # cancels all orders scheduled for a date before yesterday # establishes the connection to JOC Cockpit by HTTPS and the Root CA Certificate is specified from the path to a .pem file # asks the user for interactive keyboard input of the password used for the account specified # specifies the date from an individual time zone # limits cancellation to orders in the FAILED orand SUSPENDED state |
Cancel late orders from a list of folders
Code Block | ||||
---|---|---|---|---|
| ||||
./cancel-orders.sh \ --url=http://joc-2-0-primary:7446 \ --user=root \ --password=root \ --controller-id=controller \ --date-to="$(date +'%Y-%m-%d')T00:00:00" \ --folders=/ProductDemo/CyclicExecution,/ProductDemo/ScheduledExecution \ --recursive # cancels late orders scheduled for yesterday's Daily Plan date # limits cancellation to orders scheduled in the SCHEDULED state (default) for workflows from the given folders # looks up sub-folders recursively |
...
Code Block | ||||
---|---|---|---|---|
| ||||
./cancel-orders.sh \ --url=http://joc-2-0-primary:7446 \ --user=root \ --password=root \ --controller-id=controller \ --date-to="$(date +'%Y-%m-%d')T00:00:00" \ --workflows=/ProductDemo/CyclicExecution/Cyclic-Check,/ProductDemo/ScheduledExecution/Daily-EOD # cancels late orders scheduled for yesterday's Daily Plan date # limits cancellation to orders scheduled in the SCHEDULED state (default) for the given list of workflows |
Further Resources
- JS7 - How to clean up the Daily Plan from past Dependencies
- JS7 - How to cancel orders of the daily plan using the REST Web Service API from the Shell
- JS7 - How to delete notices using the REST Web Service API from the Shell
Overview
Content Tools