removing objectstore and image_service flag checking

This commit is contained in:
Brian Waldon
2011-07-26 11:26:33 -04:00
parent ac1e571c6e
commit d2ec9df502
2 changed files with 9 additions and 118 deletions

View File

@@ -429,7 +429,6 @@ class XenAPIVMTestCase(test.TestCase):
self.assertTrue(instance.architecture)
def test_spawn_not_enough_memory(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self.assertRaises(Exception,
self._test_spawn,
1, 2, 3, "4") # m1.xlarge
@@ -441,7 +440,6 @@ class XenAPIVMTestCase(test.TestCase):
"""
vdi_recs_start = self._list_vdis()
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
stubs.stubout_fetch_image_glance_disk(self.stubs)
self.assertRaises(xenapi_fake.Failure,
self._test_spawn, 1, 2, 3)
@@ -456,7 +454,6 @@ class XenAPIVMTestCase(test.TestCase):
"""
vdi_recs_start = self._list_vdis()
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
stubs.stubout_create_vm(self.stubs)
self.assertRaises(xenapi_fake.Failure,
self._test_spawn, 1, 2, 3)
@@ -464,22 +461,12 @@ class XenAPIVMTestCase(test.TestCase):
vdi_recs_end = self._list_vdis()
self._check_vdis(vdi_recs_start, vdi_recs_end)
def test_spawn_raw_objectstore(self):
FLAGS.image_service = 'nova.image.s3.S3ImageService'
self._test_spawn(1, None, None)
def test_spawn_objectstore(self):
FLAGS.image_service = 'nova.image.s3.S3ImageService'
self._test_spawn(1, 2, 3)
@stub_vm_utils_with_vdi_attached_here
def test_spawn_raw_glance(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_RAW, None, None)
self.check_vm_params_for_linux()
def test_spawn_vhd_glance_linux(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None,
os_type="linux", architecture="x86-64")
self.check_vm_params_for_linux()
@@ -508,20 +495,17 @@ class XenAPIVMTestCase(test.TestCase):
self.assertEqual(len(self.vm['VBDs']), 1)
def test_spawn_vhd_glance_windows(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None,
os_type="windows", architecture="i386")
self.check_vm_params_for_windows()
def test_spawn_glance(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE,
glance_stubs.FakeGlance.IMAGE_KERNEL,
glance_stubs.FakeGlance.IMAGE_RAMDISK)
self.check_vm_params_for_linux_with_external_kernel()
def test_spawn_netinject_file(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
db_fakes.stub_out_db_instance_api(self.stubs, injected=True)
self._tee_executed = False
@@ -547,7 +531,6 @@ class XenAPIVMTestCase(test.TestCase):
# Capture the sudo tee .../etc/network/interfaces command
(r'(sudo\s+)?tee.*interfaces', _tee_handler),
])
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE,
glance_stubs.FakeGlance.IMAGE_KERNEL,
glance_stubs.FakeGlance.IMAGE_RAMDISK,
@@ -555,7 +538,6 @@ class XenAPIVMTestCase(test.TestCase):
self.assertTrue(self._tee_executed)
def test_spawn_netinject_xenstore(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
db_fakes.stub_out_db_instance_api(self.stubs, injected=True)
self._tee_executed = False
@@ -784,7 +766,6 @@ class XenAPIMigrateInstance(test.TestCase):
conn.migrate_disk_and_power_off(instance, '127.0.0.1')
def test_finish_resize(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
instance = db.instance_create(self.context, self.values)
stubs.stubout_session(self.stubs, stubs.FakeSessionForMigrationTests)
stubs.stubout_loopingcall_start(self.stubs)
@@ -828,7 +809,6 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
def test_instance_disk(self):
"""If a kernel is specified, the image type is DISK (aka machine)."""
FLAGS.image_service = 'nova.image.s3.S3ImageService'
self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_MACHINE
self.fake_instance.kernel_id = glance_stubs.FakeGlance.IMAGE_KERNEL
self.assert_disk_type(vm_utils.ImageType.DISK)
@@ -838,7 +818,6 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
If the kernel isn't specified, and we're not using Glance, then
DISK_RAW is assumed.
"""
FLAGS.image_service = 'nova.image.s3.S3ImageService'
self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW
self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_RAW)
@@ -848,7 +827,6 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
If we're using Glance, then defer to the image_type field, which in
this case will be 'raw'.
"""
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW
self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_RAW)
@@ -858,7 +836,6 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
If we're using Glance, then defer to the image_type field, which in
this case will be 'vhd'.
"""
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_VHD
self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_VHD)

View File

@@ -423,13 +423,8 @@ class VMHelper(HelperBase):
"""
access = AuthManager().get_access_key(user, project)
if FLAGS.image_service == 'nova.image.glance.GlanceImageService':
return cls._fetch_image_glance(session, instance_id, image,
access, image_type)
else:
return cls._fetch_image_objectstore(session, instance_id, image,
access, user.secret,
image_type)
return cls._fetch_image_glance(session, instance_id, image,
access, image_type)
@classmethod
def _fetch_image_glance_vhd(cls, session, instance_id, image, access,
@@ -603,10 +598,7 @@ class VMHelper(HelperBase):
else:
return ImageType.DISK_RAW
if FLAGS.image_service == 'nova.image.glance.GlanceImageService':
image_type = determine_from_glance()
else:
image_type = determine_from_instance()
image_type = determine_from_glance()
log_disk_format(image_type)
return image_type
@@ -626,42 +618,6 @@ class VMHelper(HelperBase):
return cls._fetch_image_glance_disk(
session, instance_id, image, access, image_type)
@classmethod
def _fetch_image_objectstore(cls, session, instance_id, image, access,
secret, image_type):
"""Fetch an image from objectstore.
Returns: A single filename if image_type is KERNEL or RAMDISK
A list of dictionaries that describe VDIs, otherwise
"""
url = "http://%s:%s/_images/%s/image" % (FLAGS.s3_host, FLAGS.s3_port,
image)
LOG.debug(_("Asking xapi to fetch %(url)s as %(access)s") % locals())
if image_type in (ImageType.KERNEL, ImageType.RAMDISK):
fn = 'get_kernel'
else:
fn = 'get_vdi'
args = {}
args['src_url'] = url
args['username'] = access
args['password'] = secret
args['add_partition'] = 'false'
args['raw'] = 'false'
if not image_type in (ImageType.KERNEL, ImageType.RAMDISK):
args['add_partition'] = 'true'
if image_type == ImageType.DISK_RAW:
args['raw'] = 'true'
task = session.async_call_plugin('objectstore', fn, args)
vdi_uuid = None
filename = None
if image_type in (ImageType.KERNEL, ImageType.RAMDISK):
filename = session.wait_for_task(task, instance_id)
else:
vdi_uuid = session.wait_for_task(task, instance_id)
return [dict(vdi_type=ImageType.to_string(image_type),
vdi_uuid=vdi_uuid,
file=filename)]
@classmethod
def determine_is_pv(cls, session, instance_id, vdi_ref, disk_image_type,
os_type):
@@ -669,68 +625,26 @@ class VMHelper(HelperBase):
Determine whether the VM will use a paravirtualized kernel or if it
will use hardware virtualization.
1. Objectstore (any image type):
We use plugin to figure out whether the VDI uses PV
1. Glance (VHD): then we use `os_type`, raise if not set
2. Glance (VHD): then we use `os_type`, raise if not set
3. Glance (DISK_RAW): use Pygrub to figure out if pv kernel is
2. Glance (DISK_RAW): use Pygrub to figure out if pv kernel is
available
4. Glance (DISK): pv is assumed
"""
if FLAGS.image_service == 'nova.image.glance.GlanceImageService':
# 2, 3, 4: Glance
return cls._determine_is_pv_glance(
session, vdi_ref, disk_image_type, os_type)
else:
# 1. Objecstore
return cls._determine_is_pv_objectstore(session, instance_id,
vdi_ref)
@classmethod
def _determine_is_pv_objectstore(cls, session, instance_id, vdi_ref):
LOG.debug(_("Looking up vdi %s for PV kernel"), vdi_ref)
fn = "is_vdi_pv"
args = {}
args['vdi-ref'] = vdi_ref
task = session.async_call_plugin('objectstore', fn, args)
pv_str = session.wait_for_task(task, instance_id)
pv = None
if pv_str.lower() == 'true':
pv = True
elif pv_str.lower() == 'false':
pv = False
LOG.debug(_("PV Kernel in VDI:%s"), pv)
return pv
@classmethod
def _determine_is_pv_glance(cls, session, vdi_ref, disk_image_type,
os_type):
"""
For a Glance image, determine if we need paravirtualization.
The relevant scenarios are:
2. Glance (VHD): then we use `os_type`, raise if not set
3. Glance (DISK_RAW): use Pygrub to figure out if pv kernel is
available
4. Glance (DISK): pv is assumed
3. Glance (DISK): pv is assumed
"""
LOG.debug(_("Looking up vdi %s for PV kernel"), vdi_ref)
if disk_image_type == ImageType.DISK_VHD:
# 2. VHD
# 1. VHD
if os_type == 'windows':
is_pv = False
else:
is_pv = True
elif disk_image_type == ImageType.DISK_RAW:
# 3. RAW
# 2. RAW
is_pv = with_vdi_attached_here(session, vdi_ref, True, _is_vdi_pv)
elif disk_image_type == ImageType.DISK:
# 4. Disk
# 3. Disk
is_pv = True
else:
raise exception.Error(_("Unknown image format %(disk_image_type)s")