Commit b156435b authored by José Juan Pedreño Manresa's avatar José Juan Pedreño Manresa
Browse files

Added new entrypoint for REST NBI

- Added subfolder rest_server/nbi_plugins/ietf_network_slice
- Modified and created classes to register new URLs in the REST server
- Skeleton for methods GET/POST/DELETE
- Refactoring: moved "tools" subfolder one level up
parent 6224611d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ from common.Settings import (
from .ComputeService import ComputeService
from .rest_server.RestServer import RestServer
from .rest_server.nbi_plugins.ietf_l2vpn import register_ietf_l2vpn
from .rest_server.nbi_plugins.ietf_network_slice import register_ietf_nss

terminate = threading.Event()
LOGGER = None
@@ -54,8 +55,10 @@ def main():
    grpc_service = ComputeService()
    grpc_service.start()

    # Starting Rest Server
    rest_server = RestServer()
    register_ietf_l2vpn(rest_server)
    register_ietf_l2vpn(rest_server)  # Registering L2VPN entrypoint
    register_ietf_nss(rest_server)  # Registering NSS entrypoint
    rest_server.start()

    # Wait for Ctrl+C or termination signal
+3 −3
Original line number Diff line number Diff line
@@ -20,9 +20,9 @@ from common.Constants import DEFAULT_CONTEXT_UUID
from common.proto.context_pb2 import ServiceId, ServiceStatusEnum, SliceStatusEnum
from context.client.ContextClient import ContextClient
from service.client.ServiceClient import ServiceClient
from .tools.Authentication import HTTP_AUTH
from .tools.ContextMethods import get_service, get_slice
from .tools.HttpStatusCodes import HTTP_GATEWAYTIMEOUT, HTTP_NOCONTENT, HTTP_OK, HTTP_SERVERERROR
from compute.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
from compute.service.rest_server.nbi_plugins.tools.ContextMethods import get_service, get_slice
from compute.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_GATEWAYTIMEOUT, HTTP_NOCONTENT, HTTP_OK, HTTP_SERVERERROR

LOGGER = logging.getLogger(__name__)

+3 −3
Original line number Diff line number Diff line
@@ -23,9 +23,9 @@ from common.proto.context_pb2 import Service, ServiceStatusEnum, ServiceTypeEnum
from service.client.ServiceClient import ServiceClient
from slice.client.SliceClient import SliceClient
from .schemas.vpn_service import SCHEMA_VPN_SERVICE
from .tools.Authentication import HTTP_AUTH
from .tools.HttpStatusCodes import HTTP_CREATED, HTTP_SERVERERROR
from .tools.Validator import validate_message
from compute.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_CREATED, HTTP_SERVERERROR
from compute.service.rest_server.nbi_plugins.tools.Validator import validate_message
from compute.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH

LOGGER = logging.getLogger(__name__)

+4 −4
Original line number Diff line number Diff line
@@ -26,10 +26,10 @@ from context.client.ContextClient import ContextClient
from service.client.ServiceClient import ServiceClient
from slice.client.SliceClient import SliceClient
from .schemas.site_network_access import SCHEMA_SITE_NETWORK_ACCESS
from .tools.Authentication import HTTP_AUTH
from .tools.ContextMethods import get_service, get_slice
from .tools.HttpStatusCodes import HTTP_NOCONTENT, HTTP_SERVERERROR
from .tools.Validator import validate_message
from compute.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
from compute.service.rest_server.nbi_plugins.tools.ContextMethods import get_service, get_slice
from compute.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_NOCONTENT, HTTP_SERVERERROR
from compute.service.rest_server.nbi_plugins.tools.Validator import validate_message
from .Constants import BEARER_MAPPINGS, DEFAULT_ADDRESS_FAMILIES, DEFAULT_BGP_AS, DEFAULT_BGP_ROUTE_TARGET, DEFAULT_MTU

LOGGER = logging.getLogger(__name__)
+45 −0
Original line number Diff line number Diff line
# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import logging
from flask.json import jsonify
from flask_restful import Resource
from flask import request
from compute.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
from compute.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK

LOGGER = logging.getLogger(__name__)

class NSS_Service(Resource):
    @HTTP_AUTH.login_required
    def get(self, slice_id : str):
        LOGGER.debug('GET Slice ID: {:s}'.format(str(slice_id)))
        LOGGER.debug('GET Request: {:s}'.format(str(request)))
        
        # TODO Return information and status about requested slice

        response = jsonify({"message": "Requested info for slice {:s}".format(slice_id)})
        response.status_code = HTTP_OK
        return response

    @HTTP_AUTH.login_required
    def delete(self, slice_id : str):
        LOGGER.debug('DELETE Slice ID: {:s}'.format(str(slice_id)))
        LOGGER.debug('DELETE Request: {:s}'.format(str(request)))
        
        # TODO Delete the requested slice

        response = jsonify({"message": "Deletion request for slice {:s}".format(slice_id)})
        response.status_code = HTTP_OK
        return response
Loading