def _make_vif_network(neutron_port, subnets): """Gets a os-vif Network object for port. :param neutron_port: dict containing port information as returned by neutron client's 'show_port' :param subnets: subnet mapping as returned by PodSubnetsDriver.get_subnets :return: os-vif Network object """ try: network = next(net.obj_clone() for net in subnets.values() if net.id == neutron_port.get('network_id')) except StopIteration: raise k_exc.IntegrityError( _LE("Port %(port_id)s belongs to network %(network_id)s, " "but requested networks are: %(requested_networks)s") % { 'port_id': neutron_port.get('id'), 'network_id': neutron_port.get('network_id'), 'requested_networks': [net.id for net in subnets.values()] }) network.subnets = osv_subnet.SubnetList( objects=_make_vif_subnets(neutron_port, subnets)) return network
def test_get_pod_subnet(self): subnet_id = mock.sentinel.subnet_id project_id = mock.sentinel.project_id target_ref = { 'kind': k_const.K8S_OBJ_POD, 'name': 'pod-name', 'namespace': 'default' } ip = '1.2.3.4' m_handler = mock.Mock(spec=h_lbaas.LoadBalancerHandler) m_drv_pod_project = mock.Mock() m_drv_pod_project.get_project.return_value = project_id m_handler._drv_pod_project = m_drv_pod_project m_drv_pod_subnets = mock.Mock() m_drv_pod_subnets.get_subnets.return_value = { subnet_id: osv_network.Network(subnets=osv_subnet.SubnetList( objects=[osv_subnet.Subnet(cidr='1.2.3.0/24')])) } m_handler._drv_pod_subnets = m_drv_pod_subnets observed_subnet_id = h_lbaas.LoadBalancerHandler._get_pod_subnet( m_handler, target_ref, ip) self.assertEqual(subnet_id, observed_subnet_id)
def _make_vif_network(neutron_port, subnets): """Get an os-vif Network object for port. :param neutron_port: dict containing port information as returned by neutron client's 'show_port', or openstack.network.v2.port.Port object :param subnets: subnet mapping as returned by PodSubnetsDriver.get_subnets :return: os-vif Network object """ # NOTE(gryf): Because we didn't convert macvlan driver, neutron_port can # be either a dict or an object try: network_id = neutron_port.get('network_id') port_id = neutron_port.get('id') except TypeError: network_id = neutron_port.network_id port_id = neutron_port.id try: network = next(net.obj_clone() for net in subnets.values() if net.id == network_id) except StopIteration: raise k_exc.IntegrityError( _("Port %(port_id)s belongs to network %(network_id)s, " "but requested networks are: %(requested_networks)s") % { 'port_id': port_id, 'network_id': network_id, 'requested_networks': [net.id for net in subnets.values()] }) network.subnets = osv_subnet.SubnetList( objects=_make_vif_subnets(neutron_port, subnets)) return network
def test_osvif_to_neutron_fixed_ips(self): ip11 = '1.1.1.1' ip12 = '2.2.2.2' ip3 = '3.3.3.3' subnet_id_1 = uuidutils.generate_uuid() subnet_id_2 = uuidutils.generate_uuid() subnet_id_3 = uuidutils.generate_uuid() subnet_1 = osv_subnet.Subnet(ips=osv_fixed_ip.FixedIPList(objects=[ osv_fixed_ip.FixedIP(address=ip11), osv_fixed_ip.FixedIP(address=ip12) ])) subnet_2 = osv_subnet.Subnet() subnet_3 = osv_subnet.Subnet(ips=osv_fixed_ip.FixedIPList( objects=[osv_fixed_ip.FixedIP(address=ip3)])) net1 = osv_network.Network(subnets=osv_subnet.SubnetList( objects=[subnet_1])) net2 = osv_network.Network(subnets=osv_subnet.SubnetList( objects=[subnet_2])) net3 = osv_network.Network(subnets=osv_subnet.SubnetList( objects=[subnet_3])) subnets = {subnet_id_1: net1, subnet_id_2: net2, subnet_id_3: net3} expected = [{ 'subnet_id': subnet_id_1, 'ip_address': ip11 }, { 'subnet_id': subnet_id_1, 'ip_address': ip12 }, { 'subnet_id': subnet_id_2 }, { 'subnet_id': subnet_id_3, 'ip_address': ip3 }] ret = ovu.osvif_to_neutron_fixed_ips(subnets) def _sort_key(e): return (e.get('subnet_id'), e.get('ip_address')) self.assertEqual(sorted(expected, key=_sort_key), sorted(ret, key=_sort_key))
def test_osvif_to_neutron_fixed_ips_invalid(self): subnet_id = uuidutils.generate_uuid() subnet_1 = osv_subnet.Subnet() subnet_2 = osv_subnet.Subnet() net = osv_network.Network(subnets=osv_subnet.SubnetList( objects=[subnet_1, subnet_2])) subnets = {subnet_id: net} self.assertRaises(k_exc.IntegrityError, ovu.osvif_to_neutron_fixed_ips, subnets)
def _make_vif_network(neutron_port, network, subnets): """Get an os-vif Network object for port. :param neutron_port: dict containing port information as returned by neutron client's 'show_port' :param subnets: subnet mapping :return: os-vif Network object """ vif_network = _neutron_to_osvif_network(network) vif_network.subnets = osv_subnet.SubnetList( objects=_make_vif_subnets(neutron_port, subnets)) return vif_network
def _make_test_net_obj(self, cidr_list): subnets = [osv_subnet.Subnet(cidr=cidr) for cidr in cidr_list] subnets_list = osv_subnet.SubnetList(objects=subnets) return osv_network.Network(subnets=subnets_list)