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) self.assertTrue(instance.architecture)
def test_spawn_not_enough_memory(self): def test_spawn_not_enough_memory(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self.assertRaises(Exception, self.assertRaises(Exception,
self._test_spawn, self._test_spawn,
1, 2, 3, "4") # m1.xlarge 1, 2, 3, "4") # m1.xlarge
@@ -441,7 +440,6 @@ class XenAPIVMTestCase(test.TestCase):
""" """
vdi_recs_start = self._list_vdis() vdi_recs_start = self._list_vdis()
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
stubs.stubout_fetch_image_glance_disk(self.stubs) stubs.stubout_fetch_image_glance_disk(self.stubs)
self.assertRaises(xenapi_fake.Failure, self.assertRaises(xenapi_fake.Failure,
self._test_spawn, 1, 2, 3) self._test_spawn, 1, 2, 3)
@@ -456,7 +454,6 @@ class XenAPIVMTestCase(test.TestCase):
""" """
vdi_recs_start = self._list_vdis() vdi_recs_start = self._list_vdis()
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
stubs.stubout_create_vm(self.stubs) stubs.stubout_create_vm(self.stubs)
self.assertRaises(xenapi_fake.Failure, self.assertRaises(xenapi_fake.Failure,
self._test_spawn, 1, 2, 3) self._test_spawn, 1, 2, 3)
@@ -464,22 +461,12 @@ class XenAPIVMTestCase(test.TestCase):
vdi_recs_end = self._list_vdis() vdi_recs_end = self._list_vdis()
self._check_vdis(vdi_recs_start, vdi_recs_end) 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 @stub_vm_utils_with_vdi_attached_here
def test_spawn_raw_glance(self): def test_spawn_raw_glance(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_RAW, None, None) self._test_spawn(glance_stubs.FakeGlance.IMAGE_RAW, None, None)
self.check_vm_params_for_linux() self.check_vm_params_for_linux()
def test_spawn_vhd_glance_linux(self): def test_spawn_vhd_glance_linux(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None, self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None,
os_type="linux", architecture="x86-64") os_type="linux", architecture="x86-64")
self.check_vm_params_for_linux() self.check_vm_params_for_linux()
@@ -508,20 +495,17 @@ class XenAPIVMTestCase(test.TestCase):
self.assertEqual(len(self.vm['VBDs']), 1) self.assertEqual(len(self.vm['VBDs']), 1)
def test_spawn_vhd_glance_windows(self): def test_spawn_vhd_glance_windows(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None, self._test_spawn(glance_stubs.FakeGlance.IMAGE_VHD, None, None,
os_type="windows", architecture="i386") os_type="windows", architecture="i386")
self.check_vm_params_for_windows() self.check_vm_params_for_windows()
def test_spawn_glance(self): def test_spawn_glance(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE, self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE,
glance_stubs.FakeGlance.IMAGE_KERNEL, glance_stubs.FakeGlance.IMAGE_KERNEL,
glance_stubs.FakeGlance.IMAGE_RAMDISK) glance_stubs.FakeGlance.IMAGE_RAMDISK)
self.check_vm_params_for_linux_with_external_kernel() self.check_vm_params_for_linux_with_external_kernel()
def test_spawn_netinject_file(self): def test_spawn_netinject_file(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
db_fakes.stub_out_db_instance_api(self.stubs, injected=True) db_fakes.stub_out_db_instance_api(self.stubs, injected=True)
self._tee_executed = False self._tee_executed = False
@@ -547,7 +531,6 @@ class XenAPIVMTestCase(test.TestCase):
# Capture the sudo tee .../etc/network/interfaces command # Capture the sudo tee .../etc/network/interfaces command
(r'(sudo\s+)?tee.*interfaces', _tee_handler), (r'(sudo\s+)?tee.*interfaces', _tee_handler),
]) ])
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE, self._test_spawn(glance_stubs.FakeGlance.IMAGE_MACHINE,
glance_stubs.FakeGlance.IMAGE_KERNEL, glance_stubs.FakeGlance.IMAGE_KERNEL,
glance_stubs.FakeGlance.IMAGE_RAMDISK, glance_stubs.FakeGlance.IMAGE_RAMDISK,
@@ -555,7 +538,6 @@ class XenAPIVMTestCase(test.TestCase):
self.assertTrue(self._tee_executed) self.assertTrue(self._tee_executed)
def test_spawn_netinject_xenstore(self): def test_spawn_netinject_xenstore(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
db_fakes.stub_out_db_instance_api(self.stubs, injected=True) db_fakes.stub_out_db_instance_api(self.stubs, injected=True)
self._tee_executed = False self._tee_executed = False
@@ -784,7 +766,6 @@ class XenAPIMigrateInstance(test.TestCase):
conn.migrate_disk_and_power_off(instance, '127.0.0.1') conn.migrate_disk_and_power_off(instance, '127.0.0.1')
def test_finish_resize(self): def test_finish_resize(self):
FLAGS.image_service = 'nova.image.glance.GlanceImageService'
instance = db.instance_create(self.context, self.values) instance = db.instance_create(self.context, self.values)
stubs.stubout_session(self.stubs, stubs.FakeSessionForMigrationTests) stubs.stubout_session(self.stubs, stubs.FakeSessionForMigrationTests)
stubs.stubout_loopingcall_start(self.stubs) stubs.stubout_loopingcall_start(self.stubs)
@@ -828,7 +809,6 @@ class XenAPIDetermineDiskImageTestCase(test.TestCase):
def test_instance_disk(self): def test_instance_disk(self):
"""If a kernel is specified, the image type is DISK (aka machine).""" """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.image_ref = glance_stubs.FakeGlance.IMAGE_MACHINE
self.fake_instance.kernel_id = glance_stubs.FakeGlance.IMAGE_KERNEL self.fake_instance.kernel_id = glance_stubs.FakeGlance.IMAGE_KERNEL
self.assert_disk_type(vm_utils.ImageType.DISK) 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 If the kernel isn't specified, and we're not using Glance, then
DISK_RAW is assumed. DISK_RAW is assumed.
""" """
FLAGS.image_service = 'nova.image.s3.S3ImageService'
self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW self.fake_instance.image_ref = glance_stubs.FakeGlance.IMAGE_RAW
self.fake_instance.kernel_id = None self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_RAW) 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 If we're using Glance, then defer to the image_type field, which in
this case will be 'raw'. 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.image_ref = glance_stubs.FakeGlance.IMAGE_RAW
self.fake_instance.kernel_id = None self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_RAW) 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 If we're using Glance, then defer to the image_type field, which in
this case will be 'vhd'. 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.image_ref = glance_stubs.FakeGlance.IMAGE_VHD
self.fake_instance.kernel_id = None self.fake_instance.kernel_id = None
self.assert_disk_type(vm_utils.ImageType.DISK_VHD) 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) access = AuthManager().get_access_key(user, project)
if FLAGS.image_service == 'nova.image.glance.GlanceImageService': return cls._fetch_image_glance(session, instance_id, image,
return cls._fetch_image_glance(session, instance_id, image, access, image_type)
access, image_type)
else:
return cls._fetch_image_objectstore(session, instance_id, image,
access, user.secret,
image_type)
@classmethod @classmethod
def _fetch_image_glance_vhd(cls, session, instance_id, image, access, def _fetch_image_glance_vhd(cls, session, instance_id, image, access,
@@ -603,10 +598,7 @@ class VMHelper(HelperBase):
else: else:
return ImageType.DISK_RAW return ImageType.DISK_RAW
if FLAGS.image_service == 'nova.image.glance.GlanceImageService': image_type = determine_from_glance()
image_type = determine_from_glance()
else:
image_type = determine_from_instance()
log_disk_format(image_type) log_disk_format(image_type)
return image_type return image_type
@@ -626,42 +618,6 @@ class VMHelper(HelperBase):
return cls._fetch_image_glance_disk( return cls._fetch_image_glance_disk(
session, instance_id, image, access, image_type) 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 @classmethod
def determine_is_pv(cls, session, instance_id, vdi_ref, disk_image_type, def determine_is_pv(cls, session, instance_id, vdi_ref, disk_image_type,
os_type): os_type):
@@ -669,68 +625,26 @@ class VMHelper(HelperBase):
Determine whether the VM will use a paravirtualized kernel or if it Determine whether the VM will use a paravirtualized kernel or if it
will use hardware virtualization. will use hardware virtualization.
1. Objectstore (any image type): 1. Glance (VHD): then we use `os_type`, raise if not set
We use plugin to figure out whether the VDI uses PV
2. Glance (VHD): then we use `os_type`, raise if not set 2. Glance (DISK_RAW): use Pygrub to figure out if pv kernel is
3. Glance (DISK_RAW): use Pygrub to figure out if pv kernel is
available available
4. Glance (DISK): pv is assumed 3. 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
""" """
LOG.debug(_("Looking up vdi %s for PV kernel"), vdi_ref) LOG.debug(_("Looking up vdi %s for PV kernel"), vdi_ref)
if disk_image_type == ImageType.DISK_VHD: if disk_image_type == ImageType.DISK_VHD:
# 2. VHD # 1. VHD
if os_type == 'windows': if os_type == 'windows':
is_pv = False is_pv = False
else: else:
is_pv = True is_pv = True
elif disk_image_type == ImageType.DISK_RAW: elif disk_image_type == ImageType.DISK_RAW:
# 3. RAW # 2. RAW
is_pv = with_vdi_attached_here(session, vdi_ref, True, _is_vdi_pv) is_pv = with_vdi_attached_here(session, vdi_ref, True, _is_vdi_pv)
elif disk_image_type == ImageType.DISK: elif disk_image_type == ImageType.DISK:
# 4. Disk # 3. Disk
is_pv = True is_pv = True
else: else:
raise exception.Error(_("Unknown image format %(disk_image_type)s") raise exception.Error(_("Unknown image format %(disk_image_type)s")