Loading src/tapi/service/service/routes.py +74 −47 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from tapi.tools import service_builder from tapi.tools import services_builder service = Blueprint('service', __name__ ,url_prefix="/service") Loading @@ -42,40 +42,62 @@ slice_client = SliceClient() def set_service () : service_json = request.json service = ParseDict(service_json, Service()) _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) services_ids= [] try : for service in _add_services: try : service_client.connect() service_id = service_client.CreateService(service) if service_id : service_client.UpdateService(service) return make_response('Service Was Created Successfully !!' ,200) 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) if isinstance(service_id, ServiceId): service_uuid = service_id.service_uuid.uuid service_id=service_uuid services_ids.append(service_id) except Exception as e : logging.info(f"error in updating service {e}") return make_response(f'Updating Service !! {e}' ,400) finally : if service_client: service_client.close() if len(services_ids)>0 : return make_response(f"Services {services_ids} was created Successfully !!", 200) else: return make_response("No services were created.", 400) @service.route('/create_service',methods= ['POST']) def create_service (): data = request.json host = data.get('host',None) port = data.get('port',8008) service_name = data.get('name',None) service_type=data.get('type',None) service_bandwidth=data.get('bandwidth',0) service_bi = data.get('bidirectionality',0) _services=[] if 'services' in data : for service in data['services']: host = service.get('host',None) port = service.get('port',8008) service_name = service.get('name',None) service_type=service.get('type',None) service_bandwidth=service.get('bandwidth',0) service_bi = service.get('bidirectionality',0) src_dev=None src_end=None dst_dev=None dst_end=None if 'source' in data : src_dev = data['source'].get('device') src_end = data['source'].get('endpoint') if 'destination' in data : dst_dev = data['destination'].get('device',None) dst_end = data['destination'].get('endpoint',None) if 'source' in service : src_dev = service['source'].get('device') src_end = service['source'].get('endpoint') if 'destination' in service : dst_dev = service['destination'].get('device',None) dst_end = service['destination'].get('endpoint',None) required_fields = { 'name': service_name, Loading @@ -90,14 +112,19 @@ def create_service (): if len(missing_fields) >0 : resonse = make_response(f"These fields are required {missing_fields}",400) return resonse else : headers = {"Content-Type": "application/json"} url = ('http://{}:8008/service/set_service').format(host) required_fields['bandwidth']=service_bandwidth required_fields['bidirectionality']=service_bi required_fields['port']=port service_json = service_builder(required_fields) _services.append(required_fields) if len(_services)> 0 : headers = {"Content-Type": "application/json"} url = ('http://{}:8008/service/set_service').format(host) service_json = services_builder(_services) response = requests.post(url,json=service_json,headers=headers) Loading src/tapi/tools.py +11 −2 Original line number Diff line number Diff line def service_builder (service_json): service= { "service_id": { Loading @@ -22,3 +23,11 @@ def service_builder (service_json): "service_config": {"config_rules": []} } return service def services_builder (services): built_services= {'services':[]} for service in services: built_services['services'].append(service_builder(service)) return built_services No newline at end of file src/webui/service/main/routes.py +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ from common.tools.descriptor.Loader import DescriptorLoader, compose_notificatio 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.descriptor.Tools import get_descriptors_add_services from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient Loading Loading
src/tapi/service/service/routes.py +74 −47 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from tapi.tools import service_builder from tapi.tools import services_builder service = Blueprint('service', __name__ ,url_prefix="/service") Loading @@ -42,40 +42,62 @@ slice_client = SliceClient() def set_service () : service_json = request.json service = ParseDict(service_json, Service()) _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) services_ids= [] try : for service in _add_services: try : service_client.connect() service_id = service_client.CreateService(service) if service_id : service_client.UpdateService(service) return make_response('Service Was Created Successfully !!' ,200) 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) if isinstance(service_id, ServiceId): service_uuid = service_id.service_uuid.uuid service_id=service_uuid services_ids.append(service_id) except Exception as e : logging.info(f"error in updating service {e}") return make_response(f'Updating Service !! {e}' ,400) finally : if service_client: service_client.close() if len(services_ids)>0 : return make_response(f"Services {services_ids} was created Successfully !!", 200) else: return make_response("No services were created.", 400) @service.route('/create_service',methods= ['POST']) def create_service (): data = request.json host = data.get('host',None) port = data.get('port',8008) service_name = data.get('name',None) service_type=data.get('type',None) service_bandwidth=data.get('bandwidth',0) service_bi = data.get('bidirectionality',0) _services=[] if 'services' in data : for service in data['services']: host = service.get('host',None) port = service.get('port',8008) service_name = service.get('name',None) service_type=service.get('type',None) service_bandwidth=service.get('bandwidth',0) service_bi = service.get('bidirectionality',0) src_dev=None src_end=None dst_dev=None dst_end=None if 'source' in data : src_dev = data['source'].get('device') src_end = data['source'].get('endpoint') if 'destination' in data : dst_dev = data['destination'].get('device',None) dst_end = data['destination'].get('endpoint',None) if 'source' in service : src_dev = service['source'].get('device') src_end = service['source'].get('endpoint') if 'destination' in service : dst_dev = service['destination'].get('device',None) dst_end = service['destination'].get('endpoint',None) required_fields = { 'name': service_name, Loading @@ -90,14 +112,19 @@ def create_service (): if len(missing_fields) >0 : resonse = make_response(f"These fields are required {missing_fields}",400) return resonse else : headers = {"Content-Type": "application/json"} url = ('http://{}:8008/service/set_service').format(host) required_fields['bandwidth']=service_bandwidth required_fields['bidirectionality']=service_bi required_fields['port']=port service_json = service_builder(required_fields) _services.append(required_fields) if len(_services)> 0 : headers = {"Content-Type": "application/json"} url = ('http://{}:8008/service/set_service').format(host) service_json = services_builder(_services) response = requests.post(url,json=service_json,headers=headers) Loading
src/tapi/tools.py +11 −2 Original line number Diff line number Diff line def service_builder (service_json): service= { "service_id": { Loading @@ -22,3 +23,11 @@ def service_builder (service_json): "service_config": {"config_rules": []} } return service def services_builder (services): built_services= {'services':[]} for service in services: built_services['services'].append(service_builder(service)) return built_services No newline at end of file
src/webui/service/main/routes.py +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ from common.tools.descriptor.Loader import DescriptorLoader, compose_notificatio 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.descriptor.Tools import get_descriptors_add_services from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient Loading