diff options
-rw-r--r-- | nova/api/metadata/base.py | 6 | ||||
-rw-r--r-- | nova/api/openstack/compute/views/servers.py | 4 | ||||
-rw-r--r-- | nova/tests/test_metadata.py | 1 | ||||
-rw-r--r-- | nova/utils.py | 7 |
4 files changed, 13 insertions, 5 deletions
diff --git a/nova/api/metadata/base.py b/nova/api/metadata/base.py index 425e5bf53..da0a50662 100644 --- a/nova/api/metadata/base.py +++ b/nova/api/metadata/base.py @@ -32,6 +32,8 @@ from nova.compute import flavors from nova import conductor from nova import context from nova import network +from nova import utils + from nova.openstack.common import timeutils from nova.virt import netutils @@ -127,9 +129,7 @@ class InstanceMetadata(): self.address = address # expose instance metadata. - self.launch_metadata = {} - for item in instance.get('metadata', []): - self.launch_metadata[item['key']] = item['value'] + self.launch_metadata = utils.instance_meta(instance) self.password = password.extract_password(instance) diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py index 734bb647d..03b0a97a5 100644 --- a/nova/api/openstack/compute/views/servers.py +++ b/nova/api/openstack/compute/views/servers.py @@ -25,6 +25,7 @@ from nova.api.openstack.compute.views import images as views_images from nova.compute import flavors from nova.openstack.common import log as logging from nova.openstack.common import timeutils +from nova import utils LOG = logging.getLogger(__name__) @@ -132,8 +133,7 @@ class ViewBuilder(common.ViewBuilder): @staticmethod def _get_metadata(instance): - metadata = instance.get("metadata", []) - return dict((item['key'], item['value']) for item in metadata) + return utils.instance_meta(instance) @staticmethod def _get_vm_state(instance): diff --git a/nova/tests/test_metadata.py b/nova/tests/test_metadata.py index 8cdc3e7af..2aece7ac8 100644 --- a/nova/tests/test_metadata.py +++ b/nova/tests/test_metadata.py @@ -71,6 +71,7 @@ INSTANCES = ( 'info_cache': {'network_info': []}, 'hostname': 'test.novadomain', 'display_name': 'my_displayname', + 'metadata': {} }, ) diff --git a/nova/utils.py b/nova/utils.py index 5e968bd35..24823484e 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -973,6 +973,13 @@ def dict_to_metadata(metadata): return result +def instance_meta(instance): + if isinstance(instance['metadata'], dict): + return instance['metadata'] + else: + return metadata_to_dict(instance['metadata']) + + def instance_sys_meta(instance): if isinstance(instance['system_metadata'], dict): return instance['system_metadata'] |