Esempio n. 1
0
def fake_inst_obj(context):
    inst = objects.Instance(
        context=context,
        id=1,
        user_id='fake_user',
        uuid='b65cee2f-8c69-4aeb-be2f-f79742548fc2',
        project_id='test',
        key_name="key",
        key_data="ssh-rsa AAAAB3Nzai....N3NtHw== someuser@somehost",
        host='test',
        launch_index=1,
        reservation_id='r-xxxxxxxx',
        user_data=ENCODE_USER_DATA_STRING,
        image_ref=7,
        vcpus=1,
        fixed_ips=[],
        root_device_name='/dev/sda1',
        hostname='test.patrondomain',
        display_name='my_displayname',
        metadata={},
        default_ephemeral_device=None,
        default_swap_device=None,
        system_metadata={})
    nwinfo = network_model.NetworkInfo([])
    inst.info_cache = objects.InstanceInfoCache(context=context,
                                                instance_uuid=inst.uuid,
                                                network_info=nwinfo)
    with mock.patch.object(inst, 'save'):
        inst.set_flavor(flavors.get_default_flavor())
    return inst
Esempio n. 2
0
 def test_get_floating_ips(self):
     vif = fake_network_cache_model.new_vif()
     vif['network']['subnets'][0]['ips'][0].add_floating_ip('192.168.1.1')
     ninfo = model.NetworkInfo([
         vif,
         fake_network_cache_model.new_vif({'address': 'bb:bb:bb:bb:bb:bb'})
     ])
     self.assertEqual(ninfo.floating_ips(), ['192.168.1.1'])
Esempio n. 3
0
 def setUp(self):
     super(TestNetworkModel, self).setUp()
     model = network_model.NetworkInfo()
     self.field = fields.Field(fields.NetworkModel())
     self.coerce_good_values = [(model, model), (model.json(), model)]
     self.coerce_bad_values = [[], 'foo']
     self.to_primitive_values = [(model, model.json())]
     self.from_primitive_values = [(model.json(), model)]
Esempio n. 4
0
 def setUp(self):
     super(TestUpdateInstanceCache, self).setUp()
     self.context = context.get_admin_context()
     self.instance = objects.Instance(uuid=FAKE_UUID)
     vifs = [network_model.VIF(id='super_vif')]
     self.nw_info = network_model.NetworkInfo(vifs)
     self.nw_json = fields.NetworkModel.to_primitive(self, 'network_info',
                                                     self.nw_info)
Esempio n. 5
0
 def test_update_nw_info_empty_list(self, db_mock, api_mock):
     api_mock._get_instance_nw_info.return_value = self.nw_info
     base_api.update_instance_cache_with_nw_info(api_mock, self.context,
                                             self.instance,
                                             network_model.NetworkInfo([]))
     self.assertFalse(api_mock._get_instance_nw_info.called)
     db_mock.assert_called_once_with(self.context, self.instance.uuid,
                                     {'network_info': '[]'})
Esempio n. 6
0
 def test_create_model(self):
     ninfo = model.NetworkInfo([
         fake_network_cache_model.new_vif(),
         fake_network_cache_model.new_vif({'address': 'bb:bb:bb:bb:bb:bb'})
     ])
     self.assertEqual(ninfo.fixed_ips(), [
         fake_network_cache_model.new_fixed_ip({'address': '10.10.0.2'}),
         fake_network_cache_model.new_fixed_ip({'address': '10.10.0.3'})
     ] * 4)
Esempio n. 7
0
    def _setup_injected_network_scenario(self,
                                         should_inject=True,
                                         use_ipv4=True,
                                         use_ipv6=False,
                                         gateway=True,
                                         dns=True,
                                         two_interfaces=False,
                                         libvirt_virt_type=None):
        """Check that netutils properly decides whether to inject based on
           whether the supplied subnet is static or dynamic.
        """
        network = fake_network_cache_model.new_network({'subnets': []})

        subnet_dict = {}
        if not gateway:
            subnet_dict['gateway'] = None

        if not dns:
            subnet_dict['dns'] = None

        if not should_inject:
            subnet_dict['dhcp_server'] = '10.10.0.1'

        if use_ipv4:
            network.add_subnet(
                fake_network_cache_model.new_subnet(subnet_dict))

        if should_inject and use_ipv6:
            gateway_ip = fake_network_cache_model.new_ip(
                dict(address='1234:567::1'))
            ip = fake_network_cache_model.new_ip(dict(address='1234:567::2'))
            ipv6_subnet_dict = dict(
                cidr='1234:567::/48',
                gateway=gateway_ip,
                dns=[
                    fake_network_cache_model.new_ip(
                        dict(address='2001:4860:4860::8888')),
                    fake_network_cache_model.new_ip(
                        dict(address='2001:4860:4860::8844'))
                ],
                ips=[ip])
            if not gateway:
                ipv6_subnet_dict['gateway'] = None
            network.add_subnet(
                fake_network_cache_model.new_subnet(ipv6_subnet_dict))

        # Behave as though CONF.flat_injected is True
        network['meta']['injected'] = True
        vif = fake_network_cache_model.new_vif({'network': network})
        vifs = [vif]
        if two_interfaces:
            vifs.append(vif)

        nwinfo = model.NetworkInfo(vifs)
        return netutils.get_injected_network_template(
            nwinfo, use_ipv6=use_ipv6, libvirt_virt_type=libvirt_virt_type)
Esempio n. 8
0
def bandwidth_usage(instance_ref, audit_start,
        ignore_missing_network_data=True):
    """Get bandwidth usage information for the instance for the
    specified audit period.
    """
    admin_context = patron.context.get_admin_context(read_deleted='yes')

    def _get_nwinfo_old_skool():
        """Support for getting network info without objects."""
        if (instance_ref.get('info_cache') and
                instance_ref['info_cache'].get('network_info') is not None):
            cached_info = instance_ref['info_cache']['network_info']
            if isinstance(cached_info, network_model.NetworkInfo):
                return cached_info
            return network_model.NetworkInfo.hydrate(cached_info)
        try:
            return network.API().get_instance_nw_info(admin_context,
                                                      instance_ref)
        except Exception:
            try:
                with excutils.save_and_reraise_exception():
                    LOG.exception(_LE('Failed to get nw_info'),
                                  instance=instance_ref)
            except Exception:
                if ignore_missing_network_data:
                    return
                raise

    # FIXME(comstud): Temporary as we transition to objects.
    if isinstance(instance_ref, obj_base.NovaObject):
        nw_info = instance_ref.info_cache.network_info
        if nw_info is None:
            nw_info = network_model.NetworkInfo()
    else:
        nw_info = _get_nwinfo_old_skool()

    macs = [vif['address'] for vif in nw_info]
    uuids = [instance_ref["uuid"]]

    bw_usages = objects.BandwidthUsageList.get_by_uuids(admin_context, uuids,
                                                        audit_start)
    bw = {}

    for b in bw_usages:
        if b.mac in macs:
            label = 'net-name-not-found-%s' % b.mac
            for vif in nw_info:
                if vif['address'] == b.mac:
                    label = vif['network']['label']
                    break

            bw[label] = dict(bw_in=b.bw_in, bw_out=b.bw_out)

    return bw
Esempio n. 9
0
 def _test_refresh_cache(self, method, *args, **kwargs):
     # This test verifies that no call to get_instance_nw_info() is made
     # from the @refresh_cache decorator for the tested method.
     with contextlib.nested(
         mock.patch.object(self.network_api.network_rpcapi, method),
         mock.patch.object(self.network_api.network_rpcapi,
                           'get_instance_nw_info'),
         mock.patch.object(network_model.NetworkInfo, 'hydrate'),
     ) as (
         method_mock, nwinfo_mock, hydrate_mock
     ):
         nw_info = network_model.NetworkInfo([])
         method_mock.return_value = nw_info
         hydrate_mock.return_value = nw_info
         getattr(self.network_api, method)(*args, **kwargs)
         hydrate_mock.assert_called_once_with(nw_info)
         self.assertFalse(nwinfo_mock.called)
Esempio n. 10
0
def get_test_network_info(count=1):
    ipv6 = CONF.use_ipv6
    fake = 'fake'
    fake_ip = '0.0.0.0'
    fake_vlan = 100
    fake_bridge_interface = 'eth0'

    def current():
        subnet_4 = network_model.Subnet(
            cidr=fake_ip,
            dns=[network_model.IP(fake_ip),
                 network_model.IP(fake_ip)],
            gateway=network_model.IP(fake_ip),
            ips=[network_model.IP(fake_ip),
                 network_model.IP(fake_ip)],
            routes=None,
            dhcp_server=fake_ip)
        subnet_6 = network_model.Subnet(cidr=fake_ip,
                                        gateway=network_model.IP(fake_ip),
                                        ips=[
                                            network_model.IP(fake_ip),
                                            network_model.IP(fake_ip),
                                            network_model.IP(fake_ip)
                                        ],
                                        routes=None,
                                        version=6)
        subnets = [subnet_4]
        if ipv6:
            subnets.append(subnet_6)
        network = network_model.Network(id=None,
                                        bridge=fake,
                                        label=None,
                                        subnets=subnets,
                                        vlan=fake_vlan,
                                        bridge_interface=fake_bridge_interface,
                                        injected=False)
        vif = network_model.VIF(id='vif-xxx-yyy-zzz',
                                address=fake,
                                network=network,
                                type=network_model.VIF_TYPE_BRIDGE,
                                devname=None,
                                ovs_interfaceid=None)

        return vif

    return network_model.NetworkInfo([current() for x in xrange(0, count)])
Esempio n. 11
0
    def setUp(self):
        super(VMwareVifTestCase, self).setUp()
        self.flags(vlan_interface='vmnet0', group='vmware')
        network = network_model.Network(id=0,
                                        bridge='fa0',
                                        label='fake',
                                        vlan=3,
                                        bridge_interface='eth0',
                                        injected=True)

        self.vif = network_model.NetworkInfo([
            network_model.VIF(id=None,
                              address='DE:AD:BE:EF:00:00',
                              network=network,
                              type=None,
                              devname=None,
                              ovs_interfaceid=None,
                              rxtx_cap=3)
        ])[0]
        self.session = fake.FakeSession()
        self.cluster = None
Esempio n. 12
0
 def test_get_network_ref_bridge(self):
     self.mox.StubOutWithMock(vif, 'ensure_vlan_bridge')
     vif.ensure_vlan_bridge(self.session,
                            self.vif,
                            cluster=self.cluster,
                            create_vlan=True)
     self.mox.ReplayAll()
     network = network_model.Network(id=0,
                                     bridge='fa0',
                                     label='fake',
                                     vlan=3,
                                     bridge_interface='eth0',
                                     injected=True,
                                     should_create_vlan=True)
     self.vif = network_model.NetworkInfo([
         network_model.VIF(id=None,
                           address='DE:AD:BE:EF:00:00',
                           network=network,
                           type=None,
                           devname=None,
                           ovs_interfaceid=None,
                           rxtx_cap=3)
     ])[0]
     vif.get_network_ref(self.session, self.cluster, self.vif, False)
Esempio n. 13
0
 def async_wrapper():
     return model.NetworkInfo([
         fake_network_cache_model.new_vif(),
         fake_network_cache_model.new_vif(
             {'address': 'bb:bb:bb:bb:bb:bb'})
     ])
Esempio n. 14
0
 def test_stringify(self):
     networkinfo = network_model.NetworkInfo()
     networkinfo.append(network_model.VIF(id=123))
     networkinfo.append(network_model.VIF(id=456))
     self.assertEqual('NetworkModel(123,456)',
                      self.field.stringify(networkinfo))
Esempio n. 15
0
 def fake_networkinfo(*args, **kwargs):
     return network_model.NetworkInfo()
Esempio n. 16
0
 def func(self, context, instance):
     return network_model.NetworkInfo([])