Step 2: Inspect Job#
A Deep Dive into a Specific Job
by Silvia Mazzoni, DesignSafe, 2025
Using local utilities library
t=OpsUtils.connect_tapis()
-- Checking Tapis token --
Token loaded from file. Token is still valid!
Token expires at: 2025-08-20T22:46:16+00:00
Token expires in: 1:56:42.210230
-- LOG IN SUCCESSFUL! --
Set Job ID#
Use the id of a completed job you have already run. You cannot use the id of another user’s job.
jobUuid = '4dfa35e1-15cd-48fd-a090-f348544dee1f-007'
______________________________________________________________________________#
Once you’ve identified a job of interest from your list, the next step is to drill down into its details. Tapis provides several functions for this, depending on how much information you need:
getJob(job_id) — returns the full configuration and metadata.
getJobStatus(job_id) — retrieves only the current status (lightweight polling).
getJobHistory(job_id) — shows a timestamped lifecycle of state changes.
These functions allow you to trace how a job was submitted, how it ran, and how it ended, making them essential for debugging, auditing, and performance tuning.
getJob(job_id)#
Purpose:#
Retrieve all available metadata and configuration for a specific job.
Example:#
job = t.jobs.getJob(jobUuid=jobUuid)
print(job)
_fileInputsSpec: None
_parameterSetModel: None
appId: opensees-mp-s3
appVersion: latest
archiveCorrelationId: 2f7852d4-9c67-470d-aef0-64d1341f1f5f
archiveOnAppError: True
archiveSystemDir: /silvia/tapis-jobs-archive/2025-05-07Z/opensees-mp-s3-latest_2025-05-07T22:13:08-4dfa35e1-15cd-48fd-a090-f348544dee1f-007
archiveSystemId: designsafe.storage.default
archiveTransactionId: ad89111a-222a-4e71-9fd2-4691f15cafed
blockedCount: 0
cmdPrefix: None
condition: NORMAL_COMPLETION
coresPerNode: 48
created: 2025-05-07T22:15:14.785522Z
createdby: silvia
createdbyTenant: designsafe
description: opensees-mp-s3-latest submitted by silvia@designsafe
dtnInputCorrelationId: None
dtnInputTransactionId: None
dtnOutputCorrelationId: None
dtnOutputTransactionId: None
dtnSystemId: None
dtnSystemInputDir: None
dtnSystemOutputDir: None
dynamicExecSystem: False
ended: 2025-05-07T22:20:52.718025Z
execSystemConstraints: None
execSystemExecDir: /scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007
execSystemId: stampede3
execSystemInputDir: /scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007
execSystemLogicalQueue: skx-dev
execSystemOutputDir: /scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007
fileInputs: [{"name": "Input Directory", "notes": "{\"selectionMode\":\"directory\"}", "envKey": "inputDirectory", "optional": false, "sourceUrl": "tapis://designsafe.storage.default/silvia/OpenSees/repos/training-OpenSees-on-DesignSafe/_static/OpenSeesScripts", "targetPath": "inputDirectory", "description": "Input directory that includes the tcl script as well as any other required files. Example input is in tapis://designsafe.storage.community/app_examples/opensees/OpenSeesMP", "autoMountLocal": true, "srcSharedAppCtx": "", "destSharedAppCtx": "wma_prtl"}]
id: 42126
inputCorrelationId: 6a36ee1d-2b05-4380-a221-e27dd8bd66b0
inputTransactionId: 2510a293-a91d-481c-baf3-4f89a9ed998a
isMpi: False
jobType: BATCH
lastMessage: Setting job status to FINISHED.
lastUpdated: 2025-05-07T22:20:52.718025Z
maxMinutes: 100
memoryMB: 192000
mpiCmd: None
name: opensees-mp-s3-latest_2025-05-07T22:13:08
nodeCount: 2
notes: {"icon": "OpenSees", "label": "OpenSeesMP", "helpUrl": "https://www.designsafe-ci.org/user-guide/tools/simulation/#opensees-user-guide", "category": "Simulation", "isInteractive": false, "hideNodeCountAndCoresPerNode": false}
owner: silvia
parameterSet: {"appArgs": [{"arg": "OpenSeesMP", "name": "mainProgram", "notes": "{\"isHidden\":true}", "include": null, "description": null}, {"arg": "Ex1many_end.tcl.Canti2D.Push.mp.tcl", "name": "Main Script", "notes": "{\"inputType\":\"fileInput\"}", "include": null, "description": "The filename only of the OpenSees TCL script to execute. This file should reside in the Input Directory specified. To use with test input, use 'freeFieldEffective.tcl'"}], "logConfig": {"stderrFilename": "tapisjob.out", "stdoutFilename": "tapisjob.out"}, "envVariables": [{"key": "_tapisAppId", "notes": null, "value": "opensees-mp-s3", "include": null, "description": null}, {"key": "_tapisAppVersion", "notes": null, "value": "latest", "include": null, "description": null}, {"key": "_tapisArchiveOnAppError", "notes": null, "value": "true", "include": null, "description": null}, {"key": "_tapisArchiveSystemDir", "notes": null, "value": "/silvia/tapis-jobs-archive/2025-05-07Z/opensees-mp-s3-latest_2025-05-07T22:13:08-4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisArchiveSystemId", "notes": null, "value": "designsafe.storage.default", "include": null, "description": null}, {"key": "_tapisCoresPerNode", "notes": null, "value": "48", "include": null, "description": null}, {"key": "_tapisDynamicExecSystem", "notes": null, "value": "false", "include": null, "description": null}, {"key": "_tapisEffectiveUserId", "notes": null, "value": "silvia", "include": null, "description": null}, {"key": "_tapisExecSystemExecDir", "notes": null, "value": "/scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisExecSystemHPCQueue", "notes": null, "value": "skx-dev", "include": null, "description": null}, {"key": "_tapisExecSystemId", "notes": null, "value": "stampede3", "include": null, "description": null}, {"key": "_tapisExecSystemInputDir", "notes": null, "value": "/scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisExecSystemLogicalQueue", "notes": null, "value": "skx-dev", "include": null, "description": null}, {"key": "_tapisExecSystemOutputDir", "notes": null, "value": "/scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisJobCreateDate", "notes": null, "value": "2025-05-07Z", "include": null, "description": null}, {"key": "_tapisJobCreateTime", "notes": null, "value": "22:15:14.785522177Z", "include": null, "description": null}, {"key": "_tapisJobCreateTimestamp", "notes": null, "value": "2025-05-07T22:15:14.785522177Z", "include": null, "description": null}, {"key": "_tapisJobName", "notes": null, "value": "opensees-mp-s3-latest_2025-05-07T22:13:08", "include": null, "description": null}, {"key": "_tapisJobOwner", "notes": null, "value": "silvia", "include": null, "description": null}, {"key": "_tapisJobUUID", "notes": null, "value": "4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisJobWorkingDir", "notes": null, "value": "/scratch/05072/silvia/tapis/4dfa35e1-15cd-48fd-a090-f348544dee1f-007", "include": null, "description": null}, {"key": "_tapisMaxMinutes", "notes": null, "value": "100", "include": null, "description": null}, {"key": "_tapisMemoryMB", "notes": null, "value": "192000", "include": null, "description": null}, {"key": "_tapisNodes", "notes": null, "value": "2", "include": null, "description": null}, {"key": "_tapisStderrFilename", "notes": null, "value": "tapisjob.out", "include": null, "description": null}, {"key": "_tapisStdoutFilename", "notes": null, "value": "tapisjob.out", "include": null, "description": null}, {"key": "_tapisSysBatchScheduler", "notes": null, "value": "SLURM", "include": null, "description": null}, {"key": "_tapisSysHost", "notes": null, "value": "stampede3.tacc.utexas.edu", "include": null, "description": null}, {"key": "_tapisSysRootDir", "notes": null, "value": "/", "include": null, "description": null}, {"key": "_tapisTenant", "notes": null, "value": "designsafe", "include": null, "description": null}, {"key": "inputDirectory", "notes": "{}", "value": "inputDirectory", "include": true, "description": "EnvKey from input file: Input Directory"}], "archiveFilter": {"excludes": [], "includes": [], "includeLaunchFiles": true}, "containerArgs": [], "schedulerOptions": [{"arg": "--tapis-profile OpenSees_default", "name": "OpenSees TACC Scheduler Profile", "notes": "{\"isHidden\":true}", "include": null, "description": "Scheduler profile for the default version of OpenSees"}, {"arg": "-A DS-HPC1", "name": "TACC Allocation", "notes": null, "include": null, "description": "The TACC allocation associated with this job execution"}]}
remoteChecksFailed: 0
remoteChecksSuccess: 4
remoteEnded: 2025-05-07T22:17:17.601968Z
remoteJobId: 1874224
remoteJobId2: None
remoteLastStatusCheck: 2025-05-07T22:17:17.595078Z
remoteOutcome: FINISHED
remoteQueue: None
remoteResultInfo: 0:0
remoteStarted: 2025-05-07T22:16:51.791782Z
remoteSubmitRetries: 0
remoteSubmitted: 2025-05-07T22:16:49.606851Z
sharedAppCtx: wma_prtl
sharedAppCtxAttribs: ['SAC_EXEC_SYSTEM_ID', 'SAC_EXEC_SYSTEM_INPUT_DIR', 'SAC_EXEC_SYSTEM_EXEC_DIR', 'SAC_EXEC_SYSTEM_OUTPUT_DIR']
stageAppCorrelationId: b616a64e-a8f6-4a65-9ed0-cb3e29a58869
stageAppTransactionId: 0e2ea3d8-1093-42f0-b8d9-7a3c9d185b33
status: FINISHED
subscriptions: [{"enabled": true, "ttlMinutes": 10080, "description": "Portal job status notification", "deliveryTargets": [{"deliveryMethod": "WEBHOOK", "deliveryAddress": "https://www.designsafe-ci.org/webhooks/jobs/"}], "eventCategoryFilter": "JOB_NEW_STATUS"}]
tags: ['portalName: DESIGNSAFE']
tapisQueue: tapis.jobq.submit.DefaultQueue
tenant: designsafe
trackingId: portals.tjpzgzipxddro0y9h1f8iqna904lyphy
uuid: 4dfa35e1-15cd-48fd-a090-f348544dee1f-007
visible: True
Returns full configuration, including:
Job metadata
App parameters
Execution system
Archive system
Resource usage (nodes, memory, cores)
⚠️ Note: Not every job will include every field — for example,
startTime,endTime, orchildJobsmight benullif the job hasn’t started or isn’t part of a workflow.
Common Queryable Fields#
These fields can be accessed from job objects returned by listJobs():
Field |
Description |
|---|---|
id |
Unique job ID |
owner |
Username of the job submitter |
tenant |
Tapis tenant the job belongs to |
appId |
ID of the application the job is based on |
status |
Current job status (e.g., PENDING, RUNNING, FINISHED, FAILED) |
created |
Timestamp when job was created |
lastUpdated |
Timestamp when job was last modified |
archiveSystemId |
ID of the system where job output is archived |
archivePath |
Path to archived output |
execSystemId |
Execution system used to run the job |
ownerString |
Same as owner, often used in filters |
parameterSet |
Parameters passed to the job |
uuid |
Universally unique identifier |
parentUuid |
UUID of a parent job (for child/sub-jobs) |
tags |
List of user-defined tags on the job |
Job Status Values (for Filtering)#
Common values you can use for the status field:
PENDING
STAGING_INPUTS
RUNNING
FINISHED
FAILED
CANCELLED
PAUSED
BLOCKED
You can filter jobs by status like:
getJobStatus(job_id)#
Purpose:#
Get the current status only.
Example:#
status = t.jobs.getJobStatus(jobUuid=jobUuid)
print(status)
condition: NORMAL_COMPLETION
status: FINISHED
Lightweight — ideal for polling loops.
getJobHistory(job_id)#
Purpose:#
Retrieve a timestamped history of job status changes.
Example:#
history = t.jobs.getJobHistory(jobUuid=jobUuid)
for event in history:
print(event)
print('--')
created: 2025-05-07T22:15:18.083053Z
description: {"newJobStatus":"PENDING","oldJobStatus":null,"jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: PENDING."}
event: JOB_NEW_STATUS
eventDetail: PENDING
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:15:18.162371Z
description: {"action":"added","numSubscriptions":1,"jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"A change to the job's subscriptions has occurred. 1 subscription(s) created with job submission."}
event: JOB_SUBSCRIPTION
eventDetail: ADDED
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:15:19.129898Z
description: {"newJobStatus":"PROCESSING_INPUTS","oldJobStatus":"PENDING","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: PROCESSING_INPUTS. The previous job status was PENDING."}
event: JOB_NEW_STATUS
eventDetail: PROCESSING_INPUTS
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:15:20.182194Z
description: {"newJobStatus":"STAGING_INPUTS","oldJobStatus":"PROCESSING_INPUTS","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: STAGING_INPUTS. The previous job status was PROCESSING_INPUTS."}
event: JOB_NEW_STATUS
eventDetail: STAGING_INPUTS
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:16:06.546626Z
description: {"transferStatus":"COMPLETED","transactionId":"2510a293-a91d-481c-baf3-4f89a9ed998a","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"A request to stage job input files has been submitted. Files service staging transaction 2510a293-a91d-481c-baf3-4f89a9ed998a in state COMPLETED for job 4dfa35e1-15cd-48fd-a090-f348544dee1f-007 in tenant designsafe."}
event: JOB_INPUT_TRANSACTION_ID
eventDetail: COMPLETED
transferSummary:
completeTransfers: 112
created: 2025-05-07T22:15:20.327744Z
endTime: 2025-05-07T22:16:02.659808Z
errorMessage: None
estimatedTotalBytes: 2859879
startTime: 2025-05-07T22:15:35.461582Z
status: COMPLETED
totalBytesTransferred: 2859879
totalTransfers: 112
uuid: 2510a293-a91d-481c-baf3-4f89a9ed998a
transferTaskUuid: 2510a293-a91d-481c-baf3-4f89a9ed998a
--
created: 2025-05-07T22:16:06.585914Z
description: {"newJobStatus":"STAGING_JOB","oldJobStatus":"STAGING_INPUTS","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: STAGING_JOB. The previous job status was STAGING_INPUTS."}
event: JOB_NEW_STATUS
eventDetail: STAGING_JOB
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:16:48.916378Z
description: {"newJobStatus":"SUBMITTING_JOB","oldJobStatus":"STAGING_JOB","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: SUBMITTING_JOB. The previous job status was STAGING_JOB."}
event: JOB_NEW_STATUS
eventDetail: SUBMITTING_JOB
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:16:49.619544Z
description: {"newJobStatus":"QUEUED","oldJobStatus":"SUBMITTING_JOB","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: QUEUED. The previous job status was SUBMITTING_JOB."}
event: JOB_NEW_STATUS
eventDetail: QUEUED
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:16:51.803666Z
description: {"newJobStatus":"RUNNING","oldJobStatus":"QUEUED","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: RUNNING. The previous job status was QUEUED."}
event: JOB_NEW_STATUS
eventDetail: RUNNING
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:17:17.635728Z
description: {"newJobStatus":"ARCHIVING","oldJobStatus":"RUNNING","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: ARCHIVING. The previous job status was RUNNING."}
event: JOB_NEW_STATUS
eventDetail: ARCHIVING
transferSummary:
transferTaskUuid: None
--
created: 2025-05-07T22:20:49.126545Z
description: {"transferStatus":"COMPLETED","transactionId":"ad89111a-222a-4e71-9fd2-4691f15cafed","jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"A request to archive job output files has been submitted. Files service archiving transaction ad89111a-222a-4e71-9fd2-4691f15cafed in state COMPLETED for job 4dfa35e1-15cd-48fd-a090-f348544dee1f-007 in tenant designsafe."}
event: JOB_ARCHIVE_TRANSACTION_ID
eventDetail: COMPLETED
transferSummary:
completeTransfers: 5069
created: 2025-05-07T22:17:18.895979Z
endTime: 2025-05-07T22:20:21.744321Z
errorMessage: None
estimatedTotalBytes: 150885718
startTime: 2025-05-07T22:17:30.040657Z
status: COMPLETED
totalBytesTransferred: 150885718
totalTransfers: 5069
uuid: ad89111a-222a-4e71-9fd2-4691f15cafed
transferTaskUuid: ad89111a-222a-4e71-9fd2-4691f15cafed
--
created: 2025-05-07T22:20:52.736325Z
description: {"newJobStatus":"FINISHED","oldJobStatus":"ARCHIVING","blockedCount":0,"condition":"NORMAL_COMPLETION","remoteJobId":"1874224","remoteJobId2":null,"remoteOutcome":"FINISHED","remoteResultInfo":"0:0","remoteQueue":null,"remoteSubmitted":"2025-05-07T22:17:17.601968445Z","remoteStarted":null,"remoteEnded":null,"jobName":"opensees-mp-s3-latest_2025-05-07T22:13:08","jobUuid":"4dfa35e1-15cd-48fd-a090-f348544dee1f-007","jobOwner":"silvia","message":"The job has transitioned to a new status: FINISHED. The previous job status was ARCHIVING."}
event: JOB_NEW_STATUS
eventDetail: FINISHED
transferSummary:
transferTaskUuid: None
--
Useful for debugging, auditing, or analyzing runtime progression.
We will look at these commands in more details in this training module.