summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-06-22 23:26:50 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2012-06-22 23:26:50 -0700
commitf8413af9168adc0ad7c730b9adea9eba67949ba5 (patch)
tree03b9896cb71a24839e12eb6db4dbd5a640f21b4a /cloudinit
parent9d1f042f862c114f1613dcd5d2d8c401a1c54eaa (diff)
downloadvyos-cloud-init-f8413af9168adc0ad7c730b9adea9eba67949ba5.tar.gz
vyos-cloud-init-f8413af9168adc0ad7c730b9adea9eba67949ba5.zip
1. Move the getkeybyid function back here but add some slight adjustments
a. Instead of executing a bash string, write out a temporary file and then just execute '/bin/sh' on that file with the right arguments instead. 2. Rename util.SilentTemporaryFile to util.ExtendedTemporaryFile and update the usages of the previous name accordingly, this better reflects what this temp file is. 3. More teenie pep8 line length fixings
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/config/cc_apt_update_upgrade.py27
-rw-r--r--cloudinit/config/cc_bootcmd.py3
-rw-r--r--cloudinit/config/cc_chef.py2
-rw-r--r--cloudinit/config/cc_resizefs.py4
-rw-r--r--cloudinit/util.py22
5 files changed, 31 insertions, 27 deletions
diff --git a/cloudinit/config/cc_apt_update_upgrade.py b/cloudinit/config/cc_apt_update_upgrade.py
index 6719da52..8ecd9c94 100644
--- a/cloudinit/config/cc_apt_update_upgrade.py
+++ b/cloudinit/config/cc_apt_update_upgrade.py
@@ -29,6 +29,21 @@ distros = ['ubuntu', 'debian']
PROXY_TPL = "Acquire::HTTP::Proxy \"%s\";\n"
PROXY_FN = "/etc/apt/apt.conf.d/95cloud-init-proxy"
+# A temporary shell program to get a given gpg key
+# from a given keyserver
+EXPORT_GPG_KEYID = """
+ k=${1} ks=${2};
+ exec 2>/dev/null
+ [ -n "$k" ] || exit 1;
+ armour=$(gpg --list-keys --armour "${k}")
+ if [ -z "${armour}" ]; then
+ gpg --keyserver ${ks} --recv $k >/dev/null &&
+ armour=$(gpg --export --armour "${k}") &&
+ gpg --batch --yes --delete-keys "${k}"
+ fi
+ [ -n "${armour}" ] && echo "${armour}"
+"""
+
def handle(_name, cfg, cloud, log, _args):
update = util.get_cfg_option_bool(cfg, 'apt_update', False)
@@ -106,6 +121,16 @@ def handle(_name, cfg, cloud, log, _args):
raise errors[-1]
+# get gpg keyid from keyserver
+def getkeybyid(keyid, keyserver):
+ with util.ExtendedTemporaryFile(suffix='.sh') as fh:
+ fh.write(EXPORT_GPG_KEYID)
+ fh.flush()
+ cmd = ['/bin/sh', fh.name, keyid, keyserver]
+ (stdout, _stderr) = util.subp(cmd)
+ return stdout.strip()
+
+
def mirror2lists_fileprefix(mirror):
string = mirror
# take of http:// or ftp://
@@ -181,7 +206,7 @@ def add_sources(cloud, srclist, template_params=None):
if 'keyserver' in ent:
ks = ent['keyserver']
try:
- ent['key'] = util.getkeybyid(ent['keyid'], ks)
+ ent['key'] = getkeybyid(ent['keyid'], ks)
except:
errorlist.append([source, "failed to get key from %s" % ks])
continue
diff --git a/cloudinit/config/cc_bootcmd.py b/cloudinit/config/cc_bootcmd.py
index 89ccf3f1..bae1ea54 100644
--- a/cloudinit/config/cc_bootcmd.py
+++ b/cloudinit/config/cc_bootcmd.py
@@ -19,7 +19,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
-import tempfile
from cloudinit import util
from cloudinit.settings import PER_ALWAYS
@@ -34,7 +33,7 @@ def handle(name, cfg, cloud, log, _args):
" no 'bootcmd' key in configuration"), name)
return
- with tempfile.NamedTemporaryFile(suffix=".sh") as tmpf:
+ with util.ExtendedTemporaryFile(suffix=".sh") as tmpf:
try:
content = util.shellify(cfg["bootcmd"])
tmpf.write(content)
diff --git a/cloudinit/config/cc_chef.py b/cloudinit/config/cc_chef.py
index d682398a..6f568261 100644
--- a/cloudinit/config/cc_chef.py
+++ b/cloudinit/config/cc_chef.py
@@ -96,7 +96,7 @@ def handle(name, cfg, cloud, log, _args):
install_chef_from_gems(cloud.distro, ruby_version, chef_version)
# and finally, run chef-client
log.debug('Running chef-client')
- util.subp(['/usr/bin/chef-client',
+ util.subp(['/usr/bin/chef-client',
'-d', '-i', '1800', '-s', '20'], capture=False)
elif install_type == 'packages':
# this will install and run the chef-client from packages
diff --git a/cloudinit/config/cc_resizefs.py b/cloudinit/config/cc_resizefs.py
index 7e1428e9..69cd8872 100644
--- a/cloudinit/config/cc_resizefs.py
+++ b/cloudinit/config/cc_resizefs.py
@@ -79,8 +79,8 @@ def handle(name, cfg, cloud, log, args):
# TODO: allow what is to be resized to be configurable??
resize_what = cloud.paths.join(False, "/")
- with util.SilentTemporaryFile(prefix="cloudinit.resizefs.",
- dir=resize_root_d, delete=True) as tfh:
+ with util.ExtendedTemporaryFile(prefix="cloudinit.resizefs.",
+ dir=resize_root_d, delete=True) as tfh:
devpth = tfh.name
# Delete the file so that mknod will work
diff --git a/cloudinit/util.py b/cloudinit/util.py
index baa3def1..6cdf9ff3 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -157,7 +157,7 @@ class MountFailedError(Exception):
pass
-def SilentTemporaryFile(**kwargs):
+def ExtendedTemporaryFile(**kwargs):
fh = tempfile.NamedTemporaryFile(**kwargs)
# Replace its unlink with a quiet version
# that does not raise errors when the
@@ -517,26 +517,6 @@ def del_dir(path):
shutil.rmtree(path)
-# get gpg keyid from keyserver
-def getkeybyid(keyid, keyserver):
- # TODO fix this...
- shcmd = """
- k=${1} ks=${2};
- exec 2>/dev/null
- [ -n "$k" ] || exit 1;
- armour=$(gpg --list-keys --armour "${k}")
- if [ -z "${armour}" ]; then
- gpg --keyserver ${ks} --recv $k >/dev/null &&
- armour=$(gpg --export --armour "${k}") &&
- gpg --batch --yes --delete-keys "${k}"
- fi
- [ -n "${armour}" ] && echo "${armour}"
- """
- args = ['sh', '-c', shcmd, "export-gpg-keyid", keyid, keyserver]
- (stdout, _stderr) = subp(args)
- return stdout
-
-
def runparts(dirp, skip_no_exist=True):
if skip_no_exist and not os.path.isdir(dirp):
return