diff options
author | Scott Moser <smoser@ubuntu.com> | 2014-03-27 10:06:57 -0400 |
---|---|---|
committer | Scott Moser <smoser@ubuntu.com> | 2014-03-27 10:06:57 -0400 |
commit | 2f9b47be819e4aa90d0cfd940557b90cbd6912de (patch) | |
tree | f39e6f00ddb1b744321c3d4072bd74ac88189759 /cloudinit | |
parent | 11d6dbfad89e3f9a56925f7671fa7ee3e86af918 (diff) | |
parent | 2ecefdf51cd93b593bea450b4d751021da91e748 (diff) | |
download | vyos-cloud-init-2f9b47be819e4aa90d0cfd940557b90cbd6912de.tar.gz vyos-cloud-init-2f9b47be819e4aa90d0cfd940557b90cbd6912de.zip |
OpenNebula: support base64 encoded user-data
This change adds the possibility to have base64 encoded userdata in
OpenNebula source.
OpenNebula uses a text file with shell variables for storing the
configuration variables (including user provided data). Some user data may
not be renderable into this format, so using base64 encoding alleviates
the problem.
The change here allows the user to provide a second variable
USERDATA_ENCODING (or USER_DATA_ENCODING) and set that value to 'base64'
to indicate that USERDATA is base64 encoded.
Diffstat (limited to 'cloudinit')
-rw-r--r-- | cloudinit/sources/DataSourceOpenNebula.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/cloudinit/sources/DataSourceOpenNebula.py b/cloudinit/sources/DataSourceOpenNebula.py index b0464cbb..34557f8b 100644 --- a/cloudinit/sources/DataSourceOpenNebula.py +++ b/cloudinit/sources/DataSourceOpenNebula.py @@ -4,11 +4,13 @@ # Copyright (C) 2012 Yahoo! Inc. # Copyright (C) 2012-2013 CERIT Scientific Cloud # Copyright (C) 2012-2013 OpenNebula.org +# Copyright (C) 2014 Consejo Superior de Investigaciones Cientificas # # Author: Scott Moser <scott.moser@canonical.com> # Author: Joshua Harlow <harlowja@yahoo-inc.com> # Author: Vlastimil Holer <xholer@mail.muni.cz> # Author: Javier Fontan <jfontan@opennebula.org> +# Author: Enol Fernandez <enolfc@ifca.unican.es> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 3, as @@ -22,6 +24,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import base64 import os import pwd import re @@ -417,6 +420,16 @@ def read_context_disk_dir(source_dir, asuser=None): elif "USERDATA" in context: results['userdata'] = context["USERDATA"] + # b64decode user data if necessary (default) + if 'userdata' in results: + encoding = context.get('USERDATA_ENCODING', + context.get('USER_DATA_ENCODING')) + if encoding == "base64": + try: + results['userdata'] = base64.b64decode(results['userdata']) + except TypeError: + LOG.warn("Failed base64 decoding of userdata") + # generate static /etc/network/interfaces # only if there are any required context variables # http://opennebula.org/documentation:rel3.8:cong#network_configuration |