Loading src/tapi/service/service/routes.py +95 −11 Original line number Diff line number Diff line Loading @@ -13,13 +13,9 @@ # limitations under the License. import base64, json, logging , os , requests#, re from flask import jsonify, Blueprint, flash, session, url_for, request , make_response from common.proto.context_pb2 import (ContextList, Empty, Service, TopologyList, Topology) from common.tools.descriptor.Loader import DescriptorLoader, compose_notifications from common.tools.grpc.Tools import grpc_message_to_json_string from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.Topology import json_topology_id from common.tools.context_queries.Topology import create_topology from flask import Blueprint, request , make_response from common.proto.context_pb2 import ( ServiceId, Service) from common.tools.descriptor.Tools import get_descriptors_add_services from google.protobuf.json_format import MessageToDict , ParseDict from context.client.ContextClient import ContextClient Loading Loading @@ -50,14 +46,13 @@ def set_service () : for service in _add_services: try : service_client.connect() service_id = service_client.CreateService(service) service = ParseDict(service, Service()) service_client.CreateService(service) except Exception as e : logging.info(f"error in creating service {e}") return make_response(f'error !! {e}' ,400) for service in _services : try : service = ParseDict(service, Service()) service_id = service_client.UpdateService(service) Loading Loading @@ -133,3 +128,92 @@ def create_service (): return make_response('Service Created Successfully !!' , 200) else : return make_response(response.text,400) @service.route('/delete_service',methods= ['POST']) def delete_service (): data = request.json service_uuid = data.get('service_uuid',None) service_id = ServiceId() if isinstance(service_uuid, str): service_id.service_uuid.uuid = service_uuid else: return make_response("service_uuid must be a string", 400) if not service_uuid: return make_response("service_uuid is required", 400) try : service_client.connect() service_client.DeleteService(service_id) return make_response(f"Service {service_uuid} deleted successfully !!", 200) except Exception as e : logging.info(f"error in deleting service {e}") return make_response(f'Error !! {e}' ,400) finally : if service_client: service_client.close() @service.route('/delete_child_service',methods= ['POST']) def delete_child_service (): data = request.json service_uuid = data.get('service_uuid',None) port = data.get('port',8008) host = data.get('host',None) if not host: return make_response("host is required", 400) if not service_uuid: return make_response("service_uuid is required", 400) url = ('http://{}:{}/service/delete_service').format(host,port) try : response = requests.post(url,json={'service_uuid': service_uuid}) if response.status_code != 200: return make_response(f"Failed to delete child service: {response.text}", response.status_code) return make_response(f"Child Service {service_uuid} deleted successfully !!", 200) except Exception as e : logging.info(f"error in deleting child service {e}") return make_response(f'Error !! {e}' ,400) @service.route('/get_list_service', methods=['GET']) def get_list_service(): try: context_client.connect() list_services = context_client.ListServices() if not list_services: return make_response("No services found", 404) services_list = [] for service in list_services: service_dict = MessageToDict(service, preserving_proto_field_name=True) services_list.append(service_dict) return make_response(json.dumps(services_list), 200) except Exception as e: logging.error(f"Error retrieving services: {e}") return make_response(f"Error retrieving services: {e}", 500) finally: if context_client: context_client.close() @service.route('/get_child_services', methods=['POST']) def get_child_services(): data = request.json port = data.get('port', 8008) host = data.get('host', None) if not host: return make_response("host is required", 400) url = ('http://{}:{}/service/get_list_service').format(host, port) try: response = requests.get(url) if response.status_code != 200: return make_response(f"Failed to retrieve child services: {response.text}", response.status_code) child_services = response.json() return make_response(json.dumps(child_services), 200) except Exception as e: logging.error(f"Error retrieving child services: {e}") return make_response(f"Error retrieving child services: {e}", 500) No newline at end of file src/tapi/service/topology/routes.py +2 −1 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ def add_children () : children= request.json endpoints=[] child_topo = ChildTopology() response=None if children and 'topology' in children : for child in children["topology"]: context_uuid = child.get('context_uuid',None) Loading Loading @@ -117,7 +118,7 @@ def add_children () : context_client.connect() context_client.SetChildTopology(child_topo) return make_response("Topology Added Successfully !", 200) return make_response( response.json, 200) except Exception as e : logging.info(f'error {e}') Loading src/tapi/tools.py +3 −1 Original line number Diff line number Diff line Loading @@ -31,3 +31,5 @@ def services_builder (services): for service in services: built_services['services'].append(service_builder(service)) return built_services src/webui/service/templates/base_optical/home.html +1 −10 Original line number Diff line number Diff line Loading @@ -23,16 +23,7 @@ <div class="col-12 my-2"> <div class="row"> <!-- <div class="col-12"> <h5 style="font-weight: bold;">TAPI : </h5> </div> <div class="col-12"> <a href="{{ url_for('tapi.home') }}" class="btn btn-primary" style="margin-bottom: 10px;"> Connect To Remote </a> </div> --> </div> <div class="col-12 my-2"> <h5 style="font-weight: bold;">Optical Configuration : </h5> Loading Loading
src/tapi/service/service/routes.py +95 −11 Original line number Diff line number Diff line Loading @@ -13,13 +13,9 @@ # limitations under the License. import base64, json, logging , os , requests#, re from flask import jsonify, Blueprint, flash, session, url_for, request , make_response from common.proto.context_pb2 import (ContextList, Empty, Service, TopologyList, Topology) from common.tools.descriptor.Loader import DescriptorLoader, compose_notifications from common.tools.grpc.Tools import grpc_message_to_json_string from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.Topology import json_topology_id from common.tools.context_queries.Topology import create_topology from flask import Blueprint, request , make_response from common.proto.context_pb2 import ( ServiceId, Service) from common.tools.descriptor.Tools import get_descriptors_add_services from google.protobuf.json_format import MessageToDict , ParseDict from context.client.ContextClient import ContextClient Loading Loading @@ -50,14 +46,13 @@ def set_service () : for service in _add_services: try : service_client.connect() service_id = service_client.CreateService(service) service = ParseDict(service, Service()) service_client.CreateService(service) except Exception as e : logging.info(f"error in creating service {e}") return make_response(f'error !! {e}' ,400) for service in _services : try : service = ParseDict(service, Service()) service_id = service_client.UpdateService(service) Loading Loading @@ -133,3 +128,92 @@ def create_service (): return make_response('Service Created Successfully !!' , 200) else : return make_response(response.text,400) @service.route('/delete_service',methods= ['POST']) def delete_service (): data = request.json service_uuid = data.get('service_uuid',None) service_id = ServiceId() if isinstance(service_uuid, str): service_id.service_uuid.uuid = service_uuid else: return make_response("service_uuid must be a string", 400) if not service_uuid: return make_response("service_uuid is required", 400) try : service_client.connect() service_client.DeleteService(service_id) return make_response(f"Service {service_uuid} deleted successfully !!", 200) except Exception as e : logging.info(f"error in deleting service {e}") return make_response(f'Error !! {e}' ,400) finally : if service_client: service_client.close() @service.route('/delete_child_service',methods= ['POST']) def delete_child_service (): data = request.json service_uuid = data.get('service_uuid',None) port = data.get('port',8008) host = data.get('host',None) if not host: return make_response("host is required", 400) if not service_uuid: return make_response("service_uuid is required", 400) url = ('http://{}:{}/service/delete_service').format(host,port) try : response = requests.post(url,json={'service_uuid': service_uuid}) if response.status_code != 200: return make_response(f"Failed to delete child service: {response.text}", response.status_code) return make_response(f"Child Service {service_uuid} deleted successfully !!", 200) except Exception as e : logging.info(f"error in deleting child service {e}") return make_response(f'Error !! {e}' ,400) @service.route('/get_list_service', methods=['GET']) def get_list_service(): try: context_client.connect() list_services = context_client.ListServices() if not list_services: return make_response("No services found", 404) services_list = [] for service in list_services: service_dict = MessageToDict(service, preserving_proto_field_name=True) services_list.append(service_dict) return make_response(json.dumps(services_list), 200) except Exception as e: logging.error(f"Error retrieving services: {e}") return make_response(f"Error retrieving services: {e}", 500) finally: if context_client: context_client.close() @service.route('/get_child_services', methods=['POST']) def get_child_services(): data = request.json port = data.get('port', 8008) host = data.get('host', None) if not host: return make_response("host is required", 400) url = ('http://{}:{}/service/get_list_service').format(host, port) try: response = requests.get(url) if response.status_code != 200: return make_response(f"Failed to retrieve child services: {response.text}", response.status_code) child_services = response.json() return make_response(json.dumps(child_services), 200) except Exception as e: logging.error(f"Error retrieving child services: {e}") return make_response(f"Error retrieving child services: {e}", 500) No newline at end of file
src/tapi/service/topology/routes.py +2 −1 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ def add_children () : children= request.json endpoints=[] child_topo = ChildTopology() response=None if children and 'topology' in children : for child in children["topology"]: context_uuid = child.get('context_uuid',None) Loading Loading @@ -117,7 +118,7 @@ def add_children () : context_client.connect() context_client.SetChildTopology(child_topo) return make_response("Topology Added Successfully !", 200) return make_response( response.json, 200) except Exception as e : logging.info(f'error {e}') Loading
src/tapi/tools.py +3 −1 Original line number Diff line number Diff line Loading @@ -31,3 +31,5 @@ def services_builder (services): for service in services: built_services['services'].append(service_builder(service)) return built_services
src/webui/service/templates/base_optical/home.html +1 −10 Original line number Diff line number Diff line Loading @@ -23,16 +23,7 @@ <div class="col-12 my-2"> <div class="row"> <!-- <div class="col-12"> <h5 style="font-weight: bold;">TAPI : </h5> </div> <div class="col-12"> <a href="{{ url_for('tapi.home') }}" class="btn btn-primary" style="margin-bottom: 10px;"> Connect To Remote </a> </div> --> </div> <div class="col-12 my-2"> <h5 style="font-weight: bold;">Optical Configuration : </h5> Loading