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, {})
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)
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, {})
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)
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())
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)
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)
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)
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)
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
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)
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
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)
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)
def get_default_sys_meta(): return utils.dict_to_metadata( flavors.save_instance_type_info({}, flavors.get_default_instance_type()))
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)
def get_instance_type(self, context, flavor_type): if flavor_type == 1: return flavors.get_default_instance_type() else: raise exception.InstanceTypeNotFound(flavor_type)
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)