コード例 #1
0
ファイル: test_instance_types.py プロジェクト: sdague/nova
 def test_delete_instance_type_info(self):
     instance_type = flavors.get_default_instance_type()
     metadata = {}
     flavors.save_instance_type_info(metadata, instance_type)
     flavors.save_instance_type_info(metadata, instance_type, "_")
     flavors.delete_instance_type_info(metadata, "", "_")
     self.assertEqual(metadata, {})
コード例 #2
0
    def setUp(self):
        super(SimpleTenantUsageControllerTest, self).setUp()
        self.controller = simple_tenant_usage.SimpleTenantUsageController()

        class FakeComputeAPI:
            def get_instance_type(self, context, flavor_type):
                if flavor_type == 1:
                    return flavors.get_default_instance_type()
                else:
                    raise exception.InstanceTypeNotFound(flavor_type)

        self.compute_api = FakeComputeAPI()
        self.context = None

        now = datetime.datetime.now()
        self.baseinst = dict(display_name='foo',
                             launched_at=now - datetime.timedelta(1),
                             terminated_at=now,
                             instance_type_id=1,
                             vm_state='deleted',
                             deleted=0)
        basetype = flavors.get_default_instance_type()
        sys_meta = utils.dict_to_metadata(
            flavors.save_instance_type_info({}, basetype))
        self.baseinst['system_metadata'] = sys_meta
        self.basetype = flavors.extract_instance_type(self.baseinst)
コード例 #3
0
    def setUp(self):
        super(SimpleTenantUsageControllerTest, self).setUp()
        self.controller = simple_tenant_usage.SimpleTenantUsageController()

        class FakeComputeAPI:
            def get_instance_type(self, context, flavor_type):
                if flavor_type == 1:
                    return flavors.get_default_instance_type()
                else:
                    raise exception.InstanceTypeNotFound(flavor_type)

        self.compute_api = FakeComputeAPI()
        self.context = None

        now = datetime.datetime.now()
        self.baseinst = dict(display_name='foo',
                             launched_at=now - datetime.timedelta(1),
                             terminated_at=now,
                             instance_type_id=1,
                             vm_state='deleted',
                             deleted=0)
        basetype = flavors.get_default_instance_type()
        sys_meta = utils.dict_to_metadata(
            flavors.save_instance_type_info({}, basetype))
        self.baseinst['system_metadata'] = sys_meta
        self.basetype = flavors.extract_instance_type(self.baseinst)
コード例 #4
0
ファイル: test_instance_types.py プロジェクト: yuans/nova
 def test_delete_instance_type_info(self):
     instance_type = flavors.get_default_instance_type()
     metadata = {}
     flavors.save_instance_type_info(metadata, instance_type)
     flavors.save_instance_type_info(metadata, instance_type, '_')
     flavors.delete_instance_type_info(metadata, '', '_')
     self.assertEqual(metadata, {})
コード例 #5
0
 def test_allocate_for_instance_handles_macs_passed(self):
     # If a macs argument is supplied to the 'nova-network' API, it is just
     # ignored. This test checks that the call down to the rpcapi layer
     # doesn't pass macs down: nova-network doesn't support hypervisor
     # mac address limits (today anyhow).
     macs = set(['ab:cd:ef:01:23:34'])
     self.mox.StubOutWithMock(self.network_api.network_rpcapi,
                              "allocate_for_instance")
     kwargs = dict(
         zip([
             'host', 'instance_id', 'project_id', 'requested_networks',
             'rxtx_factor', 'vpn', 'macs'
         ], itertools.repeat(mox.IgnoreArg())))
     self.network_api.network_rpcapi.allocate_for_instance(
         mox.IgnoreArg(), **kwargs).AndReturn([])
     self.mox.ReplayAll()
     inst_type = flavors.get_default_instance_type()
     inst_type['rxtx_factor'] = 0
     sys_meta = flavors.save_instance_type_info({}, inst_type)
     instance = dict(id='id',
                     uuid='uuid',
                     project_id='project_id',
                     host='host',
                     system_metadata=utils.dict_to_metadata(sys_meta))
     self.network_api.allocate_for_instance(self.context,
                                            instance,
                                            'vpn',
                                            'requested_networks',
                                            macs=macs)
コード例 #6
0
 def test_get_flavor_from_deleted_with_id(self):
     # Deleted instances may not have type info in system_metadata,
     # so verify that they get their type from a lookup of their
     # instance_type_id
     inst_without_sys_meta = dict(self.baseinst, system_metadata=[],
                                  deleted=1)
     flavor = self.controller._get_flavor(self.context, self.compute_api,
                                          inst_without_sys_meta, {})
     self.assertEqual(flavor, flavors.get_default_instance_type())
コード例 #7
0
 def test_get_flavor_from_deleted_with_id(self):
     # Deleted instances may not have type info in system_metadata,
     # so verify that they get their type from a lookup of their
     # instance_type_id
     inst_without_sys_meta = dict(self.baseinst,
                                  system_metadata=[],
                                  deleted=1)
     flavor = self.controller._get_flavor(self.context, self.compute_api,
                                          inst_without_sys_meta, {})
     self.assertEqual(flavor, flavors.get_default_instance_type())
コード例 #8
0
ファイル: test_instance_types.py プロジェクト: yuans/nova
    def _test_extract_instance_type(self, prefix):
        instance_type = flavors.get_default_instance_type()

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type, prefix)
        instance = {'system_metadata': self._dict_to_metadata(metadata)}
        _instance_type = flavors.extract_instance_type(instance, prefix)

        props = flavors.system_metadata_instance_type_props.keys()
        for key in instance_type.keys():
            if key not in props:
                del instance_type[key]

        self.assertEqual(instance_type, _instance_type)
コード例 #9
0
ファイル: test_instance_types.py プロジェクト: sdague/nova
    def _test_extract_instance_type(self, prefix):
        instance_type = flavors.get_default_instance_type()

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type, prefix)
        instance = {"system_metadata": self._dict_to_metadata(metadata)}
        _instance_type = flavors.extract_instance_type(instance, prefix)

        props = flavors.system_metadata_instance_type_props.keys()
        for key in instance_type.keys():
            if key not in props:
                del instance_type[key]

        self.assertEqual(instance_type, _instance_type)
コード例 #10
0
ファイル: test_instance_types.py プロジェクト: sdague/nova
    def test_save_instance_type_info(self):
        instance_type = flavors.get_default_instance_type()

        example = {}
        example_prefix = {}

        for key in flavors.system_metadata_instance_type_props.keys():
            example["instance_type_%s" % key] = instance_type[key]
            example_prefix["fooinstance_type_%s" % key] = instance_type[key]

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type)
        self.assertEqual(example, metadata)

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type, "foo")
        self.assertEqual(example_prefix, metadata)
コード例 #11
0
ファイル: test_instance_types.py プロジェクト: yuans/nova
    def test_save_instance_type_info(self):
        instance_type = flavors.get_default_instance_type()

        example = {}
        example_prefix = {}

        for key in flavors.system_metadata_instance_type_props.keys():
            example['instance_type_%s' % key] = instance_type[key]
            example_prefix['fooinstance_type_%s' % key] = instance_type[key]

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type)
        self.assertEqual(example, metadata)

        metadata = {}
        flavors.save_instance_type_info(metadata, instance_type, 'foo')
        self.assertEqual(example_prefix, metadata)
コード例 #12
0
    def _stub_migrate_instance_calls(self, method, multi_host, info):
        fake_instance_type = flavors.get_default_instance_type()
        fake_instance_type['rxtx_factor'] = 1.21
        sys_meta = utils.dict_to_metadata(
            flavors.save_instance_type_info({}, fake_instance_type))
        fake_instance = {
            'uuid': 'fake_uuid',
            'instance_type_id': fake_instance_type['id'],
            'project_id': 'fake_project_id',
            'system_metadata': sys_meta
        }
        fake_migration = {
            'source_compute': 'fake_compute_source',
            'dest_compute': 'fake_compute_dest'
        }

        def fake_mig_inst_method(*args, **kwargs):
            info['kwargs'] = kwargs

        def fake_is_multi_host(*args, **kwargs):
            return multi_host

        def fake_get_floaters(*args, **kwargs):
            return ['fake_float1', 'fake_float2']

        self.stubs.Set(network_rpcapi.NetworkAPI, method, fake_mig_inst_method)
        self.stubs.Set(self.network_api, '_is_multi_host', fake_is_multi_host)
        self.stubs.Set(self.network_api, '_get_floating_ip_addresses',
                       fake_get_floaters)

        expected = {
            'instance_uuid': 'fake_uuid',
            'source_compute': 'fake_compute_source',
            'dest_compute': 'fake_compute_dest',
            'rxtx_factor': 1.21,
            'project_id': 'fake_project_id',
            'floating_addresses': None
        }
        if multi_host:
            expected['floating_addresses'] = ['fake_float1', 'fake_float2']
        return fake_instance, fake_migration, expected
コード例 #13
0
ファイル: test_api.py プロジェクト: JacobMulero/nova
 def test_allocate_for_instance_handles_macs_passed(self):
     # If a macs argument is supplied to the 'nova-network' API, it is just
     # ignored. This test checks that the call down to the rpcapi layer
     # doesn't pass macs down: nova-network doesn't support hypervisor
     # mac address limits (today anyhow).
     macs = set(['ab:cd:ef:01:23:34'])
     self.mox.StubOutWithMock(
         self.network_api.network_rpcapi, "allocate_for_instance")
     kwargs = dict(zip(['host', 'instance_id', 'project_id',
             'requested_networks', 'rxtx_factor', 'vpn', 'macs'],
             itertools.repeat(mox.IgnoreArg())))
     self.network_api.network_rpcapi.allocate_for_instance(
         mox.IgnoreArg(), **kwargs).AndReturn([])
     self.mox.ReplayAll()
     inst_type = flavors.get_default_instance_type()
     inst_type['rxtx_factor'] = 0
     sys_meta = flavors.save_instance_type_info({}, inst_type)
     instance = dict(id='id', uuid='uuid', project_id='project_id',
         host='host', system_metadata=utils.dict_to_metadata(sys_meta))
     self.network_api.allocate_for_instance(
         self.context, instance, 'vpn', 'requested_networks', macs=macs)
コード例 #14
0
ファイル: test_api.py プロジェクト: JacobMulero/nova
    def _stub_migrate_instance_calls(self, method, multi_host, info):
        fake_instance_type = flavors.get_default_instance_type()
        fake_instance_type['rxtx_factor'] = 1.21
        sys_meta = utils.dict_to_metadata(
            flavors.save_instance_type_info({}, fake_instance_type))
        fake_instance = {'uuid': 'fake_uuid',
                         'instance_type_id': fake_instance_type['id'],
                         'project_id': 'fake_project_id',
                         'system_metadata': sys_meta}
        fake_migration = {'source_compute': 'fake_compute_source',
                          'dest_compute': 'fake_compute_dest'}

        def fake_mig_inst_method(*args, **kwargs):
            info['kwargs'] = kwargs

        def fake_is_multi_host(*args, **kwargs):
            return multi_host

        def fake_get_floaters(*args, **kwargs):
            return ['fake_float1', 'fake_float2']

        self.stubs.Set(network_rpcapi.NetworkAPI, method,
                fake_mig_inst_method)
        self.stubs.Set(self.network_api, '_is_multi_host',
                fake_is_multi_host)
        self.stubs.Set(self.network_api, '_get_floating_ip_addresses',
                fake_get_floaters)

        expected = {'instance_uuid': 'fake_uuid',
                    'source_compute': 'fake_compute_source',
                    'dest_compute': 'fake_compute_dest',
                    'rxtx_factor': 1.21,
                    'project_id': 'fake_project_id',
                    'floating_addresses': None}
        if multi_host:
            expected['floating_addresses'] = ['fake_float1', 'fake_float2']
        return fake_instance, fake_migration, expected
コード例 #15
0
ファイル: test_instance_types.py プロジェクト: sdague/nova
 def test_will_get_instance_by_flavor_id(self):
     default_instance_type = flavors.get_default_instance_type()
     flavorid = default_instance_type["flavorid"]
     fetched = flavors.get_instance_type_by_flavor_id(flavorid)
     self.assertEqual(default_instance_type, fetched)
コード例 #16
0
ファイル: test_instance_types.py プロジェクト: sdague/nova
 def test_instance_type_get_by_None_name_returns_default(self):
     # Ensure get by name returns default flavor with no name.
     default = flavors.get_default_instance_type()
     actual = flavors.get_instance_type_by_name(None)
     self.assertEqual(default, actual)
コード例 #17
0
def get_default_sys_meta():
    return utils.dict_to_metadata(
        flavors.save_instance_type_info({},
                                        flavors.get_default_instance_type()))
コード例 #18
0
ファイル: test_instance_types.py プロジェクト: yuans/nova
 def test_will_get_instance_by_flavor_id(self):
     default_instance_type = flavors.get_default_instance_type()
     flavorid = default_instance_type['flavorid']
     fetched = flavors.get_instance_type_by_flavor_id(flavorid)
     self.assertEqual(default_instance_type, fetched)
コード例 #19
0
ファイル: test_instance_types.py プロジェクト: yuans/nova
 def test_instance_type_get_by_None_name_returns_default(self):
     # Ensure get by name returns default flavor with no name.
     default = flavors.get_default_instance_type()
     actual = flavors.get_instance_type_by_name(None)
     self.assertEqual(default, actual)
コード例 #20
0
 def get_instance_type(self, context, flavor_type):
     if flavor_type == 1:
         return flavors.get_default_instance_type()
     else:
         raise exception.InstanceTypeNotFound(flavor_type)
コード例 #21
0
 def get_instance_type(self, context, flavor_type):
     if flavor_type == 1:
         return flavors.get_default_instance_type()
     else:
         raise exception.InstanceTypeNotFound(flavor_type)
コード例 #22
0
 def test_will_get_instance_type_by_id(self):
     default_instance_type = flavors.get_default_instance_type()
     instance_type_id = default_instance_type['id']
     fetched = flavors.get_instance_type(instance_type_id)
     self.assertEqual(default_instance_type, fetched)