Loading src/nbi/service/tfs_api/Resources.py +32 −0 Original line number Diff line number Diff line Loading @@ -14,12 +14,16 @@ import json import logging import urllib.parse from typing import Dict, List import grpc import requests from flask.json import jsonify from flask_restful import Resource, request from werkzeug.exceptions import BadRequest from common.Constants import ServiceNameEnum from common.proto.context_pb2 import Empty, LinkTypeEnum, Service, ServiceTypeEnum, ConfigActionEnum, ConfigRule from common.Settings import get_service_host, get_service_port_grpc from common.proto.e2eorchestrator_pb2 import E2EOrchestratorRequest from common.tools.descriptor.Tools import format_device_custom_config_rules, format_service_custom_config_rules from common.tools.grpc.Tools import grpc_message_to_json Loading Loading @@ -455,6 +459,34 @@ class OpticalSpectrumReservationRelease(_Resource): except grpc.RpcError as exc: return _format_grpc_error(exc) class OpticalConnectivityCandidates(_Resource): def post(self, context_uuid : str, topology_uuid : str): candidate_request = request.get_json() if candidate_request is None: raise BadRequest('Missing optical connectivity candidate request') try: optical_host = get_service_host(ServiceNameEnum.OPTICALCONTROLLER) optical_port = get_service_port_grpc(ServiceNameEnum.OPTICALCONTROLLER) url = 'http://{:s}:{:d}/OpticalTFS/ComputeOpticalConnectivityCandidates/{:s}/{:s}'.format( optical_host, optical_port, urllib.parse.quote(context_uuid, safe=''), urllib.parse.quote(topology_uuid, safe=''), ) reply = requests.post(url, json=candidate_request, timeout=30) if reply.content and len(reply.content) > 0: return reply.json(), reply.status_code return None, reply.status_code except requests.exceptions.RequestException as exc: LOGGER.warning('Optical controller candidate computation request failed: %s', str(exc)) return { 'candidates': [], 'rejected_reasons': [{ 'code': 'OPTICAL_CONTROLLER_UNAVAILABLE', 'message': str(exc), }], }, 503 class ConnectionIds(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.context_client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) Loading src/nbi/service/tfs_api/__init__.py +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ from .Resources import ( OpticalLink, OpticalLinks, OpticalSpectrumReservation, OpticalSpectrumReservationConsume, OpticalSpectrumReservationRelease, OpticalSpectrumReservations, OpticalConnectivityCandidates, PolicyRule, PolicyRuleIds, PolicyRules, Service, ServiceIds, Services, Slice, SliceIds, Slices, Loading Loading @@ -72,6 +73,8 @@ _RESOURCES = [ '/context/<path:context_uuid>/optical_spectrum_reservation/<path:reservation_uuid>/consume'), ('api.optical_spectrum_reservation_release', OpticalSpectrumReservationRelease, '/context/<path:context_uuid>/optical_spectrum_reservation/<path:reservation_uuid>/release'), ('api.optical_connectivity_candidates', OpticalConnectivityCandidates, '/context/<path:context_uuid>/topology/<path:topology_uuid>/optical_connectivity_candidates'), ('api.connection_ids', ConnectionIds, '/context/<path:context_uuid>/service/<path:service_uuid>/connection_ids'), ('api.connections', Connections, '/context/<path:context_uuid>/service/<path:service_uuid>/connections'), Loading Loading
src/nbi/service/tfs_api/Resources.py +32 −0 Original line number Diff line number Diff line Loading @@ -14,12 +14,16 @@ import json import logging import urllib.parse from typing import Dict, List import grpc import requests from flask.json import jsonify from flask_restful import Resource, request from werkzeug.exceptions import BadRequest from common.Constants import ServiceNameEnum from common.proto.context_pb2 import Empty, LinkTypeEnum, Service, ServiceTypeEnum, ConfigActionEnum, ConfigRule from common.Settings import get_service_host, get_service_port_grpc from common.proto.e2eorchestrator_pb2 import E2EOrchestratorRequest from common.tools.descriptor.Tools import format_device_custom_config_rules, format_service_custom_config_rules from common.tools.grpc.Tools import grpc_message_to_json Loading Loading @@ -455,6 +459,34 @@ class OpticalSpectrumReservationRelease(_Resource): except grpc.RpcError as exc: return _format_grpc_error(exc) class OpticalConnectivityCandidates(_Resource): def post(self, context_uuid : str, topology_uuid : str): candidate_request = request.get_json() if candidate_request is None: raise BadRequest('Missing optical connectivity candidate request') try: optical_host = get_service_host(ServiceNameEnum.OPTICALCONTROLLER) optical_port = get_service_port_grpc(ServiceNameEnum.OPTICALCONTROLLER) url = 'http://{:s}:{:d}/OpticalTFS/ComputeOpticalConnectivityCandidates/{:s}/{:s}'.format( optical_host, optical_port, urllib.parse.quote(context_uuid, safe=''), urllib.parse.quote(topology_uuid, safe=''), ) reply = requests.post(url, json=candidate_request, timeout=30) if reply.content and len(reply.content) > 0: return reply.json(), reply.status_code return None, reply.status_code except requests.exceptions.RequestException as exc: LOGGER.warning('Optical controller candidate computation request failed: %s', str(exc)) return { 'candidates': [], 'rejected_reasons': [{ 'code': 'OPTICAL_CONTROLLER_UNAVAILABLE', 'message': str(exc), }], }, 503 class ConnectionIds(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.context_client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) Loading
src/nbi/service/tfs_api/__init__.py +3 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ from .Resources import ( OpticalLink, OpticalLinks, OpticalSpectrumReservation, OpticalSpectrumReservationConsume, OpticalSpectrumReservationRelease, OpticalSpectrumReservations, OpticalConnectivityCandidates, PolicyRule, PolicyRuleIds, PolicyRules, Service, ServiceIds, Services, Slice, SliceIds, Slices, Loading Loading @@ -72,6 +73,8 @@ _RESOURCES = [ '/context/<path:context_uuid>/optical_spectrum_reservation/<path:reservation_uuid>/consume'), ('api.optical_spectrum_reservation_release', OpticalSpectrumReservationRelease, '/context/<path:context_uuid>/optical_spectrum_reservation/<path:reservation_uuid>/release'), ('api.optical_connectivity_candidates', OpticalConnectivityCandidates, '/context/<path:context_uuid>/topology/<path:topology_uuid>/optical_connectivity_candidates'), ('api.connection_ids', ConnectionIds, '/context/<path:context_uuid>/service/<path:service_uuid>/connection_ids'), ('api.connections', Connections, '/context/<path:context_uuid>/service/<path:service_uuid>/connections'), Loading