Commit 0ccf06c8 authored by Carlos Natalino's avatar Carlos Natalino
Browse files

Merge branch 'develop' of gitlab.com:teraflow-h2020/controller into develop

parents 1c597841 43e39750
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ spec:
        - containerPort: 2020
        env:
        - name: LOG_LEVEL
          value: "INFO"
          value: "DEBUG"
        readinessProbe:
          exec:
            command: ["/bin/grpc_health_probe", "-addr=:2020"]
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ spec:
        - containerPort: 3030
        env:
        - name: LOG_LEVEL
          value: "INFO"
          value: "DEBUG"
        readinessProbe:
          exec:
            command: ["/bin/grpc_health_probe", "-addr=:3030"]
+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ def main():
    wait_for_environment_variables([
        get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST     ),
        get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
        get_env_var_name(ServiceNameEnum.SLICE,   ENVVAR_SUFIX_SERVICE_HOST     ),
        get_env_var_name(ServiceNameEnum.SLICE,   ENVVAR_SUFIX_SERVICE_PORT_GRPC),
    ])

    signal.signal(signal.SIGINT,  signal_handler)
+13 −39
Original line number Diff line number Diff line
@@ -16,13 +16,11 @@ import logging
from flask import request
from flask.json import jsonify
from flask_restful import Resource
from common.Constants import DEFAULT_CONTEXT_UUID
from common.proto.context_pb2 import ServiceId, ServiceStatusEnum, SliceStatusEnum
from common.proto.context_pb2 import SliceStatusEnum
from context.client.ContextClient import ContextClient
from service.client.ServiceClient import ServiceClient
from slice.client.SliceClient import SliceClient
from .tools.Authentication import HTTP_AUTH
from .tools.ContextMethods import get_service, get_slice
from .tools.ContextMethods import get_slice
from .tools.HttpStatusCodes import HTTP_GATEWAYTIMEOUT, HTTP_NOCONTENT, HTTP_OK, HTTP_SERVERERROR

LOGGER = logging.getLogger(__name__)
@@ -37,26 +35,16 @@ class L2VPN_Service(Resource):
            context_client = ContextClient()

            target = get_slice(context_client, vpn_id)
            if target is not None:
            if target is None:
                raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))

            if target.slice_id.slice_uuid.uuid != vpn_id: # pylint: disable=no-member
                raise Exception('Slice retrieval failed. Wrong Slice Id was returned')

            slice_ready_status = SliceStatusEnum.SLICESTATUS_ACTIVE
            slice_status = target.slice_status.slice_status # pylint: disable=no-member
            response = jsonify({})
            response.status_code = HTTP_OK if slice_status == slice_ready_status else HTTP_GATEWAYTIMEOUT
                return response

            target = get_service(context_client, vpn_id)
            if target is not None:
                if target.service_id.service_uuid.uuid != vpn_id: # pylint: disable=no-member
                    raise Exception('Service retrieval failed. Wrong Service Id was returned')
                service_ready_status = ServiceStatusEnum.SERVICESTATUS_ACTIVE
                service_status = target.service_status.service_status # pylint: disable=no-member
                response = jsonify({})
                response.status_code = HTTP_OK if service_status == service_ready_status else HTTP_GATEWAYTIMEOUT
                return response

            raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))
        except Exception as e: # pylint: disable=broad-except
            LOGGER.exception('Something went wrong Retrieving VPN({:s})'.format(str(vpn_id)))
            response = jsonify({'error': str(e)})
@@ -72,29 +60,15 @@ class L2VPN_Service(Resource):
            context_client = ContextClient()

            target = get_slice(context_client, vpn_id)
            if target is not None:
            if target is None:
                LOGGER.warning('VPN({:s}) not found in database. Nothing done.'.format(str(vpn_id)))
            else:
                if target.slice_id.slice_uuid.uuid != vpn_id: # pylint: disable=no-member
                    raise Exception('Slice retrieval failed. Wrong Slice Id was returned')
                slice_client = SliceClient()
                slice_client.DeleteSlice(target.slice_id)
            response = jsonify({})
            response.status_code = HTTP_NOCONTENT
                return response

            target = get_service(context_client, vpn_id)
            if target is not None:
                if target.service_id.service_uuid.uuid != vpn_id: # pylint: disable=no-member
                    raise Exception('Service retrieval failed. Wrong Service Id was returned')
                service_client = ServiceClient()
                service_client.DeleteService(target.service_id)
                response = jsonify({})
                response.status_code = HTTP_NOCONTENT
                return response

            LOGGER.warning('VPN({:s}) not found in database. Nothing done.'.format(str(vpn_id)))
            response = jsonify({})
            response.status_code = HTTP_NOCONTENT
            return response
        except Exception as e: # pylint: disable=broad-except
            LOGGER.exception('Something went wrong Deleting VPN({:s})'.format(str(vpn_id)))
            response = jsonify({'error': str(e)})
+11 −30
Original line number Diff line number Diff line
@@ -19,8 +19,7 @@ from flask.json import jsonify
from flask_restful import Resource
from werkzeug.exceptions import UnsupportedMediaType
from common.Constants import DEFAULT_CONTEXT_UUID
from common.proto.context_pb2 import Service, ServiceStatusEnum, ServiceTypeEnum, SliceStatusEnum, Slice
from service.client.ServiceClient import ServiceClient
from common.proto.context_pb2 import SliceStatusEnum, Slice
from slice.client.SliceClient import SliceClient
from .schemas.vpn_service import SCHEMA_VPN_SERVICE
from .tools.Authentication import HTTP_AUTH
@@ -44,24 +43,6 @@ class L2VPN_Services(Resource):
        vpn_services : List[Dict] = request_data['ietf-l2vpn-svc:vpn-service']
        for vpn_service in vpn_services:
            try:
                # By now, assume requests from OSM always need transport slices
                # TODO: think how to differentiate
                #vpn_service_type = vpn_service['vpn-svc-type']
                vpn_service_type = 'vpls'

                if vpn_service_type == 'vpws':
                    # pylint: disable=no-member
                    service_request = Service()
                    service_request.service_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID
                    service_request.service_id.service_uuid.uuid = vpn_service['vpn-id']
                    service_request.service_type = ServiceTypeEnum.SERVICETYPE_L3NM
                    service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED

                    service_client = ServiceClient()
                    service_reply = service_client.CreateService(service_request)
                    if service_reply != service_request.service_id: # pylint: disable=no-member
                        raise Exception('Service creation failed. Wrong Service Id was returned')
                elif vpn_service_type == 'vpls':
                # pylint: disable=no-member
                slice_request = Slice()
                slice_request.slice_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_UUID
Loading