Commit 7ea24d44 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Slice component:

- minor code formatting
- implemented logic to identify service type
- implemented logic to require at least 2 endpoints to process a slice request
parent 4ceab714
Loading
Loading
Loading
Loading
+84 −63
Original line number Diff line number Diff line
@@ -50,9 +50,19 @@ class SliceServiceServicerImpl(SliceServiceServicer):
            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()
        slice_request.CopyFrom(_slice)

        if len(request.slice_endpoint_ids) < 2:
            # unable to identify the kind of slice; just update endpoints, constraints and config rules
            # update the slice in database, and return
            # pylint: disable=no-member
            copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
            copy_constraints(request.slice_constraints, slice_request.slice_constraints)
            copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
            return context_client.SetSlice(slice_request)

        #LOGGER.info('json_current_slice = {:s}'.format(str(json_current_slice)))
        #json_updated_slice = grpc_message_to_json(request)
        #LOGGER.info('json_updated_slice = {:s}'.format(str(json_updated_slice)))
@@ -62,7 +72,14 @@ class SliceServiceServicerImpl(SliceServiceServicer):
        if is_multi_domain(context_client, request.slice_endpoint_ids):
            interdomain_client = InterdomainClient()
            slice_id = interdomain_client.RequestSlice(request)
        else:
            slice_ = context_client.GetSlice(slice_id)
            slice_active = Slice()
            slice_active.CopyFrom(slice_)
            slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE # pylint: disable=no-member
            context_client.SetSlice(slice_active)
            return slice_id

        # Local domain slice
        service_id = ServiceId()
        # pylint: disable=no-member
        context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid
@@ -118,6 +135,10 @@ class SliceServiceServicerImpl(SliceServiceServicer):
                    LOGGER.info('is L2')
                break

        if service_request.service_type == ServiceTypeEnum.SERVICETYPE_UNKNOWN:
            service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM
            LOGGER.info('assume L2')

        service_reply = service_client.UpdateService(service_request)
        if service_reply != service_request.service_id: # pylint: disable=no-member
            raise Exception('Service update failed. Wrong Service Id was returned')
+3 −1
Original line number Diff line number Diff line
@@ -15,7 +15,9 @@
import logging, signal, sys, threading
from prometheus_client import start_http_server
from common.Constants import ServiceNameEnum
from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, wait_for_environment_variables
from common.Settings import (
    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port,
    wait_for_environment_variables)
from .SliceService import SliceService

terminate = threading.Event()