Deploying Statistica Models
This page guides to deploy Statistica models in TIBCO ModelOps by executing the modelops-client Python script from a Windows Command Prompt.
Contents
Background
Statistica is a Windows-based Statistical and Predictive Analytics / Data Mining software that is used to author Data science and analytic reporting workspaces (i.e. binary files with a .sdm extension). The software is commonly used to provide analytic manufacturing support through SPC and Process-Monitoring specific techniques, including GxP compliant analytic reporting for the pharmaceutical and medical device industries.
TIBCO ModelOps is a Data science model management and operationalization platform that not only serves as a file repository to version control model artifacts but also allows you to configure and deploy data channels, scoring flows, and scoring pipelines to cloud environments.
In the context of TIBCO ModelOps, Statistica workspaces with workflows containing one defined input and one defined output Statistica nodes are referred to as Statistica models. Such models can be deployed, scored, and evaluated in TIBCO ModelOps.
The modelops-client script provides five simple commands.
help version display deploy delete
These commands can be called from a client machine (i.e. say a Statistica model authoring machine).
The help command can be used to learn about the other available commands and their usage.
The version, display, deploy and delete commands communicate with a running instance of TIBCO ModelOps to perform their functionality.
Prerequisites
The following prerequisites must be installed on the machine before executing the modelops-client script from a Command Prompt.
- Python (version 3.6 or above)
- Statistica Engine (version 14.0.0.15)
Note: When you obtain third-party software or services, it is your responsibility to ensure you understand the license terms associated with such third-party software or services and comply with such terms.
Statistica Engine is available as a zip file and can be downloaded using the link provided above. Once downloaded, unzip it to start using the Statistica Engine executable (stat.exe).
Both python and stat executables must be added to the System Path variable and should be available for execution from anywhere on the Command Prompt. Meaning, using the following commands from the Command Prompt should work without any issues showing the versions of the respective programs.
python --version
Python 3.8.6
stat --version
Statistica Engine 14.0.0.15
Note:
-
The deploy command supported by the modelops-client script expects Statistica Engine to be available for automatic Avro schema generation from Statistica models. Model input and output schema in Avro format are required to score models on TIBCO ModelOps server.
-
Commands like version, delete, and display do not require this dependency and work as-is on other OS platforms outside of Windows. But the core functionality to automatically import and deploy Statistica model artifacts in TIBCO ModelOps is provided by the deploy command.
Installing the “requests” module before running modelops-client script
The modelops-client script has a dependency on Python requests module. Verify or automatically fulfill this requirement using the following command.
pip install requests
Note:
If pip does not work then download get-pip.py using curl.
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
If curl is not available, download and install it from here, curl
Then running the following command should get pip installations working on your machine.
py get-pip.py
More detailed instructions on how to install pip are at pip installation
Note: When you obtain third-party software or services, it is your responsibility to ensure you understand the license terms associated with such third-party software or services and comply with such terms.
Executing modelops-client script commands
Copy the modelops-client.py to a convenient location on the client machine and execute the following commands from that location. For example, if the script was copied directly to c drive, open the Command Prompt and change to c:\> before using the following commands.
1. help
python modelops-client.py --help
usage: modelops-client.py [-h] {display,deploy,delete,version} ... Execute Statistica models in TIBCO ModelOps. positional arguments: {display,deploy,delete,version} display Display running data sources and sinks, environments, and currently running jobs deploy Create and deploy the required artifacts for scoring a Statistica model delete Delete a project and its contents or cancel a running job version Display TIBCO ModelOps server version optional arguments: -h, --help show this help message and exit
2. version
python modelops-client.py version --help
usage: modelops-client.py version [-h] [--address ADDRESS] [--password PASSWORD] [--verbose VERBOSE] [--user USER] optional arguments: -h, --help show this help message and exit --address ADDRESS, -a ADDRESS TIBCO ModelOps URL (default http://localhost:2185) --password PASSWORD, -p PASSWORD Password --verbose VERBOSE, -v VERBOSE Verbose logging for diagnostic purposes --user USER, -u USER Username (default=admin)
Example:
python modelops-client.py version \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin
Note: There is a prompt for typing in Password. If you prefer to directly provide the password with the command, use the –password (or -p) parameter. It is advisable to type in your password at the prompt for better security.
Password: Version: 1.2.0 Timestamp: 2021-06-24 10:49:34 UTC Name: TIBCO ModelOps Server Git URL: https://github.com/tibco/ep-modelops.git/modelops-server Git Commit: 0226f42bbd9dafa47622603bb4771633c9d74162
3. display
python modelops-client.py display --help
usage: modelops-client.py display [-h] [--address ADDRESS] [--channel CHANNEL] [--job JOB] [--password PASSWORD] [--verbose VERBOSE] [--user USER] optional arguments: -h, --help show this help message and exit --address ADDRESS, -a ADDRESS TIBCO ModelOps URL (default=http://localhost:2185) --channel CHANNEL, -c CHANNEL Data channel name --job JOB, -j JOB Job name --password PASSWORD, -p PASSWORD Password --verbose VERBOSE, -v VERBOSE --user USER, -u USER Username (default=admin)
Example:
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin
Note: Password for the command was provided at the prompt.
Password: Available environments (4): --------------------------- Development Production Testing Data-Channels Running jobs (8): ------------------ python-source kafka-credit-rating-sink Audit-kafka-datasource audit-source iris-kafka-source race-car-kafka-source-4-pipeline-a-thon Audit-kafka-datasink race-car-kafka-sink-4-pipeline-a-thon Data channels (8): ------------------- Name: python-source ID: kafka-datasource-8xsv7 Type: SOURCE Environment: datachannels Name: kafka-credit-rating-sink ID: kafka-datasink-jc456 Type: SINK Environment: datachannels Name: audit-source ID: kafka-datasource-96dnx Type: SOURCE Environment: datachannels Name: Audit-kafka-datasource ID: kafka-datasource-5gbv8 Type: SOURCE Environment: datachannels Name: iris-kafka-source ID: kafka-datasource-24wcc Type: SOURCE Environment: development Name: race-car-kafka-source-4-pipeline-a-thon ID: kafka-datasource-fhmwr Type: SOURCE Environment: production Name: Audit-kafka-datasink ID: kafka-datasink-5hfrx Type: SINK Environment: datachannels Name: race-car-kafka-sink-4-pipeline-a-thon ID: kafka-datasink-fmc7f Type: SINK Environment: production
3.1. Use the –channel or -c argument to retrieve details of a data channel along with its JSON schema
Example 1 (SOURCE):
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --channel "kafka-credit-rating-source"
Note: Password for the command was provided at the prompt.
Password: Data channels (1): ------------------ Name: kafka-credit-rating-source ID: kafka-datasource-7dw5z Type: SOURCE Environment: testing JSON schema: { "additionalProperties": false, "properties": { "Age": { "format": "double", "ordinal": 13, "type": "number" }, "Amount_of_Credit": { "format": "double", "ordinal": 5, "type": "number" }, "Balance_of_Current_Account": { "ordinal": 1, "type": "string" }, "Credit_Rating": { "ordinal": 0, "type": "string" }, "Credit_Rating_EXPECTED": { "ordinal": 18, "type": "string" }, "Duration_of_Credit": { "format": "double", "ordinal": 2, "type": "number" }, "Employed_by_Current_Employer_for": { "ordinal": 7, "type": "string" }, "Further_running_credits": { "ordinal": 14, "type": "string" }, "Gender": { "ordinal": 10, "type": "string" }, "Installment_in_percent_of_Available_Income": { "ordinal": 8, "type": "string" }, "Living_in_Current_Household_for": { "ordinal": 11, "type": "string" }, "Marital_Status": { "ordinal": 9, "type": "string" }, "Most_Valuable_Assets": { "ordinal": 12, "type": "string" }, "Number_of_previous_credits_at_this_bank": { "ordinal": 16, "type": "string" }, "Occupation": { "ordinal": 17, "type": "string" }, "Payment_of_Previous_Credits": { "ordinal": 3, "type": "string" }, "Purpose_of_Credit": { "ordinal": 4, "type": "string" }, "Type_of_Apartment": { "ordinal": 15, "type": "string" }, "Value_of_Savings": { "ordinal": 6, "type": "string" } }, "required": [ "Credit_Rating", "Balance_of_Current_Account", "Duration_of_Credit", "Payment_of_Previous_Credits", "Purpose_of_Credit", "Amount_of_Credit", "Value_of_Savings", "Employed_by_Current_Employer_for", "Installment_in_percent_of_Available_Income", "Marital_Status", "Gender", "Living_in_Current_Household_for", "Most_Valuable_Assets", "Age", "Further_running_credits", "Type_of_Apartment", "Number_of_previous_credits_at_this_bank", "Occupation", "Credit_Rating_EXPECTED" ], "title": "Credit_Rating_Challenger_Input_Schema", "type": "object" }
Example 2 (SINK)
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ --user admin --channel "kafka-credit-rating-sink"
Note: Password for the command was provided at the prompt.
Password: Data channels (1): ------------------ Name: kafka-credit-rating-sink ID: kafka-datasink-jc456 Type: SINK Environment: datachannels JSON schema: { "additionalProperties": false, "properties": { "Boosted_Classification_TreesPred": { "ordinal": 1, "type": "string" }, "Boosted_Classification_TreesRes": { "ordinal": 2, "type": "string" }, "Boosted_Classification_Treesbad": { "format": "double", "ordinal": 3, "type": "number" }, "Boosted_Classification_Treesgood": { "format": "double", "ordinal": 4, "type": "number" }, "Credit_Rating": { "ordinal": 0, "type": "string" } }, "required": [ "Credit_Rating", "Boosted_Classification_TreesPred", "Boosted_Classification_TreesRes", "Boosted_Classification_Treesbad", "Boosted_Classification_Treesgood" ], "title": "Credit_Rating_Challenger_Output_Schema", "type": "object" }
3.2. Use the –job or -j argument and provide a job name to get its current status
Example 1 (source-channel):
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --job "race-car-kafka-source-4-pipeline-a-thon"
Note: Password for the command was provided at the prompt.
Password: Job status: ----------- race-car-kafka-source-4-pipeline-a-thon is RUNNING Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "kafka-datasource-fhmwr", "jobName": "race-car-kafka-source-4-pipeline-a-thon", "specification": "kafka-datasource", "version": "latest", "namespace": "datachannels", "externalNamespaces": [], "durationMinutes": 0, "username": "admin", "additionalData": "{\"jobName\":\"race-car-kafka-source-4-pipeline-a-thon\",\"userName\":\"admin\",\"jobDescription\":\"Race car Kafka source channel to use for pipeline-a-thon projects.\",\"artifactRevisionId\":null,\"arti factCheckOutId\":\"4801c21a4be941d6ae4af0d023d57a5e\",\"artifactName\":\"/kafka-source-race.datachannel\",\"artifactProjectName\":\"kafka-data-channel\",\"artifactAuthor\":\"admin\",\"artifactCreatedOn\":\"2021-06-24 17:24:33.0 18 GMT\",\"artifactUpdatedOn\":\"2021-06-24 17:24:39.758 GMT\",\"deployTime\":\"Thu Jun 24 2021 12:28:36 GMT-0500\"}", "status": "RUNNING", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "kafka-datasource-fhmwr", "status": "RUNNING", "creationTimestamp": "2021-06-24T17:28:37Z", "message": "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0" } ] }
Example 2 (scoring-pipeline):
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --job "I-P-CM-C-O"
Note: Password for the command was provided at the prompt.
Password: Job status: ----------- I-P-CM-C-O is RUNNING Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-rhgq9", "jobName": "I-P-CM-C-O", "specification": "scoringpipeline", "version": "latest", "namespace": "datachannels", "externalNamespaces": [], "durationMinutes": 0, "username": "admin", "additionalData": "{\"jobName\":\"I-P-CM-C-O\",\"userName\":\"admin\",\"jobDescription\":\"\",\"artifactRevisionId\":null,\"artifactCheckOutId\":\"335e5fb39a404aac81747e0ebe104735\",\"artifactName\":\"/i-p-c-cm-o.scoringpipeline \",\"artifactProjectName\":\"Sachin\",\"artifactAuthor\":\"admin\",\"artifactCreatedOn\":\"2021-06-29 11:07:43.238 GMT\",\"artifactUpdatedOn\":\"2021-06-29 11:08:29.497 GMT\",\"deployTime\":\"Tue Jun 29 2021 16:39:35 GMT+0530\"}", "status": "RUNNING", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "scoringpipeline-rhgq9", "status": "RUNNING", "creationTimestamp": "2021-06-29T11:09:36Z", "message": "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0" } ] }
4. deploy
python modelops-client.py deploy --help
usage: modelops-client.py deploy [-h] [--address ADDRESS] [--debug DEBUG] [--duration DURATION] [--environment ENVIRONMENT] [--file FILE] [--password PASSWORD] [--project PROJECT] [--save SAVE] [--source SOURCE] [--sink SINK] [--verbose VERBOSE] [--user USER] optional arguments: -h, --help show this help message and exit --address ADDRESS, -a ADDRESS TIBCO ModelOps URL (default=http://localhost:2185) --debug DEBUG, -d DEBUG Flag to enable debug diagnostics --duration DURATION, -r DURATION Duration (minutes) to run the scoring pipeline (default=0 to run forever) --environment ENVIRONMENT, -e ENVIRONMENT Target environment. Multiple environment names must be comma-separated. (default=Development) --file FILE, -f FILE Model file --password PASSWORD, -p PASSWORD Password --project PROJECT, -n PROJECT User-provided project name --save SAVE, -s SAVE Flag to save or auto-delete the project in TIBCO ModelOps (default=True) --source SOURCE, -i SOURCE Source channel name --sink SINK, -o SINK Sink channel name --verbose VERBOSE, -v VERBOSE Verbose logging for diagnostic purposes --user USER, -u USER Username (default = admin)
4.1. Deploying a Statistica model without the project name parameter
When using the deploy command without a project name, the program creates a time-stamped project folder in TIBCO ModelOps using the provided model file name. For example, if a model file named “credit rating.sdm” was intended to be deployed to TIBCO ModelOps, the program internally creates a project name similar to credit-rating-0123456789. Note the deployment time stamp added at the end of the project name to uniquely identify it.
If a project name argument is provided then the program uses the same name and imports all created model artifacts into it.
Warning: If a project with the same name as provided by the user already exists in TIBCO ModelOps, its contents are automatically updated during the import process.
4.1.1. Example 1
python modelops-client.py deploy \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --environment Development \ --file "C:\ModelOps\credit-rating.sdm" \ --source "kafka-credit-rating-source" \ --sink "kafka-credit-rating-sink" \ --duration 30
Note: Password for the command was provided at the prompt.
Password: Creating temporary model folders... Temp folder path: C:\Users\kgunasek\AppData\Local\Temp\STAT-modelops-client-u7lgqd6p Generating model schemas... Creating scoring flow... Creating scoring pipeline... Creating meta-data file to bind model with schemas, scoring flow and pipeline... Importing model artifacts zip file... Deleting C:\Users\kgunasek\AppData\Local\Temp\STAT-modelops-client-u7lgqd6p Deploying scoring pipeline... In approve scoring pipeline! In checkout scoring pipeline! ----------------------------------------------------------------------------------- Scheduled deployment job name: credit-rating-1625192455-scoring-pipeline-1625192470 ----------------------------------------------------------------------------------- Deploy scoring pipeline response: { "status": 0, "startRow": 0, "endRow": 1, "totalRows": 1, "errorCode": null, "errorMessage": null, "responseMessage": null, "record": [ { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-6pw2d", "externalNamespaces": [], "durationMinutes": 0, "status": "PENDING", "trace": false, "tasks": [] } ] }
4.1.2. Check the job status of the scheduled job
After a few seconds run the display command with the scheduled pipeline deployment job name returned by the previous deploy command. The pipeline should be in a RUNNING state.
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --job "credit-rating-1625192455-scoring-pipeline-1625192470"
Note: Password for the command was provided at the prompt.
Password: Job status: ----------- credit-rating-1625192455-scoring-pipeline-1625192470 is RUNNING Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-6pw2d", "jobName": "credit-rating-1625192455-scoring-pipeline-1625192470", "specification": "scoringpipeline", "version": "latest", "namespace": "development", "externalNamespaces": [], "durationMinutes": 30, "username": "admin", "additionalData": "{\"jobName\": \"credit-rating-1625192455-scoring-pipeline-1625192470\", \"userName\": \"admin\", \"jobDescription\": \"Scoring pipeline deployed using Statistica integration script.\", \"artifactRevisionId\": nul l, \"artifactCheckOutId\": \"89744a136df345e4b8ba47b0226988dd\", \"artifactName\": \"/credit-rating.scoringpipeline\", \"artifactProjectName\": \"credit-rating-1625192455\", \"artifactAuthor\": \"admin\", \"deployTime\": \"2021-07-02 0 2:21:10.409 GMT\"}", "status": "RUNNING", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "scoringpipeline-6pw2d", "status": "RUNNING", "creationTimestamp": "2021-07-02T02:21:13Z", "message": "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0" } ] }
4.1.3. Example 2
In this example, we provide the project name using the –project argument.
python modelops-client.py deploy \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --environment Development \ --file "C:\ModelOps\credit-rating.sdm" \ --source "kafka-credit-rating-source" \ --sink "kafka-credit-rating-sink" \ --project "credit rating scoring test" \ --duration 30
Note: Password for the command was provided at the prompt.
Password: Creating temporary model folders... Temp folder path: C:\Users\kgunasek\AppData\Local\Temp\STAT-modelops-client-xmp0iol5 Generating model schemas... Creating scoring flow... Creating scoring pipeline... Creating meta-data file to bind model with schemas, scoring flow and pipeline... Importing model artifacts zip file... Deleting C:\Users\kgunasek\AppData\Local\Temp\STAT-modelops-client-xmp0iol5 Deploying scoring pipeline... In approve scoring pipeline! In checkout scoring pipeline! ------------------------------------------------------------------------------------- Scheduled deployment job name: credit rating scoring test-scoring-pipeline-1625194110 ------------------------------------------------------------------------------------- Deploy scoring pipeline response: { "status": 0, "startRow": 0, "endRow": 1, "totalRows": 1, "errorCode": null, "errorMessage": null, "responseMessage": null, "record": [ { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-fd6r7", "externalNamespaces": [], "durationMinutes": 0, "status": "PENDING", "trace": false, "tasks": [] } ] }
4.2 Check the job status of the scheduled job
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --job "credit rating scoring test-scoring-pipeline-625194110"
Note: Password for the command was provided at the prompt.
Password: Job status: ----------- credit rating scoring test-scoring-pipeline-1625194110 is RUNNING Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-fd6r7", "jobName": "credit rating scoring test-scoring-pipeline-1625194110", "specification": "scoringpipeline", "version": "latest", "namespace": "development", "externalNamespaces": [], "durationMinutes": 30, "username": "admin", "additionalData": "{\"jobName\": \"credit rating scoring test-scoring-pipeline-1625194110\", \"userName\": \"admin\", \"jobDescription\": \"Scoring pipeline deployed using Statistica integration script.\", \"artifactRevisionId\": n ull, \"artifactCheckOutId\": \"96e8ee02a82542818b9e570c86d59e54\", \"artifactName\": \"/credit-rating.scoringpipeline\", \"artifactProjectName\": \"credit rating scoring test\", \"artifactAuthor\": \"admin\", \"deployTime\": \"2021-07- 02 02:48:30.655 GMT\"}", "status": "RUNNING", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "scoringpipeline-6pw2d", "status": "RUNNING", "creationTimestamp": "2021-07-02T02:48:33Z", "message": "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0" } ] }
5. delete
python modelops-client.py delete --help
usage: modelops-client.py delete [-h] [--address ADDRESS] [--job JOB] [--password PASSWORD] [--project PROJECT] [--verbose VERBOSE] [--user USER] optional arguments: -h, --help show this help message and exit --address ADDRESS, -a ADDRESS TIBCO ModelOps URL (default http://localhost:2185) --job JOB, -j JOB Running job identifier --password PASSWORD, -p PASSWORD Password --project PROJECT, -n PROJECT Project name --verbose VERBOSE, -v VERBOSE Verbose logging for diagnostic purposes --user USER, -u USER Username (default=admin)
The delete command can be used to either remove a project created on server or delete a running job that was started by you.
python modelops-client.py delete \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --project "credit rating scoring test" \ --job race-car-pipleline-test3
Note: Password for the command was provided at the prompt. If a job name was not provided the program mentions that and also provides a list of running jobs to look at and consider for deletion.
Password: Deleting project [credit rating scoring test] on server... User has permissions to delete job race-car-pipleline-test3 The job id is scoringpipeline-kc45d Job status: ----------- race-car-pipleline-test3 is RUNNING Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-kc45d", "jobName": "race-car-pipleline-test3", "specification": "scoringpipeline", "version": "latest", "namespace": "development", "externalNamespaces": [], "durationMinutes": 0, "username": "admin", "additionalData": "{\"jobName\":\"race-car-pipleline-test3\",\"userName\":\"admin\",\"jobDescription\":\"\",\"artifactRevisionId\":null,\"artifactCheckOutId\":\"79ab474c09804a81a4ce4d95479a69fa\",\"artifactName\":\"/racecar.scoringpipeline\",\"artifactProjectName\":\"admin-racecar\",\"artifactAuthor\":\"admin\",\"artifactCreatedOn\":\"2021-07-02 23:21:37.188 GMT\",\"artifactUpdatedOn\":\"2021-07-02 23:22:19.252 GMT\",\"deployTime\":\"Fri Jul 02 2021 18:23:01 GMT-0500\"}", "status": "RUNNING", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "scoringpipeline-kc45d", "status": "RUNNING", "creationTimestamp": "2021-07-02T23:23:04Z", "message": "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 2, Skipped: 0" } ] }
The immediate job status returned after deleting (i.e. canceling) the job is RUNNING. We can confirm the cancellation status of the job by running the display command after a few seconds.
python modelops-client.py display \ --address https://modelops-server.qamodelops.streamingaz.tibcocloud.com/ \ --user admin \ --job race-car-pipleline-test3
Note: Password for the command was provided at the prompt.
Password: Job status: ----------- race-car-pipleline-test3 - CANCELLED Job Status response: { "@class": "com.tibco.ep.ams.model.response.JobStatusRecord", "jobIdentifier": "scoringpipeline-kc45d", "jobName": "race-car-pipleline-test3", "specification": "scoringpipeline", "version": "latest", "namespace": "development", "externalNamespaces": [], "durationMinutes": 0, "username": "admin", "additionalData": "{\"jobName\":\"race-car-pipleline-test3\",\"userName\":\"admin\",\"jobDescription\":\"\",\"artifactRevisionId\":null,\"artifactCheckOutId\":\"79ab474c09804a81a4ce4d95479a69fa\",\"artifactName\":\"/racecar .scoringpipeline\",\"artifactProjectName\":\"admin-racecar\",\"artifactAuthor\":\"admin\",\"artifactCreatedOn\":\"2021-07-02 23:21:37.188 GMT\",\"artifactUpdatedOn\":\"2021-07-02 23:22:19.252 GMT\",\"deployTime\":\"Fri Jul 02 2021 18:23:01 GMT-0500\"}", "status": "CANCELLED", "trace": true, "tasks": [ { "@class": "com.tibco.ep.ams.model.response.TaskRecord", "taskIdentifier": "scoringpipeline-kc45d", "status": "CANCELLED", "creationTimestamp": "2021-07-02T23:23:04Z", "completionTimestamp": "2021-07-06T16:15:37Z", "message": "Tasks Completed: 3 (Failed: 0, Cancelled 1), Skipped: 0" } ] }