Skip to main content

Device Operations Models

Pydantic models for device operation job dispatch and status tracking in Strata Cloud Manager.

Overview

The Device Operations models handle validation and serialization for asynchronous device jobs. These models cover:

  • Device serial number validation for job dispatch
  • Job creation responses with job identifiers
  • Job status tracking with progress and state information
  • Per-device results with command execution details

Request Models

DeviceOperationsRequestModel

FieldTypeRequiredDescription
devicesList[str]Yes1-5 device serial numbers (14-15 digits each)

Validation Rules:

  • Minimum 1 device, maximum 5 devices
  • Each serial number must match pattern ^\d{14,15}$

Response Models

JobCreatedModel

FieldTypeRequiredDescription
job_idstrYesUnique identifier for the created job

DeviceJobStatusModel

FieldTypeRequiredDescription
jobIdstrYesUnique identifier for the job
progressintYesJob completion percentage (0-100)
statestrYesCurrent state: pending, in_progress, complete, failed
requestDeviceJobRequestModelYesOriginal request details
resultsList[DeviceJobResultModel]NoResults from each device

DeviceJobResultModel

FieldTypeRequiredDescription
devicestrYesDevice serial number
statestrYesJob state for this device
created_tsstrYesJob creation timestamp
updated_tsstrYesLast update timestamp
detailsDeviceJobDetailsModelYesCommand execution results

DeviceJobDetailsModel

FieldTypeRequiredDefaultDescription
msgstrYes-Status message from command execution
resultDict[str, Any]No{}Result data (structure varies by command type)

DeviceJobRequestModel

FieldTypeRequiredDescription
commandstrYesThe command that was executed
devicesList[str]YesDevice serial numbers

Usage Examples

Validating Device Input

from scm.models.operations.device_operations import DeviceOperationsRequestModel
from pydantic import ValidationError

# Valid request
request = DeviceOperationsRequestModel(
devices=["007951000123456", "007951000123457"]
)

# Invalid - too many devices
try:
request = DeviceOperationsRequestModel(
devices=["00795100012345" + str(i) for i in range(6)]
)
except ValidationError as e:
print(f"Validation error: {e}")

Parsing Job Status

from scm.models.operations.device_operations import DeviceJobStatusModel

status = DeviceJobStatusModel(**api_response)
print(f"Job: {status.jobId}")
print(f"Progress: {status.progress}%")
print(f"State: {status.state}")

for result in status.results:
print(f" Device {result.device}: {result.details.msg}")