Skip to content
Snippets Groups Projects
Commit b152de16 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Slice component:

- updated multi-domain slice detection logic
- minor code polishing
- added missing dependencies
parent 27a263fe
No related branches found
No related tags found
2 merge requests!54Release 2.0.0,!24Integrate NFV-SDN'22 demo
......@@ -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/
......
......@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment