]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add DHCP RPC API support to Ryu plugin
authorYoshihiro Kaneko <ykaneko0929@gmail.com>
Wed, 22 Aug 2012 04:19:58 +0000 (04:19 +0000)
committerYoshihiro Kaneko <ykaneko0929@gmail.com>
Thu, 23 Aug 2012 06:12:57 +0000 (15:12 +0900)
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 <ykaneko0929@gmail.com>
quantum/plugins/ryu/ryu_quantum_plugin.py

index 07dd6107bf1ad281d60174a8d88c52bd6736933e..a46b8ff44a617b0bf84d51410859cd5ae8ce5ed3 100644 (file)
@@ -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: