Beispiel #1
0
    def test_bind_port_from_mech_driver_v2_with_vhostuser(self):
        given_client = self.mock_client('vhostuser_topology.json')
        self.mock_get_addresses_by_name(['127.0.0.1', '192.168.66.1'])
        given_network_topology = network_topology.NetworkTopologyManager(
            vif_details={'some': 'detail'},
            client=given_client)
        self.patch(
            network_topology, 'NetworkTopologyManager',
            return_value=given_network_topology)

        given_driver = mech_driver_v2.OpenDaylightMechanismDriver()
        given_driver._network_topology = given_network_topology
        given_port_context = self.given_port_context()

        given_driver.initialize()
        # when port is bound
        given_driver.bind_port(given_port_context)

        expected_vif_details = {
            'vhostuser_socket': '/var/run/openvswitch/vhuCURRENT_CON',
            'vhostuser_ovs_plug': True,
            'some': 'detail',
            'vhostuser_mode': 'client'}

        # then context binding is setup with returned vif_type and valid
        # segment api ID
        given_port_context.set_binding.assert_called_once_with(
            self.valid_segment[api.ID],
            portbindings.VIF_TYPE_VHOST_USER,
            expected_vif_details, status=n_constants.PORT_STATUS_ACTIVE)
    def test_fetch_elements_by_host_with_no_entry(self,
                                                  network_topology_logger,
                                                  cache_logger):
        given_client = self.mock_client('ovs_topology.json')
        self.mock_get_addresses_by_name(['127.0.0.1', '192.168.0.1'])
        given_network_topology = network_topology.NetworkTopologyManager(
            client=given_client)

        try:
            next(
                given_network_topology._fetch_elements_by_host(
                    'some_host_name'))
        except ValueError as error:
            cache_logger.warning.assert_called_once_with(
                'Error fetching values for keys: %r',
                "'some_host_name', '127.0.0.1', '192.168.0.1'",
                exc_info=(ValueError, error, mock.ANY))
            network_topology_logger.exception.assert_called_once_with(
                'No such network topology elements for given host '
                '%(host_name)r and given IPs: %(ip_addresses)s.', {
                    'ip_addresses': '127.0.0.1, 192.168.0.1',
                    'host_name': 'some_host_name'
                })
        else:
            self.fail('Expected ValueError being raised.')
    def test_fetch_elements_with_vhost_user_entry(self):
        given_client = self.mock_client('vhostuser_topology.json')
        self.mock_get_addresses_by_name(['127.0.0.1', '192.168.66.1'])
        given_network_topology = network_topology.NetworkTopologyManager(
            client=given_client)

        elements = given_network_topology._fetch_elements_by_host(
            'some_host_name.')

        self.assertEqual([{
            'class':
            'networking_odl.ml2.ovsdb_topology.OvsdbNetworkTopologyElement',
            'has_datapath_type_netdev':
            True,
            'host_addresses': ['192.168.66.1'],
            'support_vhost_user':
            True,
            'uuid':
            'c805d82d-a5d8-419d-bc89-6e3713ff9f6c',
            'valid_vif_types':
            [portbindings.VIF_TYPE_VHOST_USER, portbindings.VIF_TYPE_OVS],
            'port_prefix':
            'vhu',
            'vhostuser_socket_dir':
            '/var/run/openvswitch'
        }], [e.to_dict() for e in elements])
 def initialize(self):
     LOG.debug("Initializing OpenDaylight ML2 driver")
     cfg.CONF.register_opts(odl_conf.odl_opts, "ml2_odl")
     self.sg_handler = callback.OdlSecurityGroupsHandler(self)
     self.vif_details = {portbindings.CAP_PORT_FILTER: True}
     self.journal = journal.OpendaylightJournalThread()
     self._network_topology = network_topology.NetworkTopologyManager()
Beispiel #5
0
 def __init__(self):
     LOG.debug("Initializing OpenDaylight ML2 driver")
     self.client = odl_client.OpenDaylightRestClient.create_client()
     self.sec_handler = odl_call.OdlSecurityGroupsHandler(self)
     self.vif_details = {portbindings.CAP_PORT_FILTER: True}
     self._network_topology = network_topology.NetworkTopologyManager(
         vif_details=self.vif_details)
Beispiel #6
0
    def test_fetch_element_with_ovs_entry(self):
        given_client = self.mock_client('ovs_topology.json')
        self.mock_get_addresses_by_name(['127.0.0.1', '10.237.214.247'])
        given_network_topology = network_topology.NetworkTopologyManager(
            client=given_client)

        elements = given_network_topology._fetch_elements_by_host(
            'some_host_name.')

        self.assertEqual([
            {'class':
             'networking_odl.ml2.ovsdb_topology.OvsdbNetworkTopologyElement',
             'has_datapath_type_netdev': False,
             'host_addresses': ['10.237.214.247'],
             'support_vhost_user': False,
             'uuid': 'c4ad780f-8f91-4fa4-804e-dd16beb191e2',
             'valid_vif_types': [portbindings.VIF_TYPE_OVS]}],
            [e.to_dict() for e in elements])
Beispiel #7
0
    def test_bind_port_from_mech_driver_v2_with_ovs(self):
        given_client = self.mock_client('ovs_topology.json')
        self.mock_get_addresses_by_name(['127.0.0.1', '10.237.214.247'])
        given_network_topology = network_topology.NetworkTopologyManager(
            vif_details={'some': 'detail'}, client=given_client)

        given_driver = mech_driver_v2.OpenDaylightMechanismDriver()
        given_driver._network_topology = given_network_topology
        given_port_context = self.given_port_context()

        # when port is bound
        given_driver.bind_port(given_port_context)

        # then context binding is setup with returned vif_type and valid
        # segment api ID
        given_port_context.set_binding.assert_called_once_with(
            self.valid_segment[driver_api.ID],
            portbindings.VIF_TYPE_OVS, {'some': 'detail'},
            status=n_constants.PORT_STATUS_ACTIVE)
Beispiel #8
0
 def _mock_network_topology(self, given_topology, vif_details=None):
     self.mock_get_addresses_by_name(
         ['127.0.0.1', '10.237.214.247', '192.168.66.1'])
     return network_topology.NetworkTopologyManager(
         client=self.mock_client(given_topology),
         vif_details=vif_details)