diff options
| author | Dan Smith <danms@us.ibm.com> | 2013-05-10 15:34:00 -0700 |
|---|---|---|
| committer | Dan Smith <danms@us.ibm.com> | 2013-05-22 17:03:06 -0700 |
| commit | 96164cecc6b7bf447d06896f723dab416e63ee06 (patch) | |
| tree | 7431eec5c982513e741e2a2ba7025fe398a1ddab | |
| parent | 986fa041a7cb8b85f4b3be47407288c1f71c0972 (diff) | |
| download | nova-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.py | 2 | ||||
| -rw-r--r-- | nova/notifications.py | 3 | ||||
| -rw-r--r-- | nova/utils.py | 7 |
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: |
