Don't stuff non-db data into instance dict

The RPC API passes admin_pass and injected_files as arguments, but when
calling the driver API, those values get stuffed into the instance dict
which is otherwise all data that is stored in the database. This has
led to some bugs (such as 1034948) which could have been avoided if
the code was consistent.

Change-Id: I09a7de8eca3791a5ab27e93b22e5ccccee31cf09
This commit is contained in:
Johannes Erdfelt
2012-08-12 04:15:41 +00:00
parent cfbb7909e6
commit 6ebc5f91dc
3 changed files with 11 additions and 13 deletions

View File

@@ -1925,7 +1925,8 @@ class LibvirtConnTestCase(test.TestCase):
fake_none)
try:
conn.spawn(self.context, instance, None, network_info)
conn.spawn(self.context, instance, None, [], 'herp',
network_info=network_info)
except Exception, e:
# assert that no exception is raised due to sha1 receiving an int
self.assertEqual(-1, unicode(e).find('must be string or buffer'

View File

@@ -206,9 +206,8 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
instance_ref = test_utils.get_test_instance()
network_info = test_utils.get_test_network_info()
image_info = test_utils.get_test_image_info(None, instance_ref)
self.connection.spawn(self.ctxt, instance=instance_ref,
image_meta=image_info,
network_info=network_info)
self.connection.spawn(self.ctxt, instance_ref, image_info,
[], 'herp', network_info=network_info)
return instance_ref, network_info
@catch_notimplementederror
@@ -279,7 +278,7 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
@catch_notimplementederror
def test_rescue(self):
instance_ref, network_info = self._get_running_instance()
self.connection.rescue(self.ctxt, instance_ref, network_info, None)
self.connection.rescue(self.ctxt, instance_ref, network_info, None, '')
@catch_notimplementederror
def test_unrescue_unrescued_instance(self):
@@ -289,7 +288,7 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase):
@catch_notimplementederror
def test_unrescue_rescued_instance(self):
instance_ref, network_info = self._get_running_instance()
self.connection.rescue(self.ctxt, instance_ref, network_info, None)
self.connection.rescue(self.ctxt, instance_ref, network_info, None, '')
self.connection.unrescue(instance_ref, network_info)
@catch_notimplementederror

View File

@@ -552,12 +552,10 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
# NOTE(tr3buchet): this is a terrible way to do this...
network_info[0]['network']['subnets'][0]['dns'] = []
# admin_pass isn't part of the DB model, but it does get set as
# an attribute for spawn to use
instance.admin_pass = 'herp'
image_meta = {'id': IMAGE_VHD,
'disk_format': 'vhd'}
self.conn.spawn(self.context, instance, image_meta, network_info)
self.conn.spawn(self.context, instance, image_meta, [], 'herp',
network_info)
self.create_vm_record(self.conn, os_type, instance['name'])
self.check_vm_record(self.conn, check_injection)
self.assertTrue(instance.os_type)
@@ -790,7 +788,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
conn = xenapi_conn.XenAPIDriver(False)
image_meta = {'id': IMAGE_VHD,
'disk_format': 'vhd'}
conn.rescue(self.context, instance, [], image_meta)
conn.rescue(self.context, instance, [], image_meta, '')
vm = xenapi_fake.get_record('VM', vm_ref)
rescue_name = "%s-rescue" % vm["name_label"]
@@ -881,8 +879,8 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
image_meta = {'id': IMAGE_VHD,
'disk_format': 'vhd'}
if spawn:
instance.admin_pass = 'herp'
self.conn.spawn(self.context, instance, image_meta, network_info)
self.conn.spawn(self.context, instance, image_meta, [], 'herp',
network_info)
return instance