Read baremetal images from extra_specs namespace.

Baremetal PXE driver should read deploy_kernel_id & deploy_ramdisk_id
from the 'baremetal:' namespace within instance_type['extra_specs']
so that it doesn't conflict with ComputeCapabilitiesFilter any more.

Fixes bug 1129485.

Change-Id: I84b3acb2ed83dc2b1ff8f1a21ca1d95f7d25751a
This commit is contained in:
Devananda van der Veen 2013-03-04 11:03:40 -08:00
parent bcdbe9ba88
commit 813ed1b61d
2 changed files with 18 additions and 16 deletions

View File

@ -202,8 +202,8 @@ class PXEClassMethodsTestCase(BareMetalPXETestCase):
def test_get_instance_deploy_ids(self):
self.instance['extra_specs'] = {
'deploy_kernel_id': 'aaaa',
'deploy_ramdisk_id': 'bbbb',
'baremetal:deploy_kernel_id': 'aaaa',
'baremetal:deploy_ramdisk_id': 'bbbb',
}
self.flags(deploy_kernel="fail", group='baremetal')
self.flags(deploy_ramdisk="fail", group='baremetal')
@ -289,8 +289,8 @@ class PXEClassMethodsTestCase(BareMetalPXETestCase):
# Note that it is passed on the 'instance' object, despite being
# inherited from the instance_types_extra_specs table.
extra_specs = {
'deploy_kernel_id': 'eeee',
'deploy_ramdisk_id': 'ffff',
'baremetal:deploy_kernel_id': 'eeee',
'baremetal:deploy_ramdisk_id': 'ffff',
}
instance_type['extra_specs'] = extra_specs
res = pxe.get_tftp_image_info(self.instance, instance_type)
@ -300,8 +300,8 @@ class PXEClassMethodsTestCase(BareMetalPXETestCase):
# However, if invalid values are passed on the image extra_specs,
# this should still raise an exception.
extra_specs = {
'deploy_kernel_id': '',
'deploy_ramdisk_id': '',
'baremetal:deploy_kernel_id': '',
'baremetal:deploy_ramdisk_id': '',
}
instance_type['extra_specs'] = extra_specs
self.assertRaises(exception.NovaException,
@ -324,8 +324,8 @@ class PXEPrivateMethodsTestCase(BareMetalPXETestCase):
self.instance['ramdisk_id'] = 'bbbb'
instance_type = utils.get_test_instance_type()
extra_specs = {
'deploy_kernel_id': 'cccc',
'deploy_ramdisk_id': 'dddd',
'baremetal:deploy_kernel_id': 'cccc',
'baremetal:deploy_ramdisk_id': 'dddd',
}
instance_type['extra_specs'] = extra_specs
image_info = pxe.get_tftp_image_info(self.instance, instance_type)
@ -477,8 +477,8 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase):
self._create_node()
instance_type = {
'extra_specs': {
'deploy_kernel_id': 'eeee',
'deploy_ramdisk_id': 'ffff',
'baremetal:deploy_kernel_id': 'eeee',
'baremetal:deploy_ramdisk_id': 'ffff',
}
}
self.instance['uuid'] = 'fake-uuid'
@ -540,8 +540,9 @@ class PXEPublicMethodsTestCase(BareMetalPXETestCase):
self.mox.StubOutWithMock(pxe, 'get_tftp_image_info')
self.mox.StubOutWithMock(self.driver, '_collect_mac_addresses')
extra_specs = dict(extra_specs=dict(deploy_ramdisk_id='ignore',
deploy_kernel_id='ignore'))
extra_specs = dict(extra_specs={
'baremetal:deploy_ramdisk_id': 'ignore',
'baremetal:deploy_kernel_id': 'ignore'})
pxe.get_tftp_image_info(self.instance, extra_specs).\
AndRaise(exception.NovaException)
bm_utils.unlink_without_raise(pxe_path)

View File

@ -150,12 +150,12 @@ def build_network_config(network_info):
def get_deploy_aki_id(instance_type):
return instance_type.get('extra_specs', {}).\
get('deploy_kernel_id', CONF.baremetal.deploy_kernel)
get('baremetal:deploy_kernel_id', CONF.baremetal.deploy_kernel)
def get_deploy_ari_id(instance_type):
return instance_type.get('extra_specs', {}).\
get('deploy_ramdisk_id', CONF.baremetal.deploy_ramdisk)
get('baremetal:deploy_ramdisk_id', CONF.baremetal.deploy_ramdisk)
def get_image_dir_path(instance):
@ -423,8 +423,9 @@ class PXE(base.NodeDriver):
# NOTE(danms): the instance_type extra_specs do not need to be
# present/correct at deactivate time, so pass something empty
# to avoid an extra lookup
instance_type = dict(extra_specs=dict(deploy_ramdisk_id='ignore',
deploy_kernel_id='ignore'))
instance_type = dict(extra_specs={
'baremetal:deploy_ramdisk_id': 'ignore',
'baremetal:deploy_kernel_id': 'ignore'})
try:
image_info = get_tftp_image_info(instance, instance_type)
except exception.NovaException: