"""
a simple Python representation of the SBD, SBI and EB status history
"""
from typing import Optional
from pydantic import Field
from ska_oso_pdm._shared import ExecutionBlockID, SBDefinitionID, SBInstanceID
from ska_oso_pdm._shared.atoms import TerseStrEnum
from ska_oso_pdm._shared.metadata import Metadata
from ska_oso_pdm._shared.pdm_object import PdmObject
[docs]
class SBDStatus(TerseStrEnum):
DRAFT = "draft"
SUBMITTED = "submitted"
READY = "ready"
INPROGRESS = "in_progress"
OBSERVED = "observed"
SUSPENDED = "suspended"
FAILED_PROCESSING = "failed_processing"
COMPLETE = "complete"
[docs]
class SBIStatus(TerseStrEnum):
CREATED = "created"
EXECUTING = "executing"
OBSERVED = "observed"
FAILED = "failed"
[docs]
class OSOEBStatus(TerseStrEnum):
CREATED = "created"
FULLY_OBSERVED = "fully_observed"
FAILED = "failed"
[docs]
class EntityStatus(PdmObject):
metadata: Metadata = Field(default_factory=Metadata)
[docs]
class SBDStatusHistory(EntityStatus):
sbd_ref: SBDefinitionID
current_status: SBDStatus = SBDStatus.DRAFT
previous_status: Optional[SBDStatus] = SBDStatus.DRAFT
[docs]
class SBIStatusHistory(EntityStatus):
sbi_ref: SBInstanceID
current_status: SBIStatus = SBIStatus.CREATED
previous_status: Optional[SBIStatus] = SBIStatus.CREATED
[docs]
class OSOEBStatusHistory(EntityStatus):
eb_ref: ExecutionBlockID
current_status: OSOEBStatus = OSOEBStatus.CREATED
previous_status: Optional[OSOEBStatus] = OSOEBStatus.CREATED