diff --git a/neutron/api/rpc/handlers/dvr_rpc.py b/neutron/api/rpc/handlers/dvr_rpc.py index 5ac21015130..f4d0233a56c 100644 --- a/neutron/api/rpc/handlers/dvr_rpc.py +++ b/neutron/api/rpc/handlers/dvr_rpc.py @@ -14,6 +14,7 @@ # under the License. from neutron.common import log +from neutron.common import rpc as n_rpc from neutron.common import topics from neutron import manager from neutron.openstack.common import log as logging @@ -56,9 +57,14 @@ class DVRServerRpcApiMixin(object): version=self.DVR_RPC_VERSION) -class DVRServerRpcCallbackMixin(object): +class DVRServerRpcCallback(n_rpc.RpcCallback): """Plugin-side RPC (implementation) for agent-to-plugin interaction.""" + # History + # 1.0 Initial version + + RPC_API_VERSION = "1.0" + @property def plugin(self): if not getattr(self, '_plugin', None): @@ -68,14 +74,20 @@ class DVRServerRpcCallbackMixin(object): def get_dvr_mac_address_list(self, context): return self.plugin.get_dvr_mac_address_list(context) - def get_dvr_mac_address_by_host(self, context, host): + def get_dvr_mac_address_by_host(self, context, **kwargs): + host = kwargs.get('host') + LOG.debug("DVR Agent requests mac_address for host %s", host) return self.plugin.get_dvr_mac_address_by_host(context, host) - def get_ports_on_host_by_subnet(self, context, host, subnet): + def get_ports_on_host_by_subnet(self, context, **kwargs): + host = kwargs.get('host') + subnet = kwargs.get('subnet') + LOG.debug("DVR Agent requests list of VM ports on host %s", host) return self.plugin.get_ports_on_host_by_subnet(context, host, subnet) - def get_subnet_for_dvr(self, context, subnet): + def get_subnet_for_dvr(self, context, **kwargs): + subnet = kwargs.get('subnet') return self.plugin.get_subnet_for_dvr(context, subnet) diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index 66e77bb045f..cb57323544d 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -24,6 +24,7 @@ from sqlalchemy.orm import exc as sa_exc from neutron.agent import securitygroups_rpc as sg_rpc from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api from neutron.api.rpc.handlers import dhcp_rpc +from neutron.api.rpc.handlers import dvr_rpc from neutron.api.v2 import attributes from neutron.common import constants as const from neutron.common import exceptions as exc @@ -135,6 +136,7 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, def start_rpc_listeners(self): self.endpoints = [rpc.RpcCallbacks(self.notifier, self.type_manager), + dvr_rpc.DVRServerRpcCallback(), dhcp_rpc.DhcpRpcCallback(), agents_db.AgentExtRpcCallback()] self.topic = topics.PLUGIN diff --git a/neutron/plugins/ml2/rpc.py b/neutron/plugins/ml2/rpc.py index 8e77e309d26..6a1c647cde2 100644 --- a/neutron/plugins/ml2/rpc.py +++ b/neutron/plugins/ml2/rpc.py @@ -39,7 +39,6 @@ TAP_DEVICE_PREFIX_LENGTH = 3 class RpcCallbacks(n_rpc.RpcCallback, - dvr_rpc.DVRServerRpcCallbackMixin, sg_db_rpc.SecurityGroupServerRpcCallbackMixin, type_tunnel.TunnelRpcCallbackMixin): @@ -199,24 +198,6 @@ class RpcCallbacks(n_rpc.RpcCallback, except exceptions.PortNotFound: LOG.debug('Port %s not found during ARP update', port_id) - def get_dvr_mac_address_by_host(self, rpc_context, **kwargs): - host = kwargs.get('host') - LOG.debug("DVR Agent requests mac_address for host %s", host) - return super(RpcCallbacks, self).get_dvr_mac_address_by_host( - rpc_context, host) - - def get_ports_on_host_by_subnet(self, rpc_context, **kwargs): - host = kwargs.get('host') - subnet = kwargs.get('subnet') - LOG.debug("DVR Agent requests list of VM ports on host %s", host) - return super(RpcCallbacks, self).get_ports_on_host_by_subnet( - rpc_context, host, subnet) - - def get_subnet_for_dvr(self, rpc_context, **kwargs): - subnet = kwargs.get('subnet') - return super(RpcCallbacks, self).get_subnet_for_dvr(rpc_context, - subnet) - class AgentNotifierApi(n_rpc.RpcProxy, dvr_rpc.DVRAgentRpcApiMixin,