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()
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)
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])
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)
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)