Example #1
0
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
Example #2
0
    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)
Example #3
0
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)
Example #6
0
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
Example #7
0
 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)