diff options
-rw-r--r-- | nova/compute/api.py | 6 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 19 |
2 files changed, 25 insertions, 0 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 3fd358a34..3990a9596 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -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): diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 51e36daab..83671d265 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -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') |