import logging from typing import Dict from common.orm.fields.EnumeratedField import EnumeratedField from common.orm.fields.ForeignKeyField import ForeignKeyField from common.orm.fields.PrimaryKeyField import PrimaryKeyField from common.orm.fields.StringField import StringField from common.orm.model.Model import Model from .DeviceModel import DeviceModel from .KpiSampleType import ORM_KpiSampleType from .TopologyModel import TopologyModel LOGGER = logging.getLogger(__name__) class EndPointModel(Model): pk = PrimaryKeyField() topology_fk = ForeignKeyField(TopologyModel, required=False) device_fk = ForeignKeyField(DeviceModel) endpoint_uuid = StringField(required=True, allow_empty=False) endpoint_type = StringField() resource_key = StringField(required=True, allow_empty=False) def dump_id(self) -> Dict: device_id = DeviceModel(self.database, self.device_fk).dump_id() result = { 'device_id': device_id, 'endpoint_uuid': {'uuid': self.endpoint_uuid}, } if self.topology_fk is not None: result['topology_id'] = TopologyModel(self.database, self.topology_fk).dump_id() return result def dump(self) -> Dict: return { 'endpoint_id': self.dump_id(), 'endpoint_type': self.endpoint_type, } class EndPointMonitorModel(Model): pk = PrimaryKeyField() endpoint_fk = ForeignKeyField(EndPointModel) resource_key = StringField(required=True, allow_empty=False) kpi_sample_type = EnumeratedField(ORM_KpiSampleType, required=True)