diff --git a/deploy/crdb.sh b/deploy/crdb.sh index b13c32b6509b7add2c314098f5c10dc21280da5e..e180b2722aa3072bafdd1c7df9ed7b738adf5901 100755 --- a/deploy/crdb.sh +++ b/deploy/crdb.sh @@ -158,9 +158,8 @@ function crdb_drop_databases_single() { echo "Drop TFS databases, if exist" if [[ -z "${GITLAB_CI}" ]]; then - kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o yaml - CRDB_HOST="cockroachdb-0" - #CRDB_HOST=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.clusterIP}') + #kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o yaml + CRDB_HOST=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.clusterIP}') CRDB_PORT=$(kubectl --namespace ${CRDB_NAMESPACE} get service cockroachdb-public -o 'jsonpath={.spec.ports[?(@.name=="sql")].port}') else CRDB_HOST="127.0.0.1" diff --git a/src/common/tests/MockServicerImpl_Context.py b/src/common/tests/MockServicerImpl_Context.py index 03098dae138793958dc2fa2c4ddaebd7ff03c2e5..3d6e038af266cda46a68621dd4c9b135d3916a4d 100644 --- a/src/common/tests/MockServicerImpl_Context.py +++ b/src/common/tests/MockServicerImpl_Context.py @@ -21,9 +21,11 @@ from common.proto.context_pb2 import ( Device, DeviceEvent, DeviceFilter, DeviceId, DeviceIdList, DeviceList, Empty, EventTypeEnum, Link, LinkEvent, LinkId, LinkIdList, LinkList, + OpticalLink, OpticalLinkList, Service, ServiceEvent, ServiceFilter, ServiceId, ServiceIdList, ServiceList, Slice, SliceEvent, SliceFilter, SliceId, SliceIdList, SliceList, - Topology, TopologyDetails, TopologyEvent, TopologyId, TopologyIdList, TopologyList) + Topology, TopologyDetails, TopologyEvent, TopologyId, TopologyIdList, TopologyList +) from common.proto.context_pb2_grpc import ContextServiceServicer from common.proto.policy_pb2 import PolicyRule, PolicyRuleId, PolicyRuleIdList, PolicyRuleList from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string @@ -31,8 +33,10 @@ from common.tools.object_factory.Device import json_device_id from common.tools.object_factory.Link import json_link_id from .InMemoryObjectDatabase import InMemoryObjectDatabase from .MockMessageBroker import ( - TOPIC_CONNECTION, TOPIC_CONTEXT, TOPIC_DEVICE, TOPIC_LINK, TOPIC_SERVICE, TOPIC_SLICE, TOPIC_TOPOLOGY, TOPIC_POLICY, - MockMessageBroker, notify_event) + TOPIC_CONNECTION, TOPIC_CONTEXT, TOPIC_DEVICE, TOPIC_LINK, + TOPIC_SERVICE, TOPIC_SLICE, TOPIC_TOPOLOGY, TOPIC_POLICY, + MockMessageBroker, notify_event +) LOGGER = logging.getLogger(__name__) @@ -579,6 +583,7 @@ class MockServicerImpl_Context(ContextServiceServicer): LOGGER.debug('[SelectService] reply={:s}'.format(grpc_message_to_json_string(reply))) return reply + # ----- Connection ------------------------------------------------------------------------------------------------- def ListConnectionIds(self, request : ServiceId, context : grpc.ServicerContext) -> ConnectionIdList: @@ -628,6 +633,9 @@ class MockServicerImpl_Context(ContextServiceServicer): LOGGER.debug('[GetConnectionEvents] request={:s}'.format(grpc_message_to_json_string(request))) for message in self.msg_broker.consume({TOPIC_CONNECTION}): yield ConnectionEvent(**json.loads(message.content)) + + # ----- Policy Rule ------------------------------------------------------------------------------------------------ + def ListPolicyRuleIds(self, request : Empty, context : grpc.ServicerContext): # pylint: disable=unused-argument LOGGER.debug('[ListPolicyRuleIds] request={:s}'.format(grpc_message_to_json_string(request))) reply = PolicyRuleIdList(policyRuleIdList=[ @@ -666,3 +674,71 @@ class MockServicerImpl_Context(ContextServiceServicer): reply = self._del(request, 'policy', policy_uuid, rule_id_field, TOPIC_CONTEXT, context) LOGGER.debug('[RemovePolicyRule] reply={:s}'.format(grpc_message_to_json_string(reply))) return reply + + + # ----- Optical Link ----------------------------------------------------------------------------------------------- + + def GetOpticalLinkList(self, request : Empty, context : grpc.ServicerContext) -> OpticalLinkList: + LOGGER.debug('[GetOpticalLinkList] request={:s}'.format(grpc_message_to_json_string(request))) + reply = OpticalLinkList(optical_links=self.obj_db.get_entries('optical_link')) + LOGGER.debug('[GetOpticalLinkList] reply={:s}'.format(grpc_message_to_json_string(reply))) + return reply + + def GetOpticalLink(self, request : LinkId, context : grpc.ServicerContext) -> OpticalLink: + LOGGER.debug('[GetOpticalLink] request={:s}'.format(grpc_message_to_json_string(request))) + reply = self.obj_db.get_entry('optical_link', request.link_uuid.uuid, context) + LOGGER.debug('[GetOpticalLink] reply={:s}'.format(grpc_message_to_json_string(reply))) + return reply + + def SetOpticalLink(self, request : OpticalLink, context : grpc.ServicerContext) -> Empty: + LOGGER.debug('[SetOpticalLink] request={:s}'.format(grpc_message_to_json_string(request))) + link_uuid = request.link_id.link_uuid.uuid + reply, link = self._set(request, 'optical_link', link_uuid, 'link_id', TOPIC_LINK) + + context_topology_uuids : Set[Tuple[str, str]] = set() + context_topology_uuids.add((DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) + for endpoint_id in link.link_endpoint_ids: + endpoint_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid + if len(endpoint_context_uuid) == 0: endpoint_context_uuid = DEFAULT_CONTEXT_NAME + endpoint_topology_uuid = endpoint_id.topology_id.topology_uuid.uuid + if len(endpoint_topology_uuid) == 0: endpoint_topology_uuid = DEFAULT_TOPOLOGY_NAME + context_topology_uuids.add((endpoint_context_uuid, endpoint_topology_uuid)) + + for context_uuid,topology_uuid in context_topology_uuids: + container_name = 'topology[{:s}]'.format(str(context_uuid)) + topology = self.obj_db.get_entry(container_name, topology_uuid, context) + for _optical_link_id in topology.optical_link_ids: + if _optical_link_id.link_uuid.uuid == link_uuid: break + else: + # link not found, add it + topology.optical_link_ids.add().link_uuid.uuid = link_uuid + + reply = Empty() + LOGGER.debug('[SetOpticalLink] reply={:s}'.format(grpc_message_to_json_string(reply))) + return reply + + def DeleteOpticalLink(self, request : LinkId, context : grpc.ServicerContext) -> Empty: + LOGGER.debug('[DeleteOpticalLink] request={:s}'.format(grpc_message_to_json_string(request))) + link_uuid = request.link_uuid.uuid + optical_link = self.obj_db.get_entry('optical_link', link_uuid, context) + reply = self._del(request, 'optical_link', link_uuid, 'link_id', TOPIC_LINK, context) + + context_topology_uuids : Set[Tuple[str, str]] = set() + context_topology_uuids.add((DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME)) + for endpoint_id in optical_link.link_endpoint_ids: + endpoint_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid + if len(endpoint_context_uuid) == 0: endpoint_context_uuid = DEFAULT_CONTEXT_NAME + endpoint_topology_uuid = endpoint_id.topology_id.topology_uuid.uuid + if len(endpoint_topology_uuid) == 0: endpoint_topology_uuid = DEFAULT_TOPOLOGY_NAME + context_topology_uuids.add((endpoint_context_uuid, endpoint_topology_uuid)) + + for context_uuid,topology_uuid in context_topology_uuids: + container_name = 'topology[{:s}]'.format(str(context_uuid)) + topology = self.obj_db.get_entry(container_name, topology_uuid, context) + for optical_link_id in topology.optical_link_ids: + if optical_link_id.link_uuid.uuid == link_uuid: + topology.optical_link_ids.remove(optical_link_id) + break + + LOGGER.debug('[DeleteOpticalLink] reply={:s}'.format(grpc_message_to_json_string(reply))) + return reply