Fix metadata access in prep for instance objects

Related to blueprint unified-object-model
Fixes: bug #1192012

Change-Id: I8b708dc3d89fedfcb4bbf5d26b959da1298b0525
This commit is contained in:
Alexei Kornienko
2013-06-19 12:37:57 +03:00
parent 2bcd6b59a6
commit 8596f8b294
4 changed files with 13 additions and 5 deletions

View File

@@ -32,6 +32,8 @@ from nova.compute import flavors
from nova import conductor from nova import conductor
from nova import context from nova import context
from nova import network from nova import network
from nova import utils
from nova.openstack.common import timeutils from nova.openstack.common import timeutils
from nova.virt import netutils from nova.virt import netutils
@@ -127,9 +129,7 @@ class InstanceMetadata():
self.address = address self.address = address
# expose instance metadata. # expose instance metadata.
self.launch_metadata = {} self.launch_metadata = utils.instance_meta(instance)
for item in instance.get('metadata', []):
self.launch_metadata[item['key']] = item['value']
self.password = password.extract_password(instance) self.password = password.extract_password(instance)

View File

@@ -25,6 +25,7 @@ from nova.api.openstack.compute.views import images as views_images
from nova.compute import flavors from nova.compute import flavors
from nova.openstack.common import log as logging from nova.openstack.common import log as logging
from nova.openstack.common import timeutils from nova.openstack.common import timeutils
from nova import utils
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@@ -132,8 +133,7 @@ class ViewBuilder(common.ViewBuilder):
@staticmethod @staticmethod
def _get_metadata(instance): def _get_metadata(instance):
metadata = instance.get("metadata", []) return utils.instance_meta(instance)
return dict((item['key'], item['value']) for item in metadata)
@staticmethod @staticmethod
def _get_vm_state(instance): def _get_vm_state(instance):

View File

@@ -71,6 +71,7 @@ INSTANCES = (
'info_cache': {'network_info': []}, 'info_cache': {'network_info': []},
'hostname': 'test.novadomain', 'hostname': 'test.novadomain',
'display_name': 'my_displayname', 'display_name': 'my_displayname',
'metadata': {}
}, },
) )

View File

@@ -973,6 +973,13 @@ def dict_to_metadata(metadata):
return result 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): def instance_sys_meta(instance):
if isinstance(instance['system_metadata'], dict): if isinstance(instance['system_metadata'], dict):
return instance['system_metadata'] return instance['system_metadata']