diff options
-rw-r--r-- | nova/tests/db/fakes.py | 15 | ||||
-rw-r--r-- | nova/tests/test_xenapi.py | 53 | ||||
-rw-r--r-- | nova/virt/xenapi/vm_utils.py | 8 | ||||
-rw-r--r-- | nova/virt/xenapi/vmops.py | 6 |
4 files changed, 48 insertions, 34 deletions
diff --git a/nova/tests/db/fakes.py b/nova/tests/db/fakes.py index 2ec7f244e..455751809 100644 --- a/nova/tests/db/fakes.py +++ b/nova/tests/db/fakes.py @@ -331,51 +331,56 @@ def stub_out_db_instance_api(stubs, injected=True): INSTANCE_TYPES = { 'm1.tiny': dict(id=2, + name='m1.tiny', memory_mb=512, vcpus=1, vcpu_weight=None, root_gb=0, ephemeral_gb=10, flavorid=1, - rxtx_cap=1, + rxtx_factor=1.0, swap=0), 'm1.small': dict(id=5, + name='m1.small', memory_mb=2048, vcpus=1, vcpu_weight=None, root_gb=20, ephemeral_gb=0, flavorid=2, - rxtx_cap=2, + rxtx_factor=1.0, swap=1024), 'm1.medium': dict(id=1, + name='m1.medium', memory_mb=4096, vcpus=2, vcpu_weight=None, root_gb=40, ephemeral_gb=40, flavorid=3, - rxtx_cap=3, + rxtx_factor=1.0, swap=0), 'm1.large': dict(id=3, + name='m1.large', memory_mb=8192, vcpus=4, vcpu_weight=None, root_gb=80, ephemeral_gb=80, flavorid=4, - rxtx_cap=4, + rxtx_factor=1.0, swap=0), 'm1.xlarge': dict(id=4, + name='m1.xlarge', memory_mb=16384, vcpus=8, vcpu_weight=None, root_gb=160, ephemeral_gb=160, flavorid=5, - rxtx_cap=5, + rxtx_factor=1.0, swap=0)} flat_network_fields = {'id': 'fake_flat', diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index 0f603dfbf..6714161f1 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -176,6 +176,15 @@ def stub_vm_utils_with_vdi_attached_here(function, should_return=True): return decorated_function +def create_instance_with_system_metadata(context, instance_values): + instance_type = db.instance_type_get(context, + instance_values['instance_type_id']) + sys_meta = instance_types.save_instance_type_info({}, + instance_type) + instance_values['system_metadata'] = sys_meta + return db.instance_create(context, instance_values) + + class XenAPIVolumeTestCase(stubs.XenAPITestBase): """Unit tests for Volume operations.""" def setUp(self): @@ -635,7 +644,8 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): 'os_type': os_type, 'hostname': hostname, 'architecture': architecture} - instance = db.instance_create(self.context, instance_values) + instance = create_instance_with_system_metadata(self.context, + instance_values) else: instance = db.instance_get(self.context, instance_id) @@ -1093,7 +1103,9 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): 'os_type': 'linux', 'vm_mode': 'hvm', 'architecture': 'x86-64'} - instance = db.instance_create(self.context, instance_values) + + instance = create_instance_with_system_metadata(self.context, + instance_values) network_info = fake_network.fake_get_instance_nw_info(self.stubs, spectacular=True) image_meta = {'id': IMAGE_VHD, @@ -1252,7 +1264,8 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase): '127.0.0.1', instance_type, None) def test_revert_migrate(self): - instance = db.instance_create(self.context, self.instance_values) + instance = create_instance_with_system_metadata(self.context, + self.instance_values) self.called = False self.fake_vm_start_called = False self.fake_finish_revert_migration_called = False @@ -1293,7 +1306,8 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase): self.assertEqual(self.fake_finish_revert_migration_called, True) def test_finish_migrate(self): - instance = db.instance_create(self.context, self.instance_values) + instance = create_instance_with_system_metadata(self.context, + self.instance_values) self.called = False self.fake_vm_start_called = False @@ -1325,7 +1339,8 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase): tiny_type_id = tiny_type['id'] self.instance_values.update({'instance_type_id': tiny_type_id, 'root_gb': 0}) - instance = db.instance_create(self.context, self.instance_values) + instance = create_instance_with_system_metadata(self.context, + self.instance_values) def fake_vdi_resize(*args, **kwargs): raise Exception("This shouldn't be called") @@ -1341,7 +1356,8 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase): network_info, image_meta, resize_instance=True) def test_finish_migrate_no_resize_vdi(self): - instance = db.instance_create(self.context, self.instance_values) + instance = create_instance_with_system_metadata(self.context, + self.instance_values) def fake_vdi_resize(*args, **kwargs): raise Exception("This shouldn't be called") @@ -1616,7 +1632,8 @@ class XenAPIAutoDiskConfigTestCase(stubs.XenAPITestBase): fake.FakeVirtAPI()) disk_image_type = vm_utils.ImageType.DISK_VHD - instance = db.instance_create(self.context, self.instance_values) + instance = create_instance_with_system_metadata(self.context, + self.instance_values) vm_ref = xenapi_fake.create_vm(instance['name'], 'Halted') vdi_ref = xenapi_fake.create_vdi(instance['name'], 'fake') @@ -1716,14 +1733,9 @@ class XenAPIGenerateLocal(stubs.XenAPITestBase): def test_generate_swap(self): # Test swap disk generation. - instance = db.instance_create(self.context, self.instance_values) - instance = db.instance_update(self.context, instance['uuid'], - {'instance_type_id': 5}) - - # NOTE(danms): because we're stubbing out the instance_types from - # the database, our instance['instance_type'] doesn't get properly - # filled out here, so put what we need into it - instance['instance_type']['swap'] = 1024 + instance_values = dict(self.instance_values, instance_type_id=5) + instance = create_instance_with_system_metadata(self.context, + instance_values) def fake_generate_swap(*args, **kwargs): self.called = True @@ -1733,14 +1745,9 @@ class XenAPIGenerateLocal(stubs.XenAPITestBase): def test_generate_ephemeral(self): # Test ephemeral disk generation. - instance = db.instance_create(self.context, self.instance_values) - instance = db.instance_update(self.context, instance['uuid'], - {'instance_type_id': 4}) - - # NOTE(danms): because we're stubbing out the instance_types from - # the database, our instance['instance_type'] doesn't get properly - # filled out here, so put what we need into it - instance['instance_type']['ephemeral_gb'] = 160 + instance_values = dict(self.instance_values, instance_type_id=4) + instance = create_instance_with_system_metadata(self.context, + instance_values) def fake_generate_ephemeral(*args): self.called = True diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py index 16a6e4a29..26bd9d268 100644 --- a/nova/virt/xenapi/vm_utils.py +++ b/nova/virt/xenapi/vm_utils.py @@ -37,6 +37,7 @@ from oslo.config import cfg from nova.api.metadata import base as instance_metadata from nova import block_device +from nova.compute import instance_types from nova.compute import power_state from nova.compute import task_states from nova import exception @@ -208,7 +209,7 @@ def create_vm(session, instance, name_label, kernel, ramdisk, 3. Using hardware virtualization """ - instance_type = instance['instance_type'] + instance_type = instance_types.extract_instance_type(instance) mem = str(long(instance_type['memory_mb']) * 1024 * 1024) vcpus = str(instance_type['vcpus']) @@ -321,8 +322,7 @@ def _is_vm_shutdown(session, vm_ref): def ensure_free_mem(session, instance): - inst_type_id = instance['instance_type_id'] - instance_type = instance['instance_type'] + instance_type = instance_types.extract_instance_type(instance) mem = long(instance_type['memory_mb']) * 1024 * 1024 host = session.get_xenapi_host() host_free_mem = long(session.call_xenapi("host.compute_free_memory", @@ -1143,7 +1143,7 @@ def _check_vdi_size(context, session, instance, vdi_uuid): # FIXME(jk0): this was copied directly from compute.manager.py, let's # refactor this to a common area - instance_type = instance['instance_type'] + instance_type = instance_types.extract_instance_type(instance) allowed_size_gb = instance_type['root_gb'] allowed_size_bytes = allowed_size_gb * 1024 * 1024 * 1024 diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py index f1cf5fb69..56dd5bd3d 100644 --- a/nova/virt/xenapi/vmops.py +++ b/nova/virt/xenapi/vmops.py @@ -29,6 +29,7 @@ from oslo.config import cfg from nova import block_device from nova.compute import api as compute +from nova.compute import instance_types from nova.compute import power_state from nova.compute import task_states from nova.compute import vm_mode @@ -521,7 +522,7 @@ class VMOps(object): def _attach_disks(self, instance, vm_ref, name_label, vdis, disk_image_type, admin_password=None, files=None): ctx = nova_context.get_admin_context() - instance_type = instance['instance_type'] + instance_type = instance_types.extract_instance_type(instance) # Attach (required) root disk if disk_image_type == vm_utils.ImageType.DISK_ISO: @@ -648,7 +649,8 @@ class VMOps(object): agent.resetnetwork() # Set VCPU weight - vcpu_weight = instance['instance_type']['vcpu_weight'] + instance_type = instance_types.extract_instance_type(instance) + vcpu_weight = instance_type['vcpu_weight'] if vcpu_weight is not None: LOG.debug(_("Setting VCPU weight"), instance=instance) self._session.call_xenapi('VM.add_to_VCPUs_params', vm_ref, |