summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Smith <danms@us.ibm.com>2013-05-10 15:34:00 -0700
committerDan Smith <danms@us.ibm.com>2013-05-22 17:03:06 -0700
commit96164cecc6b7bf447d06896f723dab416e63ee06 (patch)
tree7431eec5c982513e741e2a2ba7025fe398a1ddab
parent986fa041a7cb8b85f4b3be47407288c1f71c0972 (diff)
downloadnova-96164cecc6b7bf447d06896f723dab416e63ee06.tar.gz
nova-96164cecc6b7bf447d06896f723dab416e63ee06.tar.xz
nova-96164cecc6b7bf447d06896f723dab416e63ee06.zip
Make a few places tolerant of sys_meta being a dict
This will be necessary as we start to introduce objects with real dicts in system_metadata. These are the common spots that need to be ready ahead of time. The rest are at the actual use sites and can/will be replaced when individual uses are converted to objects. Related to bp/unified-internal-objects Change-Id: I8314e0d52ec2ae800765f60ce58ce9b309d7d513
-rw-r--r--nova/compute/flavors.py2
-rw-r--r--nova/notifications.py3
-rw-r--r--nova/utils.py7
3 files changed, 9 insertions, 3 deletions
diff --git a/nova/compute/flavors.py b/nova/compute/flavors.py
index 58dcd3fa5..7177f26bd 100644
--- a/nova/compute/flavors.py
+++ b/nova/compute/flavors.py
@@ -238,7 +238,7 @@ def extract_instance_type(instance, prefix=''):
information."""
instance_type = {}
- sys_meta = utils.metadata_to_dict(instance['system_metadata'])
+ sys_meta = utils.instance_sys_meta(instance)
for key, type_fn in system_metadata_instance_type_props.items():
type_key = '%sinstance_type_%s' % (prefix, key)
instance_type[key] = type_fn(sys_meta[type_key])
diff --git a/nova/notifications.py b/nova/notifications.py
index 4442d9904..2e5e7660d 100644
--- a/nova/notifications.py
+++ b/nova/notifications.py
@@ -288,8 +288,7 @@ def info_from_instance(context, instance_ref, network_info,
instance_type_name = instance_type.get('name', '')
if system_metadata is None:
- system_metadata = utils.metadata_to_dict(
- instance_ref['system_metadata'])
+ system_metadata = utils.instance_sys_meta(instance_ref)
instance_info = dict(
# Owner properties
diff --git a/nova/utils.py b/nova/utils.py
index 3e9d8c597..97551e8eb 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -1032,6 +1032,13 @@ def dict_to_metadata(metadata):
return result
+def instance_sys_meta(instance):
+ if isinstance(instance['system_metadata'], dict):
+ return instance['system_metadata']
+ else:
+ return metadata_to_dict(instance['system_metadata'])
+
+
def get_wrapped_function(function):
"""Get the method at the bottom of a stack of decorators."""
if not hasattr(function, 'func_closure') or not function.func_closure: