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
This commit is contained in:
parent
45cc6af3b6
commit
cf2745ebfc
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue