Record instance architecture types.
In order to support image architectures other than x86, we need to record the instance architecture when it is running. Glance has the information that we need so we take the information that glance provides us. This is the first step for support other arches like armhf. Change-Id: Ia9ca1353a7cf56955d00d17f7bc1bfb3712a89ab Signed-off-by: Chuck Short <chuck.short@canonical.com>
This commit is contained in:
@@ -387,6 +387,9 @@ class API(base.Base):
|
||||
if reservation_id is None:
|
||||
reservation_id = utils.generate_uid('r')
|
||||
|
||||
# grab the architecture from glance
|
||||
architecture = image['properties'].get('architecture', 'Unknown')
|
||||
|
||||
root_device_name = block_device.properties_root_device_name(
|
||||
image['properties'])
|
||||
|
||||
@@ -421,6 +424,7 @@ class API(base.Base):
|
||||
'access_ip_v6': access_ip_v6,
|
||||
'availability_zone': availability_zone,
|
||||
'root_device_name': root_device_name,
|
||||
'architecture': architecture,
|
||||
'progress': 0}
|
||||
|
||||
options_from_image = self._inherit_properties_from_image(
|
||||
@@ -636,6 +640,8 @@ class API(base.Base):
|
||||
updates['vm_state'] = vm_states.BUILDING
|
||||
updates['task_state'] = task_states.SCHEDULING
|
||||
|
||||
updates['architecture'] = image['properties'].get('architecture')
|
||||
|
||||
if (image['properties'].get('mappings', []) or
|
||||
image['properties'].get('block_device_mapping', []) or
|
||||
block_device_mapping):
|
||||
|
||||
@@ -154,6 +154,7 @@ class BaseTestCase(test.TestCase):
|
||||
inst['vcpus'] = 0
|
||||
inst['root_gb'] = 0
|
||||
inst['ephemeral_gb'] = 0
|
||||
inst['architecture'] = 'x86_64'
|
||||
inst.update(params)
|
||||
return db.instance_create(self.context, inst)
|
||||
|
||||
@@ -3439,6 +3440,24 @@ class ComputeAPITestCase(BaseTestCase):
|
||||
|
||||
db.instance_destroy(self.context, refs[0]['id'])
|
||||
|
||||
def test_instance_architecture(self):
|
||||
"""Test the instance architecture"""
|
||||
i_ref = self._create_fake_instance()
|
||||
self.assertEqual(i_ref['architecture'], 'x86_64')
|
||||
db.instance_destroy(self.context, i_ref['id'])
|
||||
|
||||
def test_instance_unknown_architecture(self):
|
||||
"""Test if the architecture is unknown."""
|
||||
instance = self._create_fake_instance(
|
||||
params={'architecture': ''})
|
||||
try:
|
||||
self.compute.run_instance(self.context, instance['uuid'])
|
||||
instances = db.instance_get_all(context.get_admin_context())
|
||||
instance = instances[0]
|
||||
self.assertNotEqual(instance['architecture'], 'Unknown')
|
||||
finally:
|
||||
db.instance_destroy(self.context, instance['id'])
|
||||
|
||||
def test_instance_name_template(self):
|
||||
"""Test the instance_name template"""
|
||||
self.flags(instance_name_template='instance-%d')
|
||||
|
||||
Reference in New Issue
Block a user