summaryrefslogtreecommitdiff
path: root/cloudinit
diff options
context:
space:
mode:
authorJoshua Harlow <harlowja@yahoo-inc.com>2012-06-20 17:13:55 -0700
committerJoshua Harlow <harlowja@yahoo-inc.com>2012-06-20 17:13:55 -0700
commitec4bdc4fb8d8d3a8f8b4f498eb47eac740485ede (patch)
tree306886dd731180f1c51583679a7bb33c7c7f10d8 /cloudinit
parent5c5525b35970611a5c4dbd44c5c6b6e2d57556cb (diff)
downloadvyos-cloud-init-ec4bdc4fb8d8d3a8f8b4f498eb47eac740485ede.tar.gz
vyos-cloud-init-ec4bdc4fb8d8d3a8f8b4f498eb47eac740485ede.zip
Massive pylint + pep8 fixups!
Diffstat (limited to 'cloudinit')
-rw-r--r--cloudinit/cloud.py3
-rw-r--r--cloudinit/config/__init__.py2
-rw-r--r--cloudinit/config/cc_chef.py14
-rw-r--r--cloudinit/config/cc_disable_ec2_metadata.py4
-rw-r--r--cloudinit/config/cc_final_message.py8
-rw-r--r--cloudinit/config/cc_foo.py8
-rw-r--r--cloudinit/config/cc_keys_to_console.py8
-rw-r--r--cloudinit/config/cc_landscape.py2
-rw-r--r--cloudinit/config/cc_mcollective.py4
-rw-r--r--cloudinit/config/cc_mounts.py13
-rw-r--r--cloudinit/config/cc_phone_home.py11
-rw-r--r--cloudinit/config/cc_puppet.py2
-rw-r--r--cloudinit/config/cc_resizefs.py10
-rw-r--r--cloudinit/config/cc_salt_minion.py2
-rw-r--r--cloudinit/config/cc_scripts_per_boot.py6
-rw-r--r--cloudinit/config/cc_scripts_per_instance.py6
-rw-r--r--cloudinit/config/cc_scripts_per_once.py6
-rw-r--r--cloudinit/config/cc_scripts_user.py6
-rw-r--r--cloudinit/config/cc_set_passwords.py4
-rw-r--r--cloudinit/config/cc_ssh.py39
-rw-r--r--cloudinit/distros/__init__.py1
-rw-r--r--cloudinit/distros/rhel.py14
-rw-r--r--cloudinit/distros/ubuntu.py6
-rw-r--r--cloudinit/handlers/__init__.py8
-rw-r--r--cloudinit/helpers.py6
-rw-r--r--cloudinit/log.py2
-rw-r--r--cloudinit/settings.py2
-rw-r--r--cloudinit/sources/DataSourceCloudStack.py2
-rw-r--r--cloudinit/sources/DataSourceConfigDrive.py2
-rw-r--r--cloudinit/sources/DataSourceEc2.py6
-rw-r--r--cloudinit/sources/DataSourceMAAS.py1
-rw-r--r--cloudinit/sources/DataSourceNoCloud.py2
-rw-r--r--cloudinit/ssh_util.py5
-rw-r--r--cloudinit/stages.py6
-rw-r--r--cloudinit/url_helper.py14
-rw-r--r--cloudinit/user_data.py28
-rw-r--r--cloudinit/util.py37
37 files changed, 149 insertions, 151 deletions
diff --git a/cloudinit/cloud.py b/cloudinit/cloud.py
index 90679202..6cdcb76a 100644
--- a/cloudinit/cloud.py
+++ b/cloudinit/cloud.py
@@ -38,6 +38,7 @@ LOG = logging.getLogger(__name__)
# as providing a backwards compatible object that can be maintained
# while the stages/other objects can be worked on independently...
+
class Cloud(object):
def __init__(self, datasource, paths, cfg, distro, runners):
self.datasource = datasource
@@ -71,7 +72,7 @@ class Cloud(object):
# The rest of thes are just useful proxies
def get_userdata(self):
return self.datasource.get_userdata()
-
+
def get_instance_id(self):
return self.datasource.get_instance_id()
diff --git a/cloudinit/config/__init__.py b/cloudinit/config/__init__.py
index 74e2f275..02e32462 100644
--- a/cloudinit/config/__init__.py
+++ b/cloudinit/config/__init__.py
@@ -25,7 +25,7 @@ from cloudinit import log as logging
LOG = logging.getLogger(__name__)
-# This prefix is used to make it less
+# This prefix is used to make it less
# of a change that when importing
# we will not find something else with the same
# name in the lookup path...
diff --git a/cloudinit/config/cc_chef.py b/cloudinit/config/cc_chef.py
index 4e8ef346..74af2a7e 100644
--- a/cloudinit/config/cc_chef.py
+++ b/cloudinit/config/cc_chef.py
@@ -24,7 +24,7 @@ import os
from cloudinit import templater
from cloudinit import util
-ruby_version_default = "1.8"
+RUBY_VERSION_DEFAULT = "1.8"
def handle(name, cfg, cloud, log, _args):
@@ -38,11 +38,11 @@ def handle(name, cfg, cloud, log, _args):
# Ensure the chef directories we use exist
c_dirs = [
- '/etc/chef',
- '/var/log/chef',
- '/var/lib/chef',
- '/var/cache/chef',
- '/var/backups/chef',
+ '/etc/chef',
+ '/var/log/chef',
+ '/var/lib/chef',
+ '/var/cache/chef',
+ '/var/backups/chef',
'/var/run/chef',
]
for d in c_dirs:
@@ -92,7 +92,7 @@ def handle(name, cfg, cloud, log, _args):
# this will install and run the chef-client from gems
chef_version = util.get_cfg_option_str(chef_cfg, 'version', None)
ruby_version = util.get_cfg_option_str(chef_cfg, 'ruby_version',
- ruby_version_default)
+ RUBY_VERSION_DEFAULT)
install_chef_from_gems(cloud.distro, ruby_version, chef_version)
# and finally, run chef-client
log.debug('Running chef-client')
diff --git a/cloudinit/config/cc_disable_ec2_metadata.py b/cloudinit/config/cc_disable_ec2_metadata.py
index c7d26029..62cca7cc 100644
--- a/cloudinit/config/cc_disable_ec2_metadata.py
+++ b/cloudinit/config/cc_disable_ec2_metadata.py
@@ -24,13 +24,13 @@ from cloudinit.settings import PER_ALWAYS
frequency = PER_ALWAYS
-reject_cmd = ['route', 'add', '-host', '169.254.169.254', 'reject']
+REJECT_CMD = ['route', 'add', '-host', '169.254.169.254', 'reject']
def handle(name, cfg, _cloud, log, _args):
disabled = util.get_cfg_option_bool(cfg, "disable_ec2_metadata", False)
if disabled:
- util.subp(reject_cmd)
+ util.subp(REJECT_CMD)
else:
log.debug(("Skipping transform named %s,"
" disabling the ec2 route not enabled"), name)
diff --git a/cloudinit/config/cc_final_message.py b/cloudinit/config/cc_final_message.py
index c257b6d0..fd59aa1e 100644
--- a/cloudinit/config/cc_final_message.py
+++ b/cloudinit/config/cc_final_message.py
@@ -28,7 +28,7 @@ from cloudinit.settings import PER_ALWAYS
frequency = PER_ALWAYS
-final_message_def = ("Cloud-init v. {{version}} finished at {{timestamp}}."
+FINAL_MESSAGE_DEF = ("Cloud-init v. {{version}} finished at {{timestamp}}."
" Up {{uptime}} seconds.")
@@ -39,21 +39,21 @@ def handle(_name, cfg, cloud, log, args):
msg_in = args[0]
else:
msg_in = util.get_cfg_option_str(cfg, "final_message")
-
+
if not msg_in:
template_fn = cloud.get_template_filename('final_message')
if template_fn:
msg_in = util.load_file(template_fn)
if not msg_in:
- msg_in = final_message_def
+ msg_in = FINAL_MESSAGE_DEF
uptime = util.uptime()
ts = util.time_rfc2822()
cver = version.version_string()
try:
subs = {
- 'uptime': uptime,
+ 'uptime': uptime,
'timestamp': ts,
'version': cver,
}
diff --git a/cloudinit/config/cc_foo.py b/cloudinit/config/cc_foo.py
index 99135704..e81e7faa 100644
--- a/cloudinit/config/cc_foo.py
+++ b/cloudinit/config/cc_foo.py
@@ -30,19 +30,19 @@ from cloudinit.settings import PER_INSTANCE
# as well as any datasource provided configuration
# c) A cloud object that can be used to access various
# datasource and paths for the given distro and data provided
-# by the various datasource instance types.
+# by the various datasource instance types.
# d) A argument list that may or may not be empty to this module.
# Typically those are from module configuration where the module
# is defined with some extra configuration that will eventually
# be translated from yaml into arguments to this module.
# 2. A optional 'frequency' that defines how often this module should be ran.
-# Typically one of PER_INSTANCE, PER_ALWAYS, PER_ONCE. If not
-# provided PER_INSTANCE will be assumed.
+# Typically one of PER_INSTANCE, PER_ALWAYS, PER_ONCE. If not
+# provided PER_INSTANCE will be assumed.
# See settings.py for these constants.
# 3. A optional 'distros' array/set/tuple that defines the known distros
# this module will work with (if not all of them). This is used to write
# a warning out if a module is being ran on a untested distribution for
-# informational purposes. If non existent all distros are assumed and
+# informational purposes. If non existent all distros are assumed and
# no warning occurs.
frequency = PER_INSTANCE
diff --git a/cloudinit/config/cc_keys_to_console.py b/cloudinit/config/cc_keys_to_console.py
index 40758198..a8fb3ba7 100644
--- a/cloudinit/config/cc_keys_to_console.py
+++ b/cloudinit/config/cc_keys_to_console.py
@@ -26,13 +26,13 @@ from cloudinit import util
frequency = PER_INSTANCE
# This is a tool that cloud init provides
-helper_tool = '/usr/lib/cloud-init/write-ssh-key-fingerprints'
+HELPER_TOOL = '/usr/lib/cloud-init/write-ssh-key-fingerprints'
def handle(name, cfg, cloud, log, _args):
- if not os.path.exists(helper_tool):
+ if not os.path.exists(HELPER_TOOL):
log.warn(("Unable to activate transform %s,"
- " helper tool not found at %s"), name, helper_tool)
+ " helper tool not found at %s"), name, HELPER_TOOL)
return
fp_blacklist = util.get_cfg_option_list(cfg,
@@ -42,7 +42,7 @@ def handle(name, cfg, cloud, log, _args):
["ssh-dss"])
try:
- cmd = [helper_tool]
+ cmd = [HELPER_TOOL]
cmd.append(','.join(fp_blacklist))
cmd.append(','.join(key_blacklist))
(stdout, _stderr) = util.subp(cmd)
diff --git a/cloudinit/config/cc_landscape.py b/cloudinit/config/cc_landscape.py
index 29ce41b9..599276a7 100644
--- a/cloudinit/config/cc_landscape.py
+++ b/cloudinit/config/cc_landscape.py
@@ -62,7 +62,7 @@ def handle(name, cfg, cloud, log, _args):
ls_cloudcfg = cfg.get("landscape", {})
if not isinstance(ls_cloudcfg, dict):
- raise Exception(("'landscape' key existed in config,"
+ raise Exception(("'landscape' key existed in config,"
" but not a dictionary type,"
" is a %s instead"), util.obj_name(ls_cloudcfg))
diff --git a/cloudinit/config/cc_mcollective.py b/cloudinit/config/cc_mcollective.py
index 4cec6494..ba5e13ca 100644
--- a/cloudinit/config/cc_mcollective.py
+++ b/cloudinit/config/cc_mcollective.py
@@ -52,7 +52,7 @@ def handle(name, cfg, cloud, log, _args):
# It doesn't contain any sections so just add one temporarily
# Use a hash id based off the contents,
# just incase of conflicts... (try to not have any...)
- # This is so that an error won't occur when reading (and no
+ # This is so that an error won't occur when reading (and no
# sections exist in the file)
section_tpl = "[nullsection_%s]"
attempts = 0
@@ -85,7 +85,7 @@ def handle(name, cfg, cloud, log, _args):
# the previous server.cfg and create our new one
old_fn = "%s.old" % (server_cfg_fn)
util.rename(server_cfg_fn, old_fn)
- # Now we got the whole file, write to disk except the section
+ # Now we got the whole file, write to disk except the section
# we added so that config parser won't error out when trying to read.
# Note below, that we've just used ConfigParser because it generally
# works. Below, we remove the initial 'nullsection' header.
diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py
index 700fbc44..ab097c2a 100644
--- a/cloudinit/config/cc_mounts.py
+++ b/cloudinit/config/cc_mounts.py
@@ -24,10 +24,10 @@ import re
from cloudinit import util
-# shortname matches 'sda', 'sda1', 'xvda', 'hda', 'sdb', xvdb, vda, vdd1
-shortname_filter = r"^[x]{0,1}[shv]d[a-z][0-9]*$"
-shortname = re.compile(shortname_filter)
-ws = re.compile("[%s]+" % (whitespace))
+# Shortname matches 'sda', 'sda1', 'xvda', 'hda', 'sdb', xvdb, vda, vdd1
+SHORTNAME_FILTER = r"^[x]{0,1}[shv]d[a-z][0-9]*$"
+SHORTNAME = re.compile(SHORTNAME_FILTER)
+WS = re.compile("[%s]+" % (whitespace))
def is_mdname(name):
@@ -55,7 +55,6 @@ def handle(_name, cfg, cloud, log, _args):
if "mounts" in cfg:
cfgmnt = cfg["mounts"]
-
for i in range(len(cfgmnt)):
# skip something that wasn't a list
if not isinstance(cfgmnt[i], list):
@@ -85,7 +84,7 @@ def handle(_name, cfg, cloud, log, _args):
cfgmnt[i][0] = renamed
log.debug("Mapped metadata name %s to %s", startname, renamed)
else:
- if shortname.match(startname):
+ if SHORTNAME.match(startname):
renamed = "/dev/%s" % startname
log.debug("Mapped shortname name %s to %s", startname, renamed)
cfgmnt[i][0] = renamed
@@ -171,7 +170,7 @@ def handle(_name, cfg, cloud, log, _args):
fstab = util.load_file(cloud.paths.join(True, "/etc/fstab"))
for line in fstab.splitlines():
try:
- toks = ws.split(line)
+ toks = WS.split(line)
if toks[3].find(comment) != -1:
continue
except:
diff --git a/cloudinit/config/cc_phone_home.py b/cloudinit/config/cc_phone_home.py
index a8752527..dcb07b66 100644
--- a/cloudinit/config/cc_phone_home.py
+++ b/cloudinit/config/cc_phone_home.py
@@ -26,8 +26,13 @@ from cloudinit.settings import PER_INSTANCE
frequency = PER_INSTANCE
-post_list_all = ['pub_key_dsa', 'pub_key_rsa', 'pub_key_ecdsa',
- 'instance_id', 'hostname']
+POST_LIST_ALL = [
+ 'pub_key_dsa',
+ 'pub_key_rsa',
+ 'pub_key_ecdsa',
+ 'instance_id',
+ 'hostname'
+]
# phone_home:
@@ -63,7 +68,7 @@ def handle(name, cfg, cloud, log, args):
" is not an integer, using %s instead"), tries)
if post_list == "all":
- post_list = post_list_all
+ post_list = POST_LIST_ALL
all_keys = {}
all_keys['instance_id'] = cloud.get_instance_id()
diff --git a/cloudinit/config/cc_puppet.py b/cloudinit/config/cc_puppet.py
index 5fb88bf2..5154efba 100644
--- a/cloudinit/config/cc_puppet.py
+++ b/cloudinit/config/cc_puppet.py
@@ -63,7 +63,7 @@ def handle(name, cfg, cloud, log, _args):
util.ensure_dir(pp_ssl_dir, 0771)
util.chownbyid(pp_ssl_dir,
pwd.getpwnam('puppet').pw_uid, 0)
- pp_ssl_certs = cloud.paths.join(False,
+ pp_ssl_certs = cloud.paths.join(False,
'/var/lib/puppet/ssl/certs/')
util.ensure_dir(pp_ssl_certs)
util.chownbyid(pp_ssl_certs,
diff --git a/cloudinit/config/cc_resizefs.py b/cloudinit/config/cc_resizefs.py
index 1690094a..c019989e 100644
--- a/cloudinit/config/cc_resizefs.py
+++ b/cloudinit/config/cc_resizefs.py
@@ -27,7 +27,7 @@ from cloudinit.settings import PER_ALWAYS
frequency = PER_ALWAYS
-resize_fs_prefixes_cmds = [
+RESIZE_FS_PREFIXES_CMDS = [
('ext', 'resize2fs'),
('xfs', 'xfs_growfs'),
]
@@ -89,16 +89,16 @@ def handle(name, cfg, cloud, log, args):
# occurs this temporary file will still benefit from
# auto deletion
tfh.unlink_now()
-
+
st_dev = nodeify_path(devpth, resize_what, log)
fs_type = get_fs_type(st_dev, devpth, log)
if not fs_type:
log.warn("Could not determine filesystem type of %s", resize_what)
return
-
+
resizer = None
fstype_lc = fs_type.lower()
- for (pfix, root_cmd) in resize_fs_prefixes_cmds:
+ for (pfix, root_cmd) in RESIZE_FS_PREFIXES_CMDS:
if fstype_lc.startswith(pfix):
resizer = root_cmd
break
@@ -112,7 +112,7 @@ def handle(name, cfg, cloud, log, args):
resize_cmd = [resizer, devpth]
if resize_root == "noblock":
- # Fork to a child that will run
+ # Fork to a child that will run
# the resize command
util.fork_cb(do_resize, resize_cmd, log)
# Don't delete the file now in the parent
diff --git a/cloudinit/config/cc_salt_minion.py b/cloudinit/config/cc_salt_minion.py
index 16f5286d..986e6db6 100644
--- a/cloudinit/config/cc_salt_minion.py
+++ b/cloudinit/config/cc_salt_minion.py
@@ -32,7 +32,7 @@ def handle(name, cfg, cloud, log, _args):
# Start by installing the salt package ...
cloud.distro.install_packages(["salt"])
-
+
# Ensure we can configure files at the right dir
config_dir = salt_cfg.get("config_dir", '/etc/salt')
config_dir = cloud.paths.join(False, config_dir)
diff --git a/cloudinit/config/cc_scripts_per_boot.py b/cloudinit/config/cc_scripts_per_boot.py
index 364e1d02..d3c47442 100644
--- a/cloudinit/config/cc_scripts_per_boot.py
+++ b/cloudinit/config/cc_scripts_per_boot.py
@@ -26,16 +26,16 @@ from cloudinit.settings import PER_ALWAYS
frequency = PER_ALWAYS
-script_subdir = 'per-boot'
+SCRIPT_SUBDIR = 'per-boot'
def handle(name, _cfg, cloud, log, _args):
# Comes from the following:
# https://forums.aws.amazon.com/thread.jspa?threadID=96918
- runparts_path = os.path.join(cloud.get_cpath(), 'scripts', script_subdir)
+ runparts_path = os.path.join(cloud.get_cpath(), 'scripts', SCRIPT_SUBDIR)
try:
util.runparts(runparts_path)
except:
log.warn("Failed to run transform %s (%s in %s)",
- name, script_subdir, runparts_path)
+ name, SCRIPT_SUBDIR, runparts_path)
raise
diff --git a/cloudinit/config/cc_scripts_per_instance.py b/cloudinit/config/cc_scripts_per_instance.py
index d75ab47d..8e428ac2 100644
--- a/cloudinit/config/cc_scripts_per_instance.py
+++ b/cloudinit/config/cc_scripts_per_instance.py
@@ -26,16 +26,16 @@ from cloudinit.settings import PER_INSTANCE
frequency = PER_INSTANCE
-script_subdir = 'per-instance'
+SCRIPT_SUBDIR = 'per-instance'
def handle(name, _cfg, cloud, log, _args):
# Comes from the following:
# https://forums.aws.amazon.com/thread.jspa?threadID=96918
- runparts_path = os.path.join(cloud.get_cpath(), 'scripts', script_subdir)
+ runparts_path = os.path.join(cloud.get_cpath(), 'scripts', SCRIPT_SUBDIR)
try:
util.runparts(runparts_path)
except:
log.warn("Failed to run transform %s (%s in %s)",
- name, script_subdir, runparts_path)
+ name, SCRIPT_SUBDIR, runparts_path)
raise
diff --git a/cloudinit/config/cc_scripts_per_once.py b/cloudinit/config/cc_scripts_per_once.py
index 80f8c325..e7a29a44 100644
--- a/cloudinit/config/cc_scripts_per_once.py
+++ b/cloudinit/config/cc_scripts_per_once.py
@@ -26,16 +26,16 @@ from cloudinit.settings import PER_ONCE
frequency = PER_ONCE
-script_subdir = 'per-once'
+SCRIPT_SUBDIR = 'per-once'
def handle(name, _cfg, cloud, log, _args):
# Comes from the following:
# https://forums.aws.amazon.com/thread.jspa?threadID=96918
- runparts_path = os.path.join(cloud.get_cpath(), 'scripts', script_subdir)
+ runparts_path = os.path.join(cloud.get_cpath(), 'scripts', SCRIPT_SUBDIR)
try:
util.runparts(runparts_path)
except:
log.warn("Failed to run transform %s (%s in %s)",
- name, script_subdir, runparts_path)
+ name, SCRIPT_SUBDIR, runparts_path)
raise
diff --git a/cloudinit/config/cc_scripts_user.py b/cloudinit/config/cc_scripts_user.py
index f4fe3a2a..1ff05aae 100644
--- a/cloudinit/config/cc_scripts_user.py
+++ b/cloudinit/config/cc_scripts_user.py
@@ -26,17 +26,17 @@ from cloudinit.settings import PER_INSTANCE
frequency = PER_INSTANCE
-script_subdir = 'scripts'
+SCRIPT_SUBDIR = 'scripts'
def handle(name, _cfg, cloud, log, _args):
# This is written to by the user data handlers
# Ie, any custom shell scripts that come down
# go here...
- runparts_path = os.path.join(cloud.get_ipath_cur(), script_subdir)
+ runparts_path = os.path.join(cloud.get_ipath_cur(), SCRIPT_SUBDIR)
try:
util.runparts(runparts_path)
except:
log.warn("Failed to run transform %s (%s in %s)",
- name, script_subdir, runparts_path)
+ name, SCRIPT_SUBDIR, runparts_path)
raise
diff --git a/cloudinit/config/cc_set_passwords.py b/cloudinit/config/cc_set_passwords.py
index e7049f22..ce17f357 100644
--- a/cloudinit/config/cc_set_passwords.py
+++ b/cloudinit/config/cc_set_passwords.py
@@ -25,7 +25,7 @@ from cloudinit import util
from string import letters, digits # pylint: disable=W0402
# We are removing certain 'painful' letters/numbers
-pw_set = (letters.translate(None, 'loLOI') +
+PW_SET = (letters.translate(None, 'loLOI') +
digits.translate(None, '01'))
@@ -148,4 +148,4 @@ def handle(_name, cfg, cloud, log, args):
def rand_user_password(pwlen=9):
- return util.rand_str(pwlen, select_from=pw_set)
+ return util.rand_str(pwlen, select_from=PW_SET)
diff --git a/cloudinit/config/cc_ssh.py b/cloudinit/config/cc_ssh.py
index e5e99560..4019ae90 100644
--- a/cloudinit/config/cc_ssh.py
+++ b/cloudinit/config/cc_ssh.py
@@ -24,11 +24,11 @@ import glob
from cloudinit import util
from cloudinit import ssh_util
-DISABLE_ROOT_OPTS = ( "no-port-forwarding,no-agent-forwarding,"
-"no-X11-forwarding,command=\"echo \'Please login as the user \\\"$USER\\\" "
+DISABLE_ROOT_OPTS = ("no-port-forwarding,no-agent-forwarding,"
+"no-X11-forwarding,command=\"echo \'Please login as the user \\\"$USER\\\" "
"rather than the user \\\"root\\\".\';echo;sleep 10\"")
-key2file = {
+KEY_2_FILE = {
"rsa_private": ("/etc/ssh/ssh_host_rsa_key", 0600),
"rsa_public": ("/etc/ssh/ssh_host_rsa_key.pub", 0644),
"dsa_private": ("/etc/ssh/ssh_host_dsa_key", 0600),
@@ -37,15 +37,17 @@ key2file = {
"ecdsa_public": ("/etc/ssh/ssh_host_ecdsa_key.pub", 0644),
}
-priv2pub = {
- 'rsa_private': 'rsa_public',
+PRIV_2_PUB = {
+ 'rsa_private': 'rsa_public',
'dsa_private': 'dsa_public',
'ecdsa_private': 'ecdsa_public',
}
-key_gen_tpl = 'o=$(ssh-keygen -yf "%s") && echo "$o" root@localhost > "%s"'
+KEY_GEN_TPL = 'o=$(ssh-keygen -yf "%s") && echo "$o" root@localhost > "%s"'
-generate_keys = ['rsa', 'dsa', 'ecdsa']
+GENERATE_KEY_NAMES = ['rsa', 'dsa', 'ecdsa']
+
+KEY_FILE_TPL = '/etc/ssh/ssh_host_%s_key'
def handle(_name, cfg, cloud, log, _args):
@@ -58,21 +60,21 @@ def handle(_name, cfg, cloud, log, _args):
util.del_file(f)
except:
util.logexc(log, "Failed deleting key file %s", f)
-
+
if "ssh_keys" in cfg:
# if there are keys in cloud-config, use them
for (key, val) in cfg["ssh_keys"].iteritems():
- if key in key2file:
- tgt_fn = key2file[key][0]
- tgt_perms = key2file[key][1]
+ if key in KEY_2_FILE:
+ tgt_fn = KEY_2_FILE[key][0]
+ tgt_perms = KEY_2_FILE[key][1]
util.write_file(cloud.paths.join(False, tgt_fn),
val, tgt_perms)
- for (priv, pub) in priv2pub.iteritems():
+ for (priv, pub) in PRIV_2_PUB.iteritems():
if pub in cfg['ssh_keys'] or not priv in cfg['ssh_keys']:
continue
- pair = (key2file[priv][0], key2file[pub][0])
- cmd = ['sh', '-xc', key_gen_tpl % pair]
+ pair = (KEY_2_FILE[priv][0], KEY_2_FILE[pub][0])
+ cmd = ['sh', '-xc', KEY_GEN_TPL % pair]
try:
# TODO: Is this guard needed?
with util.SeLinuxGuard("/etc/ssh", recursive=True):
@@ -84,12 +86,11 @@ def handle(_name, cfg, cloud, log, _args):
else:
# if not, generate them
genkeys = util.get_cfg_option_list(cfg,
- 'ssh_genkeytypes',
- generate_keys)
+ 'ssh_genkeytypes',
+ GENERATE_KEY_NAMES)
for keytype in genkeys:
- keyfile = '/etc/ssh/ssh_host_%s_key' % (keytype)
- keyfile = cloud.paths.join(False, keyfile)
- util.ensure_dir(os.path.dirname(keyfile))
+ keyfile = cloud.paths.join(False, KEY_FILE_TPL % (keytype))
+ util.ensure_dir(os.path.dirname(keyfile))
if not os.path.exists(keyfile):
cmd = ['ssh-keygen', '-t', keytype, '-N', '', '-f', keyfile]
try:
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 45dd85ec..25a60c52 100644
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -157,4 +157,3 @@ def fetch(distro_name, mods=(__name__, )):
% (distro_name))
distro_cls = getattr(mod, 'Distro')
return distro_cls
-
diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py
index b67ae5b8..5cbefa6e 100644
--- a/cloudinit/distros/rhel.py
+++ b/cloudinit/distros/rhel.py
@@ -35,7 +35,7 @@ class Distro(distros.Distro):
def __init__(self, name, cfg, paths):
distros.Distro.__init__(self, name, cfg, paths)
-
+
def install_packages(self, pkglist):
self.package_command('install', pkglist)
@@ -210,12 +210,12 @@ class Distro(distros.Distro):
def package_command(self, command, args=None):
cmd = ['yum']
# If enabled, then yum will be tolerant of errors on the command line
- # with regard to packages.
- # For example: if you request to install foo, bar and baz and baz is
+ # with regard to packages.
+ # For example: if you request to install foo, bar and baz and baz is
# installed; yum won't error out complaining that baz is already
- # installed.
+ # installed.
cmd.append("-t")
- # Determines whether or not yum prompts for confirmation
+ # Determines whether or not yum prompts for confirmation
# of critical actions. We don't want to prompt...
cmd.append("-y")
cmd.append(command)
@@ -223,8 +223,8 @@ class Distro(distros.Distro):
cmd.extend(args)
# Allow the output of this to flow outwards (ie not be captured)
util.subp(cmd, capture=False)
-
-
+
+
# This is a util function to translate a ubuntu /etc/network/interfaces 'blob'
# to a rhel equiv. that can then be written to /etc/sysconfig/network-scripts/
# TODO remove when we have python-netcf active...
diff --git a/cloudinit/distros/ubuntu.py b/cloudinit/distros/ubuntu.py
index 5a1b572e..fd7b7b8d 100644
--- a/cloudinit/distros/ubuntu.py
+++ b/cloudinit/distros/ubuntu.py
@@ -36,11 +36,11 @@ class Distro(distros.Distro):
def __init__(self, name, cfg, paths):
distros.Distro.__init__(self, name, cfg, paths)
- # This will be used to restrict certain
+ # This will be used to restrict certain
# calls from repeatly happening (when they
# should only happen say once per instance...)
self._runner = helpers.Runners(paths)
-
+
def install_packages(self, pkglist):
self._update_package_sources()
self.package_command('install', pkglist)
@@ -131,4 +131,4 @@ class Distro(distros.Distro):
def _update_package_sources(self):
self._runner.run("update-sources", self.package_command,
- ["update"], freq=PER_INSTANCE) \ No newline at end of file
+ ["update"], freq=PER_INSTANCE)
diff --git a/cloudinit/handlers/__init__.py b/cloudinit/handlers/__init__.py
index c6f2119c..d52b1cba 100644
--- a/cloudinit/handlers/__init__.py
+++ b/cloudinit/handlers/__init__.py
@@ -104,7 +104,7 @@ def run_part(mod, data, ctype, filename, payload, frequency):
except:
mod_ver = 1
try:
- LOG.debug("Calling handler %s (%s, %s, %s) with frequency %s",
+ LOG.debug("Calling handler %s (%s, %s, %s) with frequency %s",
mod, ctype, filename, mod_ver, frequency)
if mod_ver >= 2:
# Treat as v. 2 which does get a frequency
@@ -114,7 +114,7 @@ def run_part(mod, data, ctype, filename, payload, frequency):
mod.handle_part(data, ctype, filename, payload)
except:
util.logexc(LOG, ("Failed calling handler %s (%s, %s, %s)"
- " with frequency %s"),
+ " with frequency %s"),
mod, ctype, filename,
mod_ver, frequency)
@@ -178,7 +178,7 @@ def walker_callback(pdata, ctype, filename, payload):
payload, pdata['frequency'])
-# Callback is a function that will be called with
+# Callback is a function that will be called with
# (data, content_type, filename, payload)
def walk(msg, callback, data):
partnum = 0
@@ -226,5 +226,3 @@ def type_from_starts_with(payload, default=None):
if payload_lc.startswith(text):
return INCLUSION_TYPES_MAP[text]
return default
-
-
diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py
index 45633e0f..4447d1ee 100644
--- a/cloudinit/helpers.py
+++ b/cloudinit/helpers.py
@@ -84,7 +84,7 @@ class FileSemaphores(object):
try:
util.del_dir(self.sem_path)
except (IOError, OSError):
- util.logexc(LOG, "Failed deleting semaphore directory %s",
+ util.logexc(LOG, "Failed deleting semaphore directory %s",
self.sem_path)
def _acquire(self, name, freq):
@@ -212,7 +212,7 @@ class Paths(object):
self.cfgs = path_cfgs
# Populate all the initial paths
self.cloud_dir = self.join(False,
- path_cfgs.get('cloud_dir',
+ path_cfgs.get('cloud_dir',
'/var/lib/cloud'))
self.instance_link = os.path.join(self.cloud_dir, 'instance')
self.boot_finished = os.path.join(self.instance_link, "boot-finished")
@@ -237,7 +237,7 @@ class Paths(object):
# Set when a datasource becomes active
self.datasource = ds
- # joins the paths but also appends a read
+ # joins the paths but also appends a read
# or write root if available
def join(self, read_only, *paths):
if read_only:
diff --git a/cloudinit/log.py b/cloudinit/log.py
index 478946f8..fc1428a2 100644
--- a/cloudinit/log.py
+++ b/cloudinit/log.py
@@ -20,7 +20,6 @@
# 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 logging
import logging.handlers
import logging.config
@@ -53,7 +52,6 @@ def setupBasicLogging():
root.setLevel(DEBUG)
-
def setupLogging(cfg=None):
# See if the config provides any logging conf...
if not cfg:
diff --git a/cloudinit/settings.py b/cloudinit/settings.py
index 8a1eaeb3..fac9b862 100644
--- a/cloudinit/settings.py
+++ b/cloudinit/settings.py
@@ -47,7 +47,7 @@ CFG_BUILTIN = {
'paths': {
'cloud_dir': '/var/lib/cloud',
'templates_dir': '/etc/cloud/templates/',
- },
+ },
'distro': 'ubuntu',
},
}
diff --git a/cloudinit/sources/DataSourceCloudStack.py b/cloudinit/sources/DataSourceCloudStack.py
index b1817654..83c577e6 100644
--- a/cloudinit/sources/DataSourceCloudStack.py
+++ b/cloudinit/sources/DataSourceCloudStack.py
@@ -121,7 +121,7 @@ class DataSourceCloudStack(sources.DataSource):
None, self.metadata_address)
self.metadata = boto_utils.get_instance_metadata(self.api_ver,
self.metadata_address)
- LOG.debug("Crawl of metadata service took %s seconds",
+ LOG.debug("Crawl of metadata service took %s seconds",
int(time.time() - start_time))
return True
except Exception:
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py
index 5da1ffea..9905dad4 100644
--- a/cloudinit/sources/DataSourceConfigDrive.py
+++ b/cloudinit/sources/DataSourceConfigDrive.py
@@ -36,7 +36,7 @@ CFG_DRIVE_FILES = [
"meta.js",
]
DEFAULT_METADATA = {
- "instance-id": DEFAULT_IID,
+ "instance-id": DEFAULT_IID,
"dsmode": DEFAULT_MODE,
}
CFG_DRIVE_DEV_ENV = 'CLOUD_INIT_CONFIG_DRIVE_DEVICE'
diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py
index 55447102..0598dfa2 100644
--- a/cloudinit/sources/DataSourceEc2.py
+++ b/cloudinit/sources/DataSourceEc2.py
@@ -38,7 +38,7 @@ DEF_MD_URL = "http://169.254.169.254"
DEF_MD_VERSION = '2009-04-04'
# Default metadata urls that will be used if none are provided
-# They will be checked for 'resolveability' and some of the
+# They will be checked for 'resolveability' and some of the
# following may be discarded if they do not resolve
DEF_MD_URLS = [DEF_MD_URL, "http://instance-data:8773"]
@@ -69,7 +69,7 @@ class DataSourceEc2(sources.DataSource):
None, self.metadata_address)
self.metadata = boto_utils.get_instance_metadata(self.api_ver,
self.metadata_address)
- LOG.debug("Crawl of metadata service took %s seconds",
+ LOG.debug("Crawl of metadata service took %s seconds",
int(time.time() - start_time))
return True
except Exception:
@@ -201,7 +201,7 @@ class DataSourceEc2(sources.DataSource):
return None
# Example:
- # 'block-device-mapping':
+ # 'block-device-mapping':
# {'ami': '/dev/sda1',
# 'ephemeral0': '/dev/sdb',
# 'root': '/dev/sda1'}
diff --git a/cloudinit/sources/DataSourceMAAS.py b/cloudinit/sources/DataSourceMAAS.py
index bb8fbac1..104e7a54 100644
--- a/cloudinit/sources/DataSourceMAAS.py
+++ b/cloudinit/sources/DataSourceMAAS.py
@@ -251,6 +251,7 @@ datasources = [
(DataSourceMAAS, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)),
]
+
# Return a list of data sources that match this set of dependencies
def get_datasource_list(depends):
return sources.list_from_depends(depends, datasources)
diff --git a/cloudinit/sources/DataSourceNoCloud.py b/cloudinit/sources/DataSourceNoCloud.py
index 2b016d1c..8499a97c 100644
--- a/cloudinit/sources/DataSourceNoCloud.py
+++ b/cloudinit/sources/DataSourceNoCloud.py
@@ -154,7 +154,7 @@ class DataSourceNoCloud(sources.DataSource):
(self.dsmode in ("local", seeded_interfaces))):
LOG.info("Updating network interfaces from %s", self)
self.distro.apply_network(md['network-interfaces'])
-
+
if md['dsmode'] == self.dsmode:
self.seed = ",".join(found)
self.metadata = md
diff --git a/cloudinit/ssh_util.py b/cloudinit/ssh_util.py
index fef3d40f..45dd5535 100644
--- a/cloudinit/ssh_util.py
+++ b/cloudinit/ssh_util.py
@@ -103,10 +103,10 @@ class AuthKeyLineParser(object):
elif curc == '"':
quoted = not quoted
i = i + 1
-
+
options = ent[0:i]
options_lst = []
-
+
# Now use a csv parser to pull the options
# out of the above string that we just found an endpoint for.
#
@@ -211,7 +211,6 @@ def update_authorized_keys(fname, keys):
def setup_user_keys(keys, user, key_prefix, paths):
-
# Make sure the users .ssh dir is setup accordingly
pwent = pwd.getpwnam(user)
ssh_dir = os.path.join(pwent.pw_dir, '.ssh')
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index ae6e2de5..84a965c2 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -287,7 +287,7 @@ class Init(object):
def cloudify(self):
# Form the needed options to cloudify our members
- return cloud.Cloud(self.datasource,
+ return cloud.Cloud(self.datasource,
self.paths, self.cfg,
self.distro, helpers.Runners(self.paths))
@@ -318,7 +318,7 @@ class Init(object):
def consume(self, frequency=PER_INSTANCE):
cdir = self.paths.get_cpath("handlers")
idir = self.paths.get_ipath("handlers")
-
+
# Add the path to the plugins dir to the top of our list for import
# instance dir should be read before cloud-dir
if cdir and cdir not in sys.path:
@@ -417,7 +417,7 @@ class Modules(object):
except:
util.logexc(LOG, ("Failed loading of datasource"
" config object from %s"), self.datasource)
-
+
if self.base_cfg:
t_cfgs.append(self.base_cfg)
diff --git a/cloudinit/url_helper.py b/cloudinit/url_helper.py
index 1c583eba..223278ce 100644
--- a/cloudinit/url_helper.py
+++ b/cloudinit/url_helper.py
@@ -47,11 +47,11 @@ class UrlResponse(object):
@property
def contents(self):
return self._contents
-
+
@property
def headers(self):
return self._headers
-
+
def __str__(self):
if not self.contents:
return ''
@@ -66,7 +66,7 @@ class UrlResponse(object):
return True
else:
return False
-
+
def readurl(url, data=None, timeout=None,
retries=0, sec_between=1, headers=None):
@@ -89,8 +89,8 @@ def readurl(url, data=None, timeout=None,
excepts = []
LOG.info(("Attempting to open '%s' with %s attempts"
- " (%s retries, timeout=%s) to be performed"),
- url, attempts, retries, timeout)
+ " (%s retries, timeout=%s) to be performed"),
+ url, attempts, retries, timeout)
open_args = {}
if timeout is not None:
open_args['timeout'] = int(timeout)
@@ -112,7 +112,7 @@ def readurl(url, data=None, timeout=None,
excepts.append(e)
except urllib2.URLError as e:
# This can be a message string or
- # another exception instance
+ # another exception instance
# (socket.error for remote URLs, OSError for local URLs).
if (isinstance(e.reason, (OSError)) and
e.reason.errno == errno.ENOENT):
@@ -128,7 +128,7 @@ def readurl(url, data=None, timeout=None,
# Didn't work out
LOG.warn("Failed reading from %s after %s attempts", url, attempts)
-
+
# It must of errored at least once for code
# to get here so re-raise the last error
LOG.debug("%s errors occured, re-raising the last one", len(excepts))
diff --git a/cloudinit/user_data.py b/cloudinit/user_data.py
index b7902d44..4babb8e5 100644
--- a/cloudinit/user_data.py
+++ b/cloudinit/user_data.py
@@ -65,33 +65,33 @@ class UserDataProcessor(object):
# multipart/* are just containers
if part.get_content_maintype() == 'multipart':
continue
-
+
ctype = None
ctype_orig = part.get_content_type()
payload = part.get_payload(decode=True)
-
+
if not ctype_orig:
ctype_orig = UNDEF_TYPE
-
+
if ctype_orig in TYPE_NEEDED:
ctype = handlers.type_from_starts_with(payload)
-
+
if ctype is None:
ctype = ctype_orig
-
+
if ctype in INCLUDE_TYPES:
self._do_include(payload, append_msg)
continue
-
+
if ctype in ARCHIVE_TYPES:
self._explode_archive(payload, append_msg)
continue
-
+
if 'Content-Type' in base_msg:
base_msg.replace_header('Content-Type', ctype)
else:
base_msg['Content-Type'] = ctype
-
+
self._attach_part(append_msg, part)
def _get_include_once_filename(self, entry):
@@ -108,8 +108,8 @@ class UserDataProcessor(object):
lc_line = line.lower()
if lc_line.startswith("#include-once"):
line = line[len("#include-once"):].lstrip()
- # Every following include will now
- # not be refetched.... but will be
+ # Every following include will now
+ # not be refetched.... but will be
# re-read from a local urlcache (if it worked)
include_once_on = True
elif lc_line.startswith("#include"):
@@ -190,10 +190,10 @@ class UserDataProcessor(object):
"""
if ATTACHMENT_FIELD not in outer_msg:
outer_msg[ATTACHMENT_FIELD] = '0'
-
+
if new_count is not None:
outer_msg.replace_header(ATTACHMENT_FIELD, str(new_count))
-
+
fetched_count = 0
try:
fetched_count = int(outer_msg.get(ATTACHMENT_FIELD))
@@ -234,7 +234,3 @@ def convert_string(raw_data, headers=None):
msg = MIMEBase(maintype, subtype, *headers)
msg.set_payload(data)
return msg
-
-
-
-
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 91d20a76..56c01fab 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -35,7 +35,7 @@ import pwd
import random
import shutil
import socket
-import string # pylint: disable=W0402
+import string # pylint: disable=W0402
import subprocess
import sys
import tempfile
@@ -153,13 +153,15 @@ def SilentTemporaryFile(**kwargs):
# file to unlink has been unlinked elsewhere..
LOG.debug("Created temporary file %s", fh.name)
fh.unlink = del_file
- # Add a new method that will unlink
+
+ # Add a new method that will unlink
# right 'now' but still lets the exit
# method attempt to remove it (which will
# not throw due to our del file being quiet
# about files that are not there)
def unlink_now():
fh.unlink(fh.name)
+
setattr(fh, 'unlink_now', unlink_now)
return fh
@@ -199,7 +201,7 @@ def is_false_str(val, addons=None):
def translate_bool(val, addons=None):
if not val:
- # This handles empty lists and false and
+ # This handles empty lists and false and
# other things that python believes are false
return False
# If its already a boolean skip
@@ -214,7 +216,6 @@ def rand_str(strlen=32, select_from=None):
return "".join([random.choice(select_from) for _x in range(0, strlen)])
-
def read_conf(fname):
try:
return load_yaml(load_file(fname), default={})
@@ -275,7 +276,7 @@ def is_ipv4(instr):
def merge_base_cfg(cfgfile, cfg_builtin=None):
syscfg = read_conf_with_confd(cfgfile)
-
+
kern_contents = read_cc_from_cmdline()
kerncfg = {}
if kern_contents:
@@ -575,7 +576,7 @@ def load_yaml(blob, default=None, allowed=(dict,)):
try:
blob = str(blob)
LOG.debug(("Attempting to load yaml from string "
- "of length %s with allowed root types %s"),
+ "of length %s with allowed root types %s"),
len(blob), allowed)
converted = yaml.load(blob)
if not isinstance(converted, allowed):
@@ -625,7 +626,7 @@ def read_conf_d(confd):
# remove anything not ending in '.cfg'
confs = [f for f in confs if f.endswith(".cfg")]
-
+
# remove anything not a file
confs = [f for f in confs if os.path.isfile(os.path.join(confd, f))]
@@ -726,9 +727,9 @@ def get_fqdn_from_hosts(hostname, filename="/etc/hosts"):
"""
For each host a single line should be present with
the following information:
-
- IP_address canonical_hostname [aliases...]
-
+
+ IP_address canonical_hostname [aliases...]
+
Fields of the entry are separated by any number of blanks and/or tab
characters. Text from a "#" character until the end of the line is a
comment, and is ignored. Host names may contain only alphanumeric
@@ -747,7 +748,7 @@ def get_fqdn_from_hosts(hostname, filename="/etc/hosts"):
if not line:
continue
- # If there there is less than 3 entries
+ # If there there is less than 3 entries
# (IP_address, canonical_hostname, alias)
# then ignore this line
toks = line.split()
@@ -829,7 +830,7 @@ def close_stdin():
os.dup2(fp.fileno(), sys.stdin.fileno())
-def find_devs_with(criteria=None, oformat='device',
+def find_devs_with(criteria=None, oformat='device',
tag=None, no_cache=False, path=None):
"""
find devices matching given criteria (via blkid)
@@ -841,23 +842,23 @@ def find_devs_with(criteria=None, oformat='device',
blk_id_cmd = ['blkid']
options = []
if criteria:
- # Search for block devices with tokens named NAME that
+ # Search for block devices with tokens named NAME that
# have the value 'value' and display any devices which are found.
# Common values for NAME include TYPE, LABEL, and UUID.
# If there are no devices specified on the command line,
- # all block devices will be searched; otherwise,
+ # all block devices will be searched; otherwise,
# only search the devices specified by the user.
options.append("-t%s" % (criteria))
if tag:
# For each (specified) device, show only the tags that match tag.
options.append("-s%s" % (tag))
if no_cache:
- # If you want to start with a clean cache
- # (i.e. don't report devices previously scanned
+ # If you want to start with a clean cache
+ # (i.e. don't report devices previously scanned
# but not necessarily available at this time), specify /dev/null.
options.extend(["-c", "/dev/null"])
if oformat:
- # Display blkid's output using the specified format.
+ # Display blkid's output using the specified format.
# The format parameter may be:
# full, value, list, device, udev, export
options.append('-o%s' % (oformat))
@@ -1104,7 +1105,7 @@ def mounts():
(dev, mp, fstype, opts, _freq, _passno) = mpline.split()
except:
continue
- # If the name of the mount point contains spaces these
+ # If the name of the mount point contains spaces these
# can be escaped as '\040', so undo that..
mp = mp.replace("\\040", " ")
mounted[dev] = {