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}")