Source code for cfxdb.mrealm.router_cluster

##############################################################################
#
#                        Crossbar.io Database
#     Copyright (c) Crossbar.io Technologies GmbH. Licensed under MIT.
#
##############################################################################

from typing import Optional, List
import pprint
from uuid import UUID

import numpy as np

from cfxdb.mrealm.cluster import Cluster


[docs]class RouterCluster(Cluster): """ A router cluster is able to run (application) realms, and is hosted on a groups of router workers kept in sync and meshed via router-to-router links. """ def __init__(self, oid: Optional[UUID] = None, label: Optional[str] = None, description: Optional[str] = None, tags: Optional[List[str]] = None, name: Optional[str] = None, status: Optional[int] = None, owner_oid: Optional[UUID] = None, changed: Optional[np.datetime64] = None, _unknown=None): """ :param oid: Object ID of this router cluster. :param label: Optional user label of this router cluster. :param description: Optional user description of this router cluster. :param tags: Optional list of user tags on this router cluster. """ Cluster.__init__(self, oid=oid, label=label, description=description, tags=tags, name=name, status=status, owner_oid=owner_oid, changed=changed) def __eq__(self, other): if not isinstance(other, self.__class__): return False if not Cluster.__eq__(self, other): return False return True def __ne__(self, other): return not self.__eq__(other) def __str__(self): return '\n{}\n'.format(pprint.pformat(self.marshal()))
[docs] def marshal(self): """ Marshal this object to a generic host language object. :return: dict """ obj = Cluster.marshal(self) obj.update({}) return obj
[docs] @staticmethod def parse(data): """ Parse generic host language object into an object of this class. :param data: Generic host language object :type data: dict :return: instance of :class:`ManagementRealm` """ assert type(data) == dict obj = Cluster.parse(data) data = obj._unknown # future attributes (yet unknown) are not only ignored, but passed through! _unknown = {} for k in data: if k not in []: _unknown[k] = data[k] obj = RouterCluster(oid=obj.oid, label=obj.label, description=obj.description, tags=obj.tags, name=obj.name, status=obj.status, owner_oid=obj.owner_oid, changed=obj.changed, _unknown=_unknown) return obj