diff options
author | Scott Moser <smoser@brickies.net> | 2016-08-12 17:05:04 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2016-08-12 17:05:04 -0400 |
commit | bf1728902bd3e81e00aa9786a5b1c67e4f30a659 (patch) | |
tree | 857c914003fda2ec5223425a31b646cbafd9907b /cloudinit/sources/__init__.py | |
parent | e28ba310872846e0bc60595aed353c17b760fdcb (diff) | |
parent | bc2c3267549b9067c017a34e22bbee18890aec06 (diff) | |
download | vyos-cloud-init-bf1728902bd3e81e00aa9786a5b1c67e4f30a659.tar.gz vyos-cloud-init-bf1728902bd3e81e00aa9786a5b1c67e4f30a659.zip |
Merge branch 'master' into ubuntu/devel
Diffstat (limited to 'cloudinit/sources/__init__.py')
-rw-r--r-- | cloudinit/sources/__init__.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py index 87b8e524..d1395270 100644 --- a/cloudinit/sources/__init__.py +++ b/cloudinit/sources/__init__.py @@ -21,8 +21,8 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. import abc +import copy import os - import six from cloudinit import importer @@ -355,6 +355,31 @@ def instance_id_matches_system_uuid(instance_id, field='system-uuid'): return instance_id.lower() == dmi_value.lower() +def convert_vendordata(data, recurse=True): + """data: a loaded object (strings, arrays, dicts). + return something suitable for cloudinit vendordata_raw. + + if data is: + None: return None + string: return string + list: return data + the list is then processed in UserDataProcessor + dict: return convert_vendordata(data.get('cloud-init')) + """ + if not data: + return None + if isinstance(data, six.string_types): + return data + if isinstance(data, list): + return copy.deepcopy(data) + if isinstance(data, dict): + if recurse is True: + return convert_vendordata(data.get('cloud-init'), + recurse=False) + raise ValueError("vendordata['cloud-init'] cannot be dict") + raise ValueError("Unknown data type for vendordata: %s" % type(data)) + + # 'depends' is a list of dependencies (DEP_FILESYSTEM) # ds_list is a list of 2 item lists # ds_list = [ |