Skip to content
Snippets Groups Projects
ContextModel.py 1.32 KiB
Newer Older
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
import logging
from typing import Dict, List
from common.orm.fields.PrimaryKeyField import PrimaryKeyField
from common.orm.fields.StringField import StringField
from common.orm.model.Model import Model

LOGGER = logging.getLogger(__name__)

class ContextModel(Model):
    pk = PrimaryKeyField()
    context_uuid = StringField(required=True, allow_empty=False)

    def dump_id(self) -> Dict:
        return {'context_uuid': {'uuid': self.context_uuid}}

    def dump_service_ids(self) -> List[Dict]:
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        from .ServiceModel import ServiceModel # pylint: disable=import-outside-toplevel
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        db_service_pks = self.references(ServiceModel)
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        return [ServiceModel(self.database, pk).dump_id() for pk,_ in db_service_pks]
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed

    def dump_topology_ids(self) -> List[Dict]:
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        from .TopologyModel import TopologyModel # pylint: disable=import-outside-toplevel
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        db_topology_pks = self.references(TopologyModel)
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed
        return [TopologyModel(self.database, pk).dump_id() for pk,_ in db_topology_pks]
Lluis Gifre Renom's avatar
Lluis Gifre Renom committed

    def dump(self, include_services=True, include_topologies=True) -> Dict: # pylint: disable=arguments-differ
        result = {'context_id': self.dump_id()}
        if include_services: result['service_ids'] = self.dump_service_ids()
        if include_topologies: result['topology_ids'] = self.dump_topology_ids()
        return result