Source code for cfxdb.mrealm.web_cluster_node_membership

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

import pprint
from typing import Optional
from uuid import UUID

from cfxdb.mrealm.cluster_node_membership import ClusterNodeMembership


[docs] class WebClusterNodeMembership(ClusterNodeMembership): """ Information about memberships of nodes in web clusters. """ def __init__( self, cluster_oid: Optional[UUID] = None, node_oid: Optional[UUID] = None, parallel: Optional[int] = None, standby: Optional[bool] = None, _unknown=None, ): """ :param cluster_oid: Object ID of the cluster the node is member in. :param node_oid: Object ID of the node that is member in the cluster. :param parallel: Default parallel degree per node in this cluster. :param standby: Flag indicating whether this is a (currently inactive) standby node. """ ClusterNodeMembership.__init__(self, cluster_oid=cluster_oid, node_oid=node_oid, _unknown=_unknown)
[docs] self.parallel = parallel
[docs] self.standby = standby
[docs] def __eq__(self, other): if not isinstance(other, self.__class__): return False if not ClusterNodeMembership.__eq__(self, other): return False if other.parallel != self.parallel: return False if other.standby != self.standby: return False return True
[docs] def __ne__(self, other): return not self.__eq__(other)
[docs] def __str__(self): return pprint.pformat(self.marshal())
[docs] def marshal(self): """ Marshal this object to a generic host language object. :return: dict """ obj = ClusterNodeMembership.marshal(self) obj.update( { "parallel": self.parallel, "standby": self.standby, } ) return obj
@staticmethod
[docs] 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:`WebService` """ assert type(data) == dict obj = ClusterNodeMembership.parse(data) data = obj._unknown or {} # future attributes (yet unknown) are not only ignored, but passed through! _unknown = {} for k in data: if k not in ["parallel", "standby"]: _unknown[k] = data[k] parallel = None if "parallel" in data and data["parallel"]: assert type(data["parallel"]) == int parallel = data["parallel"] standby = None if "standby" in data and data["standby"]: assert data["standby"] is None or type(data["standby"]) == bool standby = data["standby"] obj = WebClusterNodeMembership( cluster_oid=obj.cluster_oid, node_oid=obj.node_oid, parallel=parallel, standby=standby, _unknown=_unknown ) return obj