diff --git a/src/slice/Dockerfile b/src/slice/Dockerfile index 96a751d156edcaef38794ecfe5b409cbeb081e82..7dadc477f70667c827d4a9eb0ddd013c85b97344 100644 --- a/src/slice/Dockerfile +++ b/src/slice/Dockerfile @@ -64,6 +64,7 @@ RUN python3 -m pip install -r requirements.txt WORKDIR /var/teraflow COPY src/context/. context/ COPY src/interdomain/. interdomain/ +COPY src/pathcomp/. pathcomp/ COPY src/service/. service/ COPY src/slice/. slice/ diff --git a/src/slice/service/SliceServiceServicerImpl.py b/src/slice/service/SliceServiceServicerImpl.py index 53875f0e6ae7c8e3e7d5ac9dad7501a2136844c4..f030e7c1116211a39b875070f728bf5d521979c4 100644 --- a/src/slice/service/SliceServiceServicerImpl.py +++ b/src/slice/service/SliceServiceServicerImpl.py @@ -17,11 +17,12 @@ from common.proto.context_pb2 import ( Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum, Slice, SliceId, SliceStatusEnum) from common.proto.slice_pb2_grpc import SliceServiceServicer from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method +from common.tools.context_queries.InterDomain import is_multi_domain from common.tools.grpc.ConfigRules import copy_config_rules from common.tools.grpc.Constraints import copy_constraints from common.tools.grpc.EndPointIds import copy_endpoint_ids from common.tools.grpc.ServiceIds import update_service_ids -from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string +from common.tools.grpc.Tools import grpc_message_to_json_string from context.client.ContextClient import ContextClient from interdomain.client.InterdomainClient import InterdomainClient from service.client.ServiceClient import ServiceClient @@ -42,11 +43,11 @@ class SliceServiceServicerImpl(SliceServiceServicer): try: _slice = context_client.GetSlice(request.slice_id) #json_current_slice = grpc_message_to_json(_slice) - except: + except: # pylint: disable=bare-except #json_current_slice = {} slice_request = Slice() - slice_request.slice_id.CopyFrom(request.slice_id) - slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED + slice_request.slice_id.CopyFrom(request.slice_id) # pylint: disable=no-member + slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED # pylint: disable=no-member context_client.SetSlice(slice_request) _slice = context_client.GetSlice(request.slice_id) slice_request = Slice() @@ -58,39 +59,33 @@ class SliceServiceServicerImpl(SliceServiceServicer): #changes = deepdiff.DeepDiff(json_current_slice, json_updated_slice) #LOGGER.info('changes = {:s}'.format(str(changes))) - domains = set() - for slice_endpoint_id in request.slice_endpoint_ids: - device_uuid = slice_endpoint_id.device_id.device_uuid.uuid - device_parts = device_uuid.split('@') - domain_uuid = '' if len(device_parts) == 1 else device_parts[1] - domains.add(domain_uuid) - LOGGER.info('domains = {:s}'.format(str(domains))) - is_multi_domain = len(domains) > 1 - LOGGER.info('is_multi_domain = {:s}'.format(str(is_multi_domain))) - - if is_multi_domain: + if is_multi_domain(context_client, request.slice_endpoint_ids): interdomain_client = InterdomainClient() slice_id = interdomain_client.RequestSlice(request) else: service_id = ServiceId() + # pylint: disable=no-member context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid slice_uuid = service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid service_client = ServiceClient() try: _service = context_client.GetService(service_id) - except: + except: # pylint: disable=bare-except + # pylint: disable=no-member service_request = Service() service_request.service_id.CopyFrom(service_id) service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED service_reply = service_client.CreateService(service_request) if service_reply != service_request.service_id: # pylint: disable=no-member + # pylint: disable=raise-missing-from raise Exception('Service creation failed. Wrong Service Id was returned') _service = context_client.GetService(service_id) service_request = Service() service_request.CopyFrom(_service) + # pylint: disable=no-member copy_endpoint_ids(request.slice_endpoint_ids, service_request.service_endpoint_ids) copy_constraints(request.slice_constraints, service_request.service_constraints) copy_config_rules(request.slice_config.config_rules, service_request.service_config.config_rules) @@ -138,7 +133,7 @@ class SliceServiceServicerImpl(SliceServiceServicer): slice_ = context_client.GetSlice(slice_id) slice_active = Slice() slice_active.CopyFrom(slice_) - slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE + slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE # pylint: disable=no-member context_client.SetSlice(slice_active) return slice_id @@ -175,21 +170,11 @@ class SliceServiceServicerImpl(SliceServiceServicer): context_client = ContextClient() try: _slice = context_client.GetSlice(request) - except: + except: # pylint: disable=bare-except return Empty() - domains = set() - for slice_endpoint_id in _slice.slice_endpoint_ids: - device_uuid = slice_endpoint_id.device_id.device_uuid.uuid - device_parts = device_uuid.split('@') - domain_uuid = '' if len(device_parts) == 1 else device_parts[1] - domains.add(domain_uuid) - LOGGER.info('domains = {:s}'.format(str(domains))) - is_multi_domain = len(domains) > 1 - LOGGER.info('is_multi_domain = {:s}'.format(str(is_multi_domain))) - - if is_multi_domain: - interdomain_client = InterdomainClient() + if is_multi_domain(context_client, _slice.slice_endpoint_ids): + #interdomain_client = InterdomainClient() #slice_id = interdomain_client.DeleteSlice(request) raise NotImplementedError('Delete inter-domain slice') else: