Loading manifests/e2e_orchestratorservice.yaml +7 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ spec: ports: - containerPort: 10050 - containerPort: 9192 - containerPort: 8761 - containerPort: 8762 env: - name: LOG_LEVEL value: "INFO" Loading @@ -49,6 +49,10 @@ spec: value: "e2e-orchestratorservice.tfs-e2e.svc.cluster.local" - name: WS_E2E_PORT value: "8762" - name: EXT_CONTROLLER1_ADD value: "10.1.1.96" - name: EXT_CONTROLLER1_PORT value: "8003" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:10050"] Loading Loading @@ -81,5 +85,5 @@ spec: port: 9192 targetPort: 9192 - name: ws port: 8761 targetPort: 8761 port: 8762 targetPort: 8762 manifests/nbiservice.yaml +6 −6 Original line number Diff line number Diff line Loading @@ -38,14 +38,14 @@ spec: - containerPort: 8080 - containerPort: 9090 - containerPort: 9192 - containerPort: 8762 - containerPort: 8761 env: - name: LOG_LEVEL value: "INFO" - name: IETF_NETWORK_RENDERER value: "LIBYANG" - name: WS_E2E_PORT value: "8762" - name: WS_IP_PORT value: "8761" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:9090"] Loading Loading @@ -83,7 +83,7 @@ spec: protocol: TCP port: 9192 targetPort: 9192 - name: ws - name: websocket protocol: TCP port: 8762 targetPort: 8762 port: 8761 targetPort: 8761 manifests/serviceservice.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL value: "INFO" value: "DEBUG" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:3030"] Loading src/e2e_orchestrator/requirements.in +1 −0 Original line number Diff line number Diff line Loading @@ -14,3 +14,4 @@ networkx websockets==12.0 requests==2.27.* src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py +34 −5 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ # limitations under the License. import copy import requests from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.proto.e2eorchestrator_pb2 import E2EOrchestratorRequest, E2EOrchestratorReply from common.proto.context_pb2 import ( Loading @@ -33,7 +34,7 @@ import networkx as nx from threading import Thread from websockets.sync.client import connect from websockets.sync.server import serve from common.Constants import DEFAULT_CONTEXT_NAME from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME LOGGER = logging.getLogger(__name__) Loading Loading @@ -98,7 +99,6 @@ class SubscriptionServer(Thread): def _event_received(self, connection): LOGGER.info("EVENT received!") for message in connection: message_json = json.loads(message) # LOGGER.info("message_json: {}".format(message_json)) Loading Loading @@ -142,7 +142,6 @@ class SubscriptionServer(Thread): connection.send(grpc_message_to_json_string(link)) # Link removal elif 'link_uuid' in message_json: LOGGER.info('REMOVING VIRTUAL LINK') link_id = LinkId(**message_json) service_id = ServiceId() Loading @@ -153,7 +152,6 @@ class SubscriptionServer(Thread): context_client.RemoveLink(link_id) # Topology received else: LOGGER.info('TOPOLOGY') topology_details = TopologyDetails(**message_json) context = Context() Loading Loading @@ -181,10 +179,41 @@ class E2EOrchestratorServiceServicerImpl(E2EOrchestratorServiceServicer): sub_server = SubscriptionServer() sub_server.start() LOGGER.debug("Servicer Created") self.retrieve_external_topologies() except Exception as ex: LOGGER.info("Exception!: {}".format(ex)) def retrieve_external_topologies(self): i = 1 while True: try: LOGGER.info(f'Retrieving external controller #{i}') ADD = str(get_setting(f'EXT_CONTROLLER{i}_ADD')) PORT = str(get_setting(f'EXT_CONTROLLER{i}_PORT')) except Exception as e: break try: url = f'http://{ADD}:{PORT}/tfs-api/context/{DEFAULT_CONTEXT_NAME}/topology_details/{DEFAULT_TOPOLOGY_NAME}' topo = requests.get(url).json() except Exception as e: LOGGER.info(f'Exception retrieven topology from external controler #{i}: {e}') topology_details = TopologyDetails(**topo) context = Context() context.context_id.context_uuid.uuid = topology_details.topology_id.context_id.context_uuid.uuid context_client.SetContext(context) topology = Topology() topology.topology_id.context_id.CopyFrom(context.context_id) topology.topology_id.topology_uuid.uuid = topology_details.topology_id.topology_uuid.uuid context_client.SetTopology(topology) for device in topology_details.devices: context_client.SetDevice(device) for link in topology_details.links: context_client.SetLink(link) i+=1 @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) Loading Loading
manifests/e2e_orchestratorservice.yaml +7 −3 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ spec: ports: - containerPort: 10050 - containerPort: 9192 - containerPort: 8761 - containerPort: 8762 env: - name: LOG_LEVEL value: "INFO" Loading @@ -49,6 +49,10 @@ spec: value: "e2e-orchestratorservice.tfs-e2e.svc.cluster.local" - name: WS_E2E_PORT value: "8762" - name: EXT_CONTROLLER1_ADD value: "10.1.1.96" - name: EXT_CONTROLLER1_PORT value: "8003" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:10050"] Loading Loading @@ -81,5 +85,5 @@ spec: port: 9192 targetPort: 9192 - name: ws port: 8761 targetPort: 8761 port: 8762 targetPort: 8762
manifests/nbiservice.yaml +6 −6 Original line number Diff line number Diff line Loading @@ -38,14 +38,14 @@ spec: - containerPort: 8080 - containerPort: 9090 - containerPort: 9192 - containerPort: 8762 - containerPort: 8761 env: - name: LOG_LEVEL value: "INFO" - name: IETF_NETWORK_RENDERER value: "LIBYANG" - name: WS_E2E_PORT value: "8762" - name: WS_IP_PORT value: "8761" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:9090"] Loading Loading @@ -83,7 +83,7 @@ spec: protocol: TCP port: 9192 targetPort: 9192 - name: ws - name: websocket protocol: TCP port: 8762 targetPort: 8762 port: 8761 targetPort: 8761
manifests/serviceservice.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ spec: - containerPort: 9192 env: - name: LOG_LEVEL value: "INFO" value: "DEBUG" readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:3030"] Loading
src/e2e_orchestrator/requirements.in +1 −0 Original line number Diff line number Diff line Loading @@ -14,3 +14,4 @@ networkx websockets==12.0 requests==2.27.*
src/e2e_orchestrator/service/E2EOrchestratorServiceServicerImpl.py +34 −5 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ # limitations under the License. import copy import requests from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method from common.proto.e2eorchestrator_pb2 import E2EOrchestratorRequest, E2EOrchestratorReply from common.proto.context_pb2 import ( Loading @@ -33,7 +34,7 @@ import networkx as nx from threading import Thread from websockets.sync.client import connect from websockets.sync.server import serve from common.Constants import DEFAULT_CONTEXT_NAME from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME LOGGER = logging.getLogger(__name__) Loading Loading @@ -98,7 +99,6 @@ class SubscriptionServer(Thread): def _event_received(self, connection): LOGGER.info("EVENT received!") for message in connection: message_json = json.loads(message) # LOGGER.info("message_json: {}".format(message_json)) Loading Loading @@ -142,7 +142,6 @@ class SubscriptionServer(Thread): connection.send(grpc_message_to_json_string(link)) # Link removal elif 'link_uuid' in message_json: LOGGER.info('REMOVING VIRTUAL LINK') link_id = LinkId(**message_json) service_id = ServiceId() Loading @@ -153,7 +152,6 @@ class SubscriptionServer(Thread): context_client.RemoveLink(link_id) # Topology received else: LOGGER.info('TOPOLOGY') topology_details = TopologyDetails(**message_json) context = Context() Loading Loading @@ -181,10 +179,41 @@ class E2EOrchestratorServiceServicerImpl(E2EOrchestratorServiceServicer): sub_server = SubscriptionServer() sub_server.start() LOGGER.debug("Servicer Created") self.retrieve_external_topologies() except Exception as ex: LOGGER.info("Exception!: {}".format(ex)) def retrieve_external_topologies(self): i = 1 while True: try: LOGGER.info(f'Retrieving external controller #{i}') ADD = str(get_setting(f'EXT_CONTROLLER{i}_ADD')) PORT = str(get_setting(f'EXT_CONTROLLER{i}_PORT')) except Exception as e: break try: url = f'http://{ADD}:{PORT}/tfs-api/context/{DEFAULT_CONTEXT_NAME}/topology_details/{DEFAULT_TOPOLOGY_NAME}' topo = requests.get(url).json() except Exception as e: LOGGER.info(f'Exception retrieven topology from external controler #{i}: {e}') topology_details = TopologyDetails(**topo) context = Context() context.context_id.context_uuid.uuid = topology_details.topology_id.context_id.context_uuid.uuid context_client.SetContext(context) topology = Topology() topology.topology_id.context_id.CopyFrom(context.context_id) topology.topology_id.topology_uuid.uuid = topology_details.topology_id.topology_uuid.uuid context_client.SetTopology(topology) for device in topology_details.devices: context_client.SetDevice(device) for link in topology_details.links: context_client.SetLink(link) i+=1 @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) Loading