summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/db/fakes.py15
-rw-r--r--nova/tests/test_xenapi.py53
-rw-r--r--nova/virt/xenapi/vm_utils.py8
-rw-r--r--nova/virt/xenapi/vmops.py6
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,