Merge "Use @registry.receives in neutron.services.trunk"
This commit is contained in:
commit
db2eeb9d88
@ -21,6 +21,7 @@ from neutron.services.trunk import constants as trunk_consts
|
||||
from neutron.services.trunk.rpc import backend
|
||||
|
||||
|
||||
@registry.has_registry_receivers
|
||||
class DriverBase(object):
|
||||
|
||||
def __init__(self, name, interfaces, segmentation_types,
|
||||
@ -40,9 +41,6 @@ class DriverBase(object):
|
||||
self.segmentation_types = segmentation_types
|
||||
self.agent_type = agent_type
|
||||
self.can_trunk_bound_port = can_trunk_bound_port
|
||||
registry.subscribe(self.register,
|
||||
trunk_consts.TRUNK_PLUGIN,
|
||||
events.AFTER_INIT)
|
||||
|
||||
@abc.abstractproperty
|
||||
def is_loaded(self):
|
||||
@ -62,6 +60,7 @@ class DriverBase(object):
|
||||
"""True if the driver is compatible with the agent type."""
|
||||
return agent_type == self.agent_type
|
||||
|
||||
@registry.receives(trunk_consts.TRUNK_PLUGIN, [events.AFTER_INIT])
|
||||
def register(self, resource, event, trigger, **kwargs):
|
||||
"""Register the trunk driver.
|
||||
|
||||
|
@ -34,6 +34,7 @@ def init_handler(resource, event, trigger, agent=None):
|
||||
LinuxBridgeTrunkDriver()
|
||||
|
||||
|
||||
@registry.has_registry_receivers
|
||||
class LinuxBridgeTrunkDriver(trunk_rpc.TrunkSkeleton):
|
||||
"""Driver responsible for handling trunk/subport/port events.
|
||||
|
||||
@ -45,12 +46,6 @@ class LinuxBridgeTrunkDriver(trunk_rpc.TrunkSkeleton):
|
||||
def __init__(self, plumber=None, trunk_api=None):
|
||||
self._plumber = plumber or trunk_plumber.Plumber()
|
||||
self._tapi = trunk_api or _TrunkAPI(trunk_rpc.TrunkStub())
|
||||
registry.subscribe(self.agent_port_change,
|
||||
local_resources.PORT_DEVICE,
|
||||
local_events.AFTER_UPDATE)
|
||||
registry.subscribe(self.agent_port_delete,
|
||||
local_resources.PORT_DEVICE,
|
||||
local_events.AFTER_DELETE)
|
||||
super(LinuxBridgeTrunkDriver, self).__init__()
|
||||
|
||||
def handle_trunks(self, context, resource_type, trunks, event_type):
|
||||
@ -79,6 +74,8 @@ class LinuxBridgeTrunkDriver(trunk_rpc.TrunkSkeleton):
|
||||
continue
|
||||
self.wire_trunk(context, trunk)
|
||||
|
||||
@registry.receives(local_resources.PORT_DEVICE,
|
||||
[local_events.AFTER_DELETE])
|
||||
def agent_port_delete(self, resource, event, trigger, context, port_id,
|
||||
**kwargs):
|
||||
"""Agent informed us a VIF was removed."""
|
||||
@ -88,6 +85,8 @@ class LinuxBridgeTrunkDriver(trunk_rpc.TrunkSkeleton):
|
||||
# don't want to race with another agent that the trunk may have been
|
||||
# moved to.
|
||||
|
||||
@registry.receives(local_resources.PORT_DEVICE,
|
||||
[local_events.AFTER_UPDATE])
|
||||
def agent_port_change(self, resource, event, trigger, context,
|
||||
device_details, **kwargs):
|
||||
"""The agent hath informed us thusly of a port update or create."""
|
||||
|
@ -108,6 +108,7 @@ def bridge_has_service_port(bridge):
|
||||
return bridge_has_port(bridge, is_trunk_service_port)
|
||||
|
||||
|
||||
@registry.has_registry_receivers
|
||||
class OVSDBHandler(object):
|
||||
"""It listens to OVSDB events to create the physical resources associated
|
||||
to a logical trunk in response to OVSDB events (such as VM boot and/or
|
||||
@ -120,15 +121,12 @@ class OVSDBHandler(object):
|
||||
self.trunk_manager = trunk_manager
|
||||
self.trunk_rpc = agent.TrunkStub()
|
||||
|
||||
registry.subscribe(self.process_trunk_port_events,
|
||||
ovs_agent_constants.OVSDB_RESOURCE,
|
||||
events.AFTER_READ)
|
||||
|
||||
@property
|
||||
def context(self):
|
||||
self._context.request_id = o_context.generate_request_id()
|
||||
return self._context
|
||||
|
||||
@registry.receives(ovs_agent_constants.OVSDB_RESOURCE, [events.AFTER_READ])
|
||||
def process_trunk_port_events(
|
||||
self, resource, event, trigger, ovsdb_events):
|
||||
"""Process added and removed port events coming from OVSDB monitor."""
|
||||
|
@ -60,6 +60,7 @@ def _extend_port_trunk_details(core_plugin, port_res, port_db):
|
||||
return port_res
|
||||
|
||||
|
||||
@registry.has_registry_receivers
|
||||
class TrunkPlugin(service_base.ServicePluginBase,
|
||||
common_db_mixin.CommonDbMixin):
|
||||
|
||||
@ -79,11 +80,6 @@ class TrunkPlugin(service_base.ServicePluginBase,
|
||||
drivers.register()
|
||||
registry.subscribe(rules.enforce_port_deletion_rules,
|
||||
resources.PORT, events.BEFORE_DELETE)
|
||||
# NOTE(tidwellr) Consider keying off of PRECOMMIT_UPDATE if we find
|
||||
# AFTER_UPDATE to be problematic for setting trunk status when a
|
||||
# a parent port becomes unbound.
|
||||
registry.subscribe(self._trigger_trunk_status_change,
|
||||
resources.PORT, events.AFTER_UPDATE)
|
||||
registry.notify(constants.TRUNK_PLUGIN, events.AFTER_INIT, self)
|
||||
for driver in self._drivers:
|
||||
LOG.debug('Trunk plugin loaded with driver %s', driver.name)
|
||||
@ -396,6 +392,10 @@ class TrunkPlugin(service_base.ServicePluginBase,
|
||||
|
||||
return obj
|
||||
|
||||
# NOTE(tidwellr) Consider keying off of PRECOMMIT_UPDATE if we find
|
||||
# AFTER_UPDATE to be problematic for setting trunk status when a
|
||||
# a parent port becomes unbound.
|
||||
@registry.receives(resources.PORT, [events.AFTER_UPDATE])
|
||||
def _trigger_trunk_status_change(self, resource, event, trigger, **kwargs):
|
||||
updated_port = kwargs['port']
|
||||
trunk_details = updated_port.get('trunk_details')
|
||||
|
@ -22,6 +22,7 @@ from neutron.services.trunk.rpc import server
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@registry.has_registry_receivers
|
||||
class ServerSideRpcBackend(object):
|
||||
"""The Neutron Server RPC backend."""
|
||||
|
||||
@ -30,19 +31,16 @@ class ServerSideRpcBackend(object):
|
||||
self._skeleton = server.TrunkSkeleton()
|
||||
self._stub = server.TrunkStub()
|
||||
|
||||
# Set up listeners to trunk events: they dispatch RPC messages
|
||||
# to agents as needed. These are designed to work with any
|
||||
# agent-based driver that may integrate with the trunk service
|
||||
# plugin, e.g. linux bridge or ovs.
|
||||
for event in (events.AFTER_CREATE, events.AFTER_DELETE):
|
||||
registry.subscribe(self.process_event,
|
||||
trunk_consts.TRUNK,
|
||||
event)
|
||||
registry.subscribe(self.process_event,
|
||||
trunk_consts.SUBPORTS,
|
||||
event)
|
||||
LOG.debug("RPC backend initialized for trunk plugin")
|
||||
|
||||
# Set up listeners to trunk events: they dispatch RPC messages
|
||||
# to agents as needed. These are designed to work with any
|
||||
# agent-based driver that may integrate with the trunk service
|
||||
# plugin, e.g. linux bridge or ovs.
|
||||
@registry.receives(trunk_consts.TRUNK,
|
||||
[events.AFTER_CREATE, events.AFTER_DELETE])
|
||||
@registry.receives(trunk_consts.SUBPORTS,
|
||||
[events.AFTER_CREATE, events.AFTER_DELETE])
|
||||
def process_event(self, resource, event, trunk_plugin, payload):
|
||||
"""Emit RPC notifications to registered subscribers."""
|
||||
context = payload.context
|
||||
|
Loading…
x
Reference in New Issue
Block a user