From 847fda8353759e6eddee5a7478c9078b617a7837 Mon Sep 17 00:00:00 2001 From: Scott Moser Date: Tue, 8 Nov 2016 16:19:26 -0500 Subject: Ec2: protect against non-dictionary in block-device-mapping. Oracle public cloud has the string 'unavailable' in its metadata service for 'block-device-mapping'. The change here is to return None in device_name_to_device if that is the case. --- cloudinit/sources/DataSourceEc2.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py index bc84ef5d..bb6d6fd7 100644 --- a/cloudinit/sources/DataSourceEc2.py +++ b/cloudinit/sources/DataSourceEc2.py @@ -151,6 +151,10 @@ class DataSourceEc2(sources.DataSource): # 'root': '/dev/sda1'} found = None bdm = self.metadata['block-device-mapping'] + if not isinstance(bdm, dict): + LOG.debug("block-device-mapping not a dictionary: '%s'", bdm) + return None + for (entname, device) in bdm.items(): if entname == name: found = device -- cgit v1.2.3