From b7632baa817a8425c2dcab4a01e2f7f0983e5f9e Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Fri, 19 Dec 2014 11:28:35 -0500 Subject: add user-data encoding support for gce --- cloudinit/sources/DataSourceGCE.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'cloudinit/sources') diff --git a/cloudinit/sources/DataSourceGCE.py b/cloudinit/sources/DataSourceGCE.py index 7091e3c1..e6f3651c 100644 --- a/cloudinit/sources/DataSourceGCE.py +++ b/cloudinit/sources/DataSourceGCE.py @@ -15,6 +15,8 @@ # along with this program. If not, see . +from base64 import b64decode + from cloudinit import log as logging from cloudinit import util from cloudinit import sources @@ -58,6 +60,7 @@ class DataSourceGCE(sources.DataSource): ('local-hostname', 'instance/hostname', True), ('public-keys', 'project/attributes/sshKeys', False), ('user-data', 'instance/attributes/user-data', False), + ('user-data-encoding', 'instance/attributes/user-data-encoding', False), ] # if we cannot resolve the metadata server, then no point in trying @@ -101,6 +104,12 @@ class DataSourceGCE(sources.DataSource): lines = self.metadata['public-keys'].splitlines() self.metadata['public-keys'] = [self._trim_key(k) for k in lines] + if self.metadata.get('user-data-encoding'): + if self.metadata['user-data-encoding'] == 'base64': + self.metadata['user-data'] = b64decode(self.metadata['user-data']) + else: + LOG.warn('user-data-encoding: unknown encoding specified', None, None) + return found @property -- cgit v1.2.3 From c8ab70b9413e3d8d0f240d968023258b8a0970e6 Mon Sep 17 00:00:00 2001 From: Wayne Witzel III Date: Tue, 6 Jan 2015 11:41:05 -0500 Subject: Corrected errant logging message. --- cloudinit/sources/DataSourceGCE.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'cloudinit/sources') diff --git a/cloudinit/sources/DataSourceGCE.py b/cloudinit/sources/DataSourceGCE.py index e6f3651c..92e5a28e 100644 --- a/cloudinit/sources/DataSourceGCE.py +++ b/cloudinit/sources/DataSourceGCE.py @@ -29,7 +29,6 @@ BUILTIN_DS_CONFIG = { } REQUIRED_FIELDS = ('instance-id', 'availability-zone', 'local-hostname') - class DataSourceGCE(sources.DataSource): def __init__(self, sys_cfg, distro, paths): sources.DataSource.__init__(self, sys_cfg, distro, paths) @@ -104,11 +103,12 @@ class DataSourceGCE(sources.DataSource): lines = self.metadata['public-keys'].splitlines() self.metadata['public-keys'] = [self._trim_key(k) for k in lines] - if self.metadata.get('user-data-encoding'): - if self.metadata['user-data-encoding'] == 'base64': + encoding = self.metadata.get('user-data-encoding') + if encoding: + if encoding == 'base64': self.metadata['user-data'] = b64decode(self.metadata['user-data']) else: - LOG.warn('user-data-encoding: unknown encoding specified', None, None) + LOG.warn('unknown user-data-encoding: %s, ignoring', encoding) return found -- cgit v1.2.3