"""
The pdm_transforms module contains code to transform Project Data Model (PDM)
entities to Configuration Data Model (CDM) entities. The pdm_transforms code
is called by observing scripts to convert the PDM Scheduling Block to the
equivalent CDM configurations, which are then sent to TMC devices to control
the telescope.
"""
import logging
from typing import Any, Optional
from ska_oso_pdm import SBDefinition, TelescopeType
from ska_tmc_cdm.messages.central_node.assign_resources import (
AssignResourcesRequest as cdm_AssignResourcesRequest,
)
from ska_tmc_cdm.messages.subarray_node.configure import (
ConfigureRequest as cdm_ConfigureRequest,
)
from .low_wrapper import (
create_low_assign_resources_request,
create_low_configure_requests,
)
from .mid_wrapper import (
create_mid_assign_resources_request,
create_mid_configure_requests,
)
LOG = logging.getLogger(__name__)
FORMAT = "%(asctime)-15s %(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)
# Not every function in this module should be called externally
__all__ = [
"create_cdm_configure_requests_from_scheduling_block",
"create_cdm_assign_resources_request_from_scheduling_block",
]
[docs]
def create_cdm_assign_resources_request_from_scheduling_block(
subarray_id: int,
sbd: SBDefinition,
) -> cdm_AssignResourcesRequest:
"""
Top level function to create an AssignResources command from a Scheduling Block Definition
"""
match sbd.telescope:
case TelescopeType.SKA_MID:
return create_mid_assign_resources_request(subarray_id, sbd)
case TelescopeType.SKA_LOW:
return create_low_assign_resources_request(subarray_id, sbd)
case _:
raise TypeError(f"Unsupported telescope {sbd.telescope}")