from datetime import datetime, timezone
from pydantic import AwareDatetime, Field
from ska_oso_pdm._shared import (
ExecutionBlockID,
Metadata,
PdmObject,
PythonArguments,
SBDefinitionID,
SBInstanceID,
TelescopeType,
)
[docs]
class ErrorWrapper(PdmObject):
detail: str | None = None
stacktrace: str | None = None
[docs]
class ResponseWrapper(PdmObject):
result: str | None = None
[docs]
class RequestResponse(PdmObject):
request: str | None = None
request_args: PythonArguments | None = None
status: str | None = None
response: ResponseWrapper | None = None
error: ErrorWrapper | None = None
request_sent_at: AwareDatetime = Field(
default_factory=lambda: datetime.now(timezone.utc)
)
response_received_at: AwareDatetime | None = None
[docs]
class OSOExecutionBlock(PdmObject):
interface: str | None = None
eb_id: ExecutionBlockID | None = None
metadata: Metadata | None = None
telescope: TelescopeType
sbd_ref: SBDefinitionID | None = None
sbd_version: int | None = None
sbi_ref: SBInstanceID | None = None
request_responses: list[RequestResponse] = Field(default_factory=list)