From 829c31cede4d7560b92a9dc9a9d1cc01b250717d Mon Sep 17 00:00:00 2001 From: mak-454 Date: Mon, 8 Aug 2016 19:49:47 +0530 Subject: [PATCH] changes to make configurator independent of neutron dependencies --- .../advanced_controller/controller.py | 5 +-- .../configurator/agents/loadbalancer_v1.py | 11 ++++- .../contrib/nfp/configurator/lib/rpc.py | 44 +++++++++++++++++++ .../nfp/configurator/modules/configurator.py | 2 +- 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 gbpservice/contrib/nfp/configurator/lib/rpc.py diff --git a/gbpservice/contrib/nfp/configurator/advanced_controller/controller.py b/gbpservice/contrib/nfp/configurator/advanced_controller/controller.py index db58f496aa..64907b8ea2 100644 --- a/gbpservice/contrib/nfp/configurator/advanced_controller/controller.py +++ b/gbpservice/contrib/nfp/configurator/advanced_controller/controller.py @@ -12,16 +12,15 @@ import oslo_serialization.jsonutils as jsonutils -from neutron.common import rpc as n_rpc from oslo_config import cfg from oslo_log import log as logging import oslo_messaging import pecan from gbpservice.nfp.pecan import base_controller +from gbpservice.nfp.core import rpc LOG = logging.getLogger(__name__) -n_rpc.init(cfg.CONF) class Controller(base_controller.BaseController): @@ -212,7 +211,7 @@ def __init__(self, topic): target = oslo_messaging.Target( topic=self.topic, version=self.API_VERSION) - self.client = n_rpc.get_client(target) + self.client = rpc.get_client(target) def call(self, method_name): """Method for sending call request on behalf of REST Controller. diff --git a/gbpservice/contrib/nfp/configurator/agents/loadbalancer_v1.py b/gbpservice/contrib/nfp/configurator/agents/loadbalancer_v1.py index 7246288199..b608f86503 100644 --- a/gbpservice/contrib/nfp/configurator/agents/loadbalancer_v1.py +++ b/gbpservice/contrib/nfp/configurator/agents/loadbalancer_v1.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from neutron import context from gbpservice.contrib.nfp.configurator.agents import agent_base from gbpservice.contrib.nfp.configurator.lib import data_filter @@ -406,7 +405,15 @@ def __init__(self, sc, drivers, rpcmgr): poll event like collect_stats() does not have context, creating context here, but should get rid of this in future. """ - self.context = context.get_admin_context_without_session() + """(mak) + Configurator will pass empty context. + Proxy agent will check if there is no context in response, + will get the admin context without session and does the + required rpc. + """ + + # self.context = context.get_admin_context_without_session() + self.context = {} def _get_driver(self, service_vendor): """Retrieves service driver instance based on service type diff --git a/gbpservice/contrib/nfp/configurator/lib/rpc.py b/gbpservice/contrib/nfp/configurator/lib/rpc.py new file mode 100644 index 0000000000..7316835b3b --- /dev/null +++ b/gbpservice/contrib/nfp/configurator/lib/rpc.py @@ -0,0 +1,44 @@ +import oslo_messaging +from oslo_service import service as oslo_service +from oslo_config import cfg as oslo_config + +from gbpservice.nfp.core import log as nfp_logging + +CONF = oslo_config.CONF +TRANSPORT = oslo_messaging.get_transport(CONF) + +LOG = nfp_logging.getLogger(__name__) + +def get_client(topic): + target = oslo_messaging.Target(topic=topic) + return oslo_messaging.RPCClient(TRANSPORT, target) + + +class RpcAgent(oslo_service.Service): + def __init__(self, host=None, topic=None, manager=None): + super(RpcAgent, self).__init__() + self.host = host + self.topic = topic + self.manager = manager + self.rpc_server = None + + def start(self): + super(RpcAgent, self).start() + target = oslo_messaging.Target( + topic=self.topic, + server=self.host) + server = oslo_messaging.get_rpc_server( + TRANSPORT, target, [self.manager], + 'eventlet') + server.start() + self.rpc_server = server + + + def stop(self): + try: + self.rpc_server.stop() + self.rpc_server.wait() + except Exception as exc: + LOG.error("Exception - %s" %(str(exc)) + + super(RPCAgent, self).stop() diff --git a/gbpservice/contrib/nfp/configurator/modules/configurator.py b/gbpservice/contrib/nfp/configurator/modules/configurator.py index d50528b99c..440c748f18 100644 --- a/gbpservice/contrib/nfp/configurator/modules/configurator.py +++ b/gbpservice/contrib/nfp/configurator/modules/configurator.py @@ -409,7 +409,7 @@ def init_rpc(sc, cm, conf, demuxer): # Initializes RPC client rpc_mgr = ConfiguratorRpcManager(sc, cm, conf, demuxer) - configurator_agent = rpc.RpcAgent(sc, + configurator_agent = rpc.RpcAgent( topic=const.CONFIGURATOR_RPC_TOPIC, manager=rpc_mgr)