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.

  1. Python (version 3.6 or above)
  2. 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:

  1. 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.

  2. 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"
        }
    ]
}