Loading src/tapi/service/service/routes.py +47 −25 Original line number Original line Diff line number Diff line Loading @@ -33,17 +33,9 @@ service_client = ServiceClient() slice_client = SliceClient() slice_client = SliceClient() def create_update_service (_add_services,_services) : @service.route('/set_service', methods = ['POST']) def set_service () : service_json = request.json _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) services_ids= [] services_ids= [] logging.info(f"set_service called {_services}") logging.info(f"_add_services {_add_services}") try : try : for service in _add_services: for service in _add_services: try : try : Loading @@ -53,7 +45,7 @@ def set_service () : except Exception as e : except Exception as e : logging.info(f"error in creating service {e}") logging.info(f"error in creating service {e}") return make_response(f'error !! {e}' ,400) return (False,f'error !! {e}') for service in _services : for service in _services : try : try : Loading @@ -62,14 +54,30 @@ def set_service () : service_uuid = service_id.service_uuid.uuid service_uuid = service_id.service_uuid.uuid service_id=service_uuid service_id=service_uuid services_ids.append(service_id) services_ids.append(service_id) return (True,services_ids) except Exception as e : except Exception as e : logging.info(f"error in updating service {e}") logging.info(f"error in updating service {e}") return make_response(f'Updating Service !! {e}' ,400) return (False,f'Updating Service !! {e}' ) finally : finally : if service_client: if service_client: service_client.close() service_client.close() if len(services_ids)>0 : return make_response(f"Services {services_ids} was created Successfully !!", 200) @service.route('/set_service', methods = ['POST']) def set_service () : service_json = request.json _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) logging.info(f"set_service called {_services}") logging.info(f"_add_services {_add_services}") success, msg = create_update_service(_add_services,_services) if not success : return make_response(msg, 400) else : if len(msg)>0 : return make_response(f"Services {msg} was created Successfully !!", 200) else: else: return make_response("No services were created.", 400) return make_response("No services were created.", 400) Loading @@ -82,16 +90,30 @@ def create_service (): logging.info(f"_services : {_services}") logging.info(f"_services : {_services}") if len(_services['services'])> 0 : if len(_services['services'])> 0 : if host and port and topology_uuid : headers = {"Content-Type": "application/json"} headers = {"Content-Type": "application/json"} url = ('http://{}:8008/set_service').format(host) url = ('http://{}:8008/set_service').format(host) response = requests.post(url,json=_services,headers=headers) response = requests.post(url,json=_services,headers=headers) if response.status_code == 200 : if response.status_code == 200 : return make_response('Service Created Successfully !!' , 200) return make_response(f'Service Created Successfully in topology {topology_uuid} at address {host} !!' , 200) else : else : return make_response(response.text,400) return make_response(response.text,400) else : _add_services= get_descriptors_add_services(_services['services']) success, msg = create_update_service(_add_services,_services['services']) if not success : return make_response(msg, 400) else : if len(msg)>0 : return make_response(f"Services {msg} was created Successfully !!", 200) else: return make_response("No services were created.", 400) return make_response("No services were created.", 400) @service.route('/restconf/data/tapi-connectivity:connectivity-service/<service_uuid>',methods= ['DELETE']) @service.route('/restconf/data/tapi-connectivity:connectivity-service/<service_uuid>',methods= ['DELETE']) def delete_service (service_uuid): def delete_service (service_uuid): Loading src/tapi/tools.py +14 −5 Original line number Original line Diff line number Diff line from common.proto.context_pb2 import (DeviceId , ChildDevice) from common.proto.context_pb2 import (DeviceId , ChildDevice) from common.tools.context_queries.Device import get_device import logging import logging Loading @@ -10,6 +11,12 @@ def get_topology_uuid (device_id,context_client): context_client.connect() context_client.connect() device = DeviceId() device = DeviceId() device.device_uuid.uuid = device_id device.device_uuid.uuid = device_id local_device = get_device(context_client, device_id) if local_device : return [None ,None , None] else : topology_info = context_client.GetTopologyByDeviceId(device) topology_info = context_client.GetTopologyByDeviceId(device) if topology_info : if topology_info : return[topology_info.host, topology_info.port, topology_info.topology_id.topology_uuid.uuid] return[topology_info.host, topology_info.port, topology_info.topology_id.topology_uuid.uuid] Loading Loading @@ -93,10 +100,12 @@ def service_composer (service_json,context_client) : composed_service['bidirectionality'] = '0' composed_service['bidirectionality'] = '0' topology_src= get_topology_uuid(composed_service['src_dev'],context_client) topology_src= get_topology_uuid(composed_service['src_dev'],context_client) topology_dst= get_topology_uuid(composed_service['dst_dev'],context_client) topology_dst= get_topology_uuid(composed_service['dst_dev'],context_client) if topology_src and topology_dst and topology_src[2] == topology_dst[2] : if topology_src[2] == topology_dst[2] : services['services'].append(service_builder(composed_service)) services['services'].append(service_builder(composed_service)) else : else : logging.info(f'''Error in service {composed_service['name']} : logging.info(f'''Error in service {composed_service['name']} : source and destination devices are not in the same topology or topology is missing''') source and destination devices are not in the same topology or topology is missing''') return [ services ,topology_src[0],topology_src[1],topology_src[2] ] return [ services ,topology_src[0],topology_src[1],topology_src[2] ] my_deploy.sh +1 −1 File changed.Contains only whitespace changes. Show changes Loading
src/tapi/service/service/routes.py +47 −25 Original line number Original line Diff line number Diff line Loading @@ -33,17 +33,9 @@ service_client = ServiceClient() slice_client = SliceClient() slice_client = SliceClient() def create_update_service (_add_services,_services) : @service.route('/set_service', methods = ['POST']) def set_service () : service_json = request.json _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) services_ids= [] services_ids= [] logging.info(f"set_service called {_services}") logging.info(f"_add_services {_add_services}") try : try : for service in _add_services: for service in _add_services: try : try : Loading @@ -53,7 +45,7 @@ def set_service () : except Exception as e : except Exception as e : logging.info(f"error in creating service {e}") logging.info(f"error in creating service {e}") return make_response(f'error !! {e}' ,400) return (False,f'error !! {e}') for service in _services : for service in _services : try : try : Loading @@ -62,14 +54,30 @@ def set_service () : service_uuid = service_id.service_uuid.uuid service_uuid = service_id.service_uuid.uuid service_id=service_uuid service_id=service_uuid services_ids.append(service_id) services_ids.append(service_id) return (True,services_ids) except Exception as e : except Exception as e : logging.info(f"error in updating service {e}") logging.info(f"error in updating service {e}") return make_response(f'Updating Service !! {e}' ,400) return (False,f'Updating Service !! {e}' ) finally : finally : if service_client: if service_client: service_client.close() service_client.close() if len(services_ids)>0 : return make_response(f"Services {services_ids} was created Successfully !!", 200) @service.route('/set_service', methods = ['POST']) def set_service () : service_json = request.json _services= service_json.get('services',[]) _add_services= get_descriptors_add_services(_services) logging.info(f"set_service called {_services}") logging.info(f"_add_services {_add_services}") success, msg = create_update_service(_add_services,_services) if not success : return make_response(msg, 400) else : if len(msg)>0 : return make_response(f"Services {msg} was created Successfully !!", 200) else: else: return make_response("No services were created.", 400) return make_response("No services were created.", 400) Loading @@ -82,16 +90,30 @@ def create_service (): logging.info(f"_services : {_services}") logging.info(f"_services : {_services}") if len(_services['services'])> 0 : if len(_services['services'])> 0 : if host and port and topology_uuid : headers = {"Content-Type": "application/json"} headers = {"Content-Type": "application/json"} url = ('http://{}:8008/set_service').format(host) url = ('http://{}:8008/set_service').format(host) response = requests.post(url,json=_services,headers=headers) response = requests.post(url,json=_services,headers=headers) if response.status_code == 200 : if response.status_code == 200 : return make_response('Service Created Successfully !!' , 200) return make_response(f'Service Created Successfully in topology {topology_uuid} at address {host} !!' , 200) else : else : return make_response(response.text,400) return make_response(response.text,400) else : _add_services= get_descriptors_add_services(_services['services']) success, msg = create_update_service(_add_services,_services['services']) if not success : return make_response(msg, 400) else : if len(msg)>0 : return make_response(f"Services {msg} was created Successfully !!", 200) else: return make_response("No services were created.", 400) return make_response("No services were created.", 400) @service.route('/restconf/data/tapi-connectivity:connectivity-service/<service_uuid>',methods= ['DELETE']) @service.route('/restconf/data/tapi-connectivity:connectivity-service/<service_uuid>',methods= ['DELETE']) def delete_service (service_uuid): def delete_service (service_uuid): Loading
src/tapi/tools.py +14 −5 Original line number Original line Diff line number Diff line from common.proto.context_pb2 import (DeviceId , ChildDevice) from common.proto.context_pb2 import (DeviceId , ChildDevice) from common.tools.context_queries.Device import get_device import logging import logging Loading @@ -10,6 +11,12 @@ def get_topology_uuid (device_id,context_client): context_client.connect() context_client.connect() device = DeviceId() device = DeviceId() device.device_uuid.uuid = device_id device.device_uuid.uuid = device_id local_device = get_device(context_client, device_id) if local_device : return [None ,None , None] else : topology_info = context_client.GetTopologyByDeviceId(device) topology_info = context_client.GetTopologyByDeviceId(device) if topology_info : if topology_info : return[topology_info.host, topology_info.port, topology_info.topology_id.topology_uuid.uuid] return[topology_info.host, topology_info.port, topology_info.topology_id.topology_uuid.uuid] Loading Loading @@ -93,10 +100,12 @@ def service_composer (service_json,context_client) : composed_service['bidirectionality'] = '0' composed_service['bidirectionality'] = '0' topology_src= get_topology_uuid(composed_service['src_dev'],context_client) topology_src= get_topology_uuid(composed_service['src_dev'],context_client) topology_dst= get_topology_uuid(composed_service['dst_dev'],context_client) topology_dst= get_topology_uuid(composed_service['dst_dev'],context_client) if topology_src and topology_dst and topology_src[2] == topology_dst[2] : if topology_src[2] == topology_dst[2] : services['services'].append(service_builder(composed_service)) services['services'].append(service_builder(composed_service)) else : else : logging.info(f'''Error in service {composed_service['name']} : logging.info(f'''Error in service {composed_service['name']} : source and destination devices are not in the same topology or topology is missing''') source and destination devices are not in the same topology or topology is missing''') return [ services ,topology_src[0],topology_src[1],topology_src[2] ] return [ services ,topology_src[0],topology_src[1],topology_src[2] ]