diff --git a/neutron/plugins/ml2/drivers/type_tunnel.py b/neutron/plugins/ml2/drivers/type_tunnel.py index e209029b965..fbc7110eae9 100644 --- a/neutron/plugins/ml2/drivers/type_tunnel.py +++ b/neutron/plugins/ml2/drivers/type_tunnel.py @@ -87,9 +87,9 @@ class TunnelTypeDriver(api.TypeDriver): class TunnelRpcCallbackMixin(object): - def __init__(self, notifier, type_manager): - self.notifier = notifier - self.type_manager = type_manager + def setup_tunnel_callback_mixin(self, notifier, type_manager): + self._notifier = notifier + self._type_manager = type_manager def tunnel_sync(self, rpc_context, **kwargs): """Update new tunnel. @@ -102,14 +102,14 @@ class TunnelRpcCallbackMixin(object): if not tunnel_type: msg = _("Network_type value needed by the ML2 plugin") raise exc.InvalidInput(error_message=msg) - driver = self.type_manager.drivers.get(tunnel_type) + driver = self._type_manager.drivers.get(tunnel_type) if driver: tunnel = driver.obj.add_endpoint(tunnel_ip) tunnels = driver.obj.get_endpoints() entry = {'tunnels': tunnels} # Notify all other listening agents - self.notifier.tunnel_update(rpc_context, tunnel.ip_address, - tunnel_type) + self._notifier.tunnel_update(rpc_context, tunnel.ip_address, + tunnel_type) # Return the list of tunnels IP's to the agent return entry else: diff --git a/neutron/plugins/ml2/rpc.py b/neutron/plugins/ml2/rpc.py index d58751c94d2..d8226aa7af6 100644 --- a/neutron/plugins/ml2/rpc.py +++ b/neutron/plugins/ml2/rpc.py @@ -13,8 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -from oslo import messaging - from neutron.agent import securitygroups_rpc as sg_rpc from neutron.common import constants as q_const from neutron.common import rpc as n_rpc @@ -37,7 +35,8 @@ TAP_DEVICE_PREFIX = 'tap' TAP_DEVICE_PREFIX_LENGTH = 3 -class RpcCallbacks(dhcp_rpc_base.DhcpRpcCallbackMixin, +class RpcCallbacks(n_rpc.RpcCallback, + dhcp_rpc_base.DhcpRpcCallbackMixin, sg_db_rpc.SecurityGroupServerRpcCallbackMixin, type_tunnel.TunnelRpcCallbackMixin): @@ -46,16 +45,9 @@ class RpcCallbacks(dhcp_rpc_base.DhcpRpcCallbackMixin, # 1.0 Initial version (from openvswitch/linuxbridge) # 1.1 Support Security Group RPC - # FIXME(ihrachys): we can't use n_rpc.RpcCallback here due to - # inheritance problems - target = messaging.Target(version=RPC_API_VERSION) - def __init__(self, notifier, type_manager): - # REVISIT(kmestery): This depends on the first three super classes - # not having their own __init__ functions. If an __init__() is added - # to one, this could break. Fix this and add a unit test to cover this - # test in H3. - super(RpcCallbacks, self).__init__(notifier, type_manager) + self.setup_tunnel_callback_mixin(notifier, type_manager) + super(RpcCallbacks, self).__init__() @classmethod def _device_to_port_id(cls, device):