Source code for ska_tmc_cdm.schemas.mccscontroller.allocate

"""
The schemas.central_node module defines Marshmallow schemas that map
MCCSController AllocateRequest message classes to/from their JSON
representation.
"""
from marshmallow import fields, post_load

from ...messages.mccscontroller.allocate import AllocateRequest
from ...schemas import CODEC
from ..shared import ValidatingSchema

__all__ = ["AllocateRequestSchema"]


[docs]@CODEC.register_mapping(AllocateRequest) class AllocateRequestSchema(ValidatingSchema): """ Marshmallow schema for the MCCSController AllocateRequest class. """ interface = fields.String(required=False) subarray_id = fields.Integer(required=True) subarray_beam_ids = fields.List(fields.Integer, required=True) station_ids = fields.List(fields.List(fields.Integer), required=True) channel_blocks = fields.List(fields.Integer, required=True)
[docs] @post_load def create_allocaterequest(self, data, **_) -> AllocateRequest: """ Convert parsed JSON back into an AllocateRequest object. :param data: Marshmallow-provided dict containing parsed JSON values :param _: kwargs passed by Marshmallow :return: AllocateRequest object populated from data """ interface = data["interface"] subarray_id = data["subarray_id"] subarray_beam_ids = data["subarray_beam_ids"] station_ids = data["station_ids"] channel_blocks = data["channel_blocks"] return AllocateRequest( interface=interface, subarray_id=subarray_id, subarray_beam_ids=subarray_beam_ids, station_ids=station_ids, channel_blocks=channel_blocks, )