From 1437c070bdc7b37ed8bb7e177df6c93fc4ea2851 Mon Sep 17 00:00:00 2001 From: Rahul Shikhare Date: Wed, 20 Jul 2016 18:39:29 +0530 Subject: [PATCH] NFP - Pecan controller enhancements to support configuration patches This changeset contains enhancements done for pecan controller which was merged into GBP master branch. These enhancements are to support submission of configurator and config orchestrator. These changes are primarily into the following directories. (1) gbpservice/nfp (2) gbpservice/neutron/tests/unit/nfp Change-Id: I03eef60b2c9afa57f0ca0635321fac28944b43fe Implements: blueprint gbp-network-services-framework Co-Authored-By: Akash Deep Co-Authored-By: ashutosh mishra (cherry picked from commit 7dc8e9d5ee4251a23e138db0b6398875c19bd999) (cherry picked from commit 54d761dee1108c5011b5fac5862aadc5125a7471) --- .../tests/unit/nfp/base_configurator/api/v1/__init__.py | 0 .../nfp/base_configurator/api/v1/controllers/__init__.py | 0 .../base_configurator/{api => controllers}/__init__.py | 0 .../{api/v1 => }/controllers/test_controller.py | 3 ++- .../nfp/base_configurator/controllers/controller.py | 5 ++--- gbpservice/nfp/common/constants.py | 2 ++ gbpservice/nfp/pecan/api/config.py | 7 +++++++ gbpservice/nfp/pecan/api/root_controller.py | 2 ++ .../nfp/{base_configurator => pecan}/base_controller.py | 0 gbpservice/nfp/pecan/constants.py | 8 ++++++-- 10 files changed, 21 insertions(+), 6 deletions(-) delete mode 100644 gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/__init__.py delete mode 100644 gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/__init__.py rename gbpservice/neutron/tests/unit/nfp/base_configurator/{api => controllers}/__init__.py (100%) rename gbpservice/neutron/tests/unit/nfp/base_configurator/{api/v1 => }/controllers/test_controller.py (98%) rename gbpservice/nfp/{base_configurator => pecan}/base_controller.py (100%) diff --git a/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/__init__.py b/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/__init__.py b/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/gbpservice/neutron/tests/unit/nfp/base_configurator/api/__init__.py b/gbpservice/neutron/tests/unit/nfp/base_configurator/controllers/__init__.py similarity index 100% rename from gbpservice/neutron/tests/unit/nfp/base_configurator/api/__init__.py rename to gbpservice/neutron/tests/unit/nfp/base_configurator/controllers/__init__.py diff --git a/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/test_controller.py b/gbpservice/neutron/tests/unit/nfp/base_configurator/controllers/test_controller.py similarity index 98% rename from gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/test_controller.py rename to gbpservice/neutron/tests/unit/nfp/base_configurator/controllers/test_controller.py index e99b6584b..c0b7ee9e7 100644 --- a/gbpservice/neutron/tests/unit/nfp/base_configurator/api/v1/controllers/test_controller.py +++ b/gbpservice/neutron/tests/unit/nfp/base_configurator/controllers/test_controller.py @@ -23,7 +23,6 @@ from gbpservice.nfp.pecan import constants setattr(pecan, 'mode', constants.base) -from gbpservice.nfp.pecan.api import root_controller ERROR = 'error' UNHANDLED = 'unhandled' @@ -49,6 +48,8 @@ class ControllerTestCase(base.BaseTestCase, rest.RestController): test cases before execution of each test case. """ super(ControllerTestCase, self).setUp() + from gbpservice.nfp.pecan.api import root_controller + reload(root_controller) RootController = root_controller.RootController() self.app = webtest.TestApp(pecan.make_app(RootController)) self.data = {'info': {'service_type': 'firewall', diff --git a/gbpservice/nfp/base_configurator/controllers/controller.py b/gbpservice/nfp/base_configurator/controllers/controller.py index 98683516b..d472e625e 100644 --- a/gbpservice/nfp/base_configurator/controllers/controller.py +++ b/gbpservice/nfp/base_configurator/controllers/controller.py @@ -18,9 +18,8 @@ import requests import subprocess import time -from gbpservice.nfp.base_configurator import base_controller +from gbpservice.nfp.pecan import base_controller -BaseController = base_controller.BaseController LOG = logging.getLogger(__name__) TOPIC = 'configurator' NFP_SERVICE_LIST = ['heat', 'ansible'] @@ -32,7 +31,7 @@ notifications = [] cache_ips = set() -class Controller(BaseController): +class Controller(base_controller.BaseController): """Implements all the APIs Invoked by HTTP requests. diff --git a/gbpservice/nfp/common/constants.py b/gbpservice/nfp/common/constants.py index 73b2a4015..e244479b2 100644 --- a/gbpservice/nfp/common/constants.py +++ b/gbpservice/nfp/common/constants.py @@ -68,6 +68,8 @@ CONFIG_TAG_RESOURCE_MAP = { CUSTOM_JSON: 'custom_json'} LOADBALANCER_RPC_API_VERSION = "2.0" +LOADBALANCERV2_RPC_API_VERSION = "1.0" + HEALTHMONITOR_RESOURCE = 'healthmonitor' INTERFACE_RESOURCE = 'interfaces' ROUTES_RESOURCE = 'routes' diff --git a/gbpservice/nfp/pecan/api/config.py b/gbpservice/nfp/pecan/api/config.py index 0cab883dc..cb09110a3 100644 --- a/gbpservice/nfp/pecan/api/config.py +++ b/gbpservice/nfp/pecan/api/config.py @@ -59,3 +59,10 @@ logging = { } } } +cloud_services = [ + {'service_name': 'configurator', + 'topic': 'configurator', + 'reporting_interval': '10', # in seconds + 'apis': ['CONFIGURATION'] + } +] diff --git a/gbpservice/nfp/pecan/api/root_controller.py b/gbpservice/nfp/pecan/api/root_controller.py index 588c91d4e..6b4ce0990 100644 --- a/gbpservice/nfp/pecan/api/root_controller.py +++ b/gbpservice/nfp/pecan/api/root_controller.py @@ -35,6 +35,8 @@ class RootController(object): v1 = _controllers[constants.BASE_CONTROLLER].V1Controller() elif pecan.mode == constants.base_with_vm: v1 = _controllers[constants.REFERENCE_CONTROLLER].V1Controller() + elif pecan.mode == constants.advanced: + v1 = _controllers[constants.ADVANCED_CONTROLLER].V1Controller() @pecan.expose() def get(self): diff --git a/gbpservice/nfp/base_configurator/base_controller.py b/gbpservice/nfp/pecan/base_controller.py similarity index 100% rename from gbpservice/nfp/base_configurator/base_controller.py rename to gbpservice/nfp/pecan/base_controller.py diff --git a/gbpservice/nfp/pecan/constants.py b/gbpservice/nfp/pecan/constants.py index e7b9f3f37..b04b622ed 100644 --- a/gbpservice/nfp/pecan/constants.py +++ b/gbpservice/nfp/pecan/constants.py @@ -13,14 +13,18 @@ BASE_CONTROLLER = 'base_controller' REFERENCE_CONTROLLER = 'reference_controller' +ADVANCED_CONTROLLER = 'advanced_controller' controllers = { BASE_CONTROLLER: 'gbpservice.nfp.base_configurator.controllers', REFERENCE_CONTROLLER: ('gbpservice.tests.contrib' - '.nfp_service.reference_configurator.controllers') + '.nfp_service.reference_configurator.controllers'), + ADVANCED_CONTROLLER: ('gbpservice.contrib.nfp.configurator' + '.advanced_controller.controller_loader') } base_with_vm = 'base_with_vm' base = 'base' -modes = [base, base_with_vm] +advanced = 'advanced' +modes = [base, base_with_vm, advanced]