Exemple #1
0
    def test__set_bridge_name_notify(self):
        def fake_callback(resource, event, trigger, payload=None):
            trigger('fake-br-name')

        def noop_callback(resource, event, trigger, payload=None):
            pass

        # hardcode callback to override bridge name
        registry.subscribe(fake_callback, a_const.OVS_BRIDGE_NAME,
                           events.BEFORE_READ)
        fake_vif_details = {}
        fake_agent = {'configurations': {'integration_bridge': 'fake-br'}}
        old_fake_agent = {'configurations': {}}
        self.driver._set_bridge_name('foo', fake_vif_details, fake_agent)
        # assert that callback value is used
        self.assertEqual(
            'fake-br-name',
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME, ''))
        # replace callback with noop
        registry.unsubscribe(fake_callback, a_const.OVS_BRIDGE_NAME,
                             events.BEFORE_READ)
        registry.subscribe(noop_callback, a_const.OVS_BRIDGE_NAME,
                           events.BEFORE_READ)
        fake_vif_details = {}
        self.driver._set_bridge_name('foo', fake_vif_details, fake_agent)
        # assert that agent config value is used
        self.assertEqual(
            'fake-br',
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME, ''))
        fake_vif_details = {}
        self.driver._set_bridge_name('foo', fake_vif_details, old_fake_agent)
        # assert that if agent does not supply integration_bridge bridge_name
        # is not set in vif:binding-details
        self.assertIsNone(
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME))
Exemple #2
0
def _add_segment_host_mapping_for_segment(resource,
                                          event,
                                          trigger,
                                          payload=None):
    context = payload.context
    segment = payload.latest_state
    if not context.session.is_active:
        # The session might be in partial rollback state, due to errors in
        # peer callback. In that case, there is no need to add the mapping.
        # Just return here.
        return

    if not segment.physical_network:
        return
    cp = directory.get_plugin()
    check_segment_for_agent = getattr(cp, 'check_segment_for_agent', None)
    if not check_user_configured_segment_plugin() or not hasattr(
            cp, 'get_agents') or not check_segment_for_agent:
        # not an agent-supporting plugin
        registry.unsubscribe(_add_segment_host_mapping_for_segment,
                             resources.SEGMENT, events.PRECOMMIT_CREATE)
        return
    hosts = {
        agent['host']
        for agent in cp.get_agents(context)
        if check_segment_for_agent(segment, agent)
    }
    map_segment_to_hosts(context, segment.id, hosts)
Exemple #3
0
def _add_segment_host_mapping_for_segment(resource, event, trigger,
                                          context, segment):
    if not context.session.is_active:
        # The session might be in partial rollback state, due to errors in
        # peer callback. In that case, there is no need to add the mapping.
        # Just return here.
        return

    if not segment.physical_network:
        return
    cp = directory.get_plugin()
    check_segment_for_agent = getattr(cp, 'check_segment_for_agent', None)
    if not hasattr(cp, 'get_agents') or not check_segment_for_agent:
        # not an agent-supporting plugin
        registry.unsubscribe(_add_segment_host_mapping_for_segment,
                             resources.SEGMENT, events.PRECOMMIT_CREATE)
        return
    hosts = {agent['host'] for agent in cp.get_agents(context)
             if check_segment_for_agent(segment, agent)}
    map_segment_to_hosts(context, segment.id, hosts)
Exemple #4
0
 def _unsubscribe_router_delete_callback(self):
     registry.unsubscribe(self._check_lb_service_on_router,
                          resources.ROUTER, events.BEFORE_DELETE)
     registry.unsubscribe(self._check_lb_service_on_router,
                          resources.ROUTER_GATEWAY, events.BEFORE_DELETE)
     registry.unsubscribe(self._check_lb_service_on_router_interface,
                          resources.ROUTER_INTERFACE, events.BEFORE_DELETE)
Exemple #5
0
 def _unsubscribe_router_delete_callback(self):
     registry.unsubscribe(self._check_lb_service_on_router,
                          resources.ROUTER, events.BEFORE_DELETE)
     registry.unsubscribe(self._check_lb_service_on_router,
                          resources.ROUTER_GATEWAY, events.BEFORE_DELETE)
     registry.unsubscribe(self._check_lb_service_on_router_interface,
                          resources.ROUTER_INTERFACE, events.BEFORE_DELETE)
Exemple #6
0
def _add_segment_host_mapping_for_segment(resource,
                                          event,
                                          trigger,
                                          payload=None):
    context = payload.context
    segment = payload.latest_state
    if not segment.physical_network:
        return
    cp = directory.get_plugin()
    check_segment_for_agent = getattr(cp, 'check_segment_for_agent', None)
    if not check_user_configured_segment_plugin() or not hasattr(
            cp, 'get_agents') or not check_segment_for_agent:
        # not an agent-supporting plugin
        registry.unsubscribe(_add_segment_host_mapping_for_segment,
                             resources.SEGMENT, events.PRECOMMIT_CREATE)
        return
    hosts = {
        agent['host']
        for agent in cp.get_agents(context)
        if check_segment_for_agent(segment, agent)
    }
    map_segment_to_hosts(context, segment.id, hosts)
    def test__set_bridge_name_notify(self):

        def fake_callback(resource, event, trigger, payload=None):
            trigger('fake-br-name')

        def noop_callback(resource, event, trigger, payload=None):
            pass

        # hardcode callback to override bridge name
        registry.subscribe(fake_callback, a_const.OVS_BRIDGE_NAME,
                           events.BEFORE_READ)
        fake_vif_details = {}
        fake_agent = {'configurations': {'integration_bridge': 'fake-br'}}
        old_fake_agent = {'configurations': {}}
        self.driver._set_bridge_name('foo', fake_vif_details, fake_agent)
        # assert that callback value is used
        self.assertEqual(
            'fake-br-name',
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME, ''))
        # replace callback with noop
        registry.unsubscribe(fake_callback, a_const.OVS_BRIDGE_NAME,
                           events.BEFORE_READ)
        registry.subscribe(noop_callback, a_const.OVS_BRIDGE_NAME,
                           events.BEFORE_READ)
        fake_vif_details = {}
        self.driver._set_bridge_name('foo', fake_vif_details, fake_agent)
        # assert that agent config value is used
        self.assertEqual(
            'fake-br',
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME, ''))
        fake_vif_details = {}
        self.driver._set_bridge_name('foo', fake_vif_details, old_fake_agent)
        # assert that if agent does not supply integration_bridge bridge_name
        # is not set in vif:binding-details
        self.assertIsNone(
            fake_vif_details.get(portbindings.VIF_DETAILS_BRIDGE_NAME))
Exemple #8
0
 def test_unsubscribe(self):
     registry.unsubscribe(my_callback, 'my-resource', 'my-event')
     self.callback_manager.unsubscribe.assert_called_with(
         my_callback, 'my-resource', 'my-event')
 def _unsubscribe_router_delete_callback(self):
     registry.unsubscribe(self._check_lb_service_on_router,
                          resources.ROUTER, events.BEFORE_DELETE)