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:
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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': {}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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']
|
||||||
|
|||||||
Reference in New Issue
Block a user