From ac789d8c1a3bc20c94144f7347cafc00e4181b07 Mon Sep 17 00:00:00 2001 From: Yoshihiro Kaneko Date: Wed, 22 Aug 2012 04:19:58 +0000 Subject: [PATCH] Add DHCP RPC API support to Ryu plugin It is necessary to add DHCP RPC API support to Ryu plugin to use DHCP with Ryu plugin. Fixes bug 1040398 Change-Id: I00caf6f36025a21d10b8a96c5f7272d12393c277 Signed-off-by: Yoshihiro Kaneko --- quantum/plugins/ryu/ryu_quantum_plugin.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/quantum/plugins/ryu/ryu_quantum_plugin.py b/quantum/plugins/ryu/ryu_quantum_plugin.py index 07dd6107b..a46b8ff44 100644 --- a/quantum/plugins/ryu/ryu_quantum_plugin.py +++ b/quantum/plugins/ryu/ryu_quantum_plugin.py @@ -22,13 +22,17 @@ from ryu.app import client from ryu.app import rest_nw_id from quantum.common import exceptions as q_exc +from quantum.common import topics from quantum.db import api as db from quantum.db import db_base_plugin_v2 from quantum.db import models_v2 +from quantum.db.dhcp_rpc_base import DhcpRpcCallbackMixin from quantum.openstack.common import cfg -from quantum.plugins.ryu.db import api_v2 as db_api_v2 +from quantum.openstack.common import rpc +from quantum.openstack.common.rpc import dispatcher from quantum.plugins.ryu import ofp_service_type from quantum.plugins.ryu.common import config +from quantum.plugins.ryu.db import api_v2 as db_api_v2 LOG = logging.getLogger(__name__) @@ -53,10 +57,18 @@ class RyuQuantumPluginV2(db_base_plugin_v2.QuantumDbPluginV2): self.client = client.OFPClient(ofp_api_host) self.client.update_network(rest_nw_id.NW_ID_EXTERNAL) + self._setup_rpc() # register known all network list on startup self._create_all_tenant_network() + def _setup_rpc(self): + self.conn = rpc.create_connection(new=True) + self.callback = DhcpRpcCallbackMixin() + self.dispatcher = dispatcher.RpcDispatcher([self.callback]) + self.conn.create_consumer(topics.PLUGIN, self.dispatcher, fanout=False) + self.conn.consume_in_thread() + def _create_all_tenant_network(self): networks = db_api_v2.network_all_tenant_list() for net in networks: -- 2.45.2