summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Powers <josh.powers@canonical.com>2017-04-06 11:14:29 -0700
committerScott Moser <smoser@ubuntu.com>2017-04-21 10:14:47 -0400
commit5afe4cd0797a12d07ea19b9715b720d47bdea401 (patch)
tree8be9e7b623002b1fd60fb21b95696ab6b67ca497
parent33816e96d8981918f734dab3ee1a967bce85451a (diff)
downloadvyos-cloud-init-5afe4cd0797a12d07ea19b9715b720d47bdea401.tar.gz
vyos-cloud-init-5afe4cd0797a12d07ea19b9715b720d47bdea401.zip
pylint: fix all logging warnings
This will change all instances of LOG.warn to LOG.warning as warn is now a deprecated method. It will also make sure any logging uses lazy logging by passing string format arguments as function parameters.
-rw-r--r--.pylintrc27
-rw-r--r--cloudinit/cloud.py3
-rw-r--r--cloudinit/cmd/main.py17
-rw-r--r--cloudinit/config/__init__.py2
-rw-r--r--cloudinit/config/cc_apt_configure.py11
-rw-r--r--cloudinit/config/cc_disk_setup.py30
-rw-r--r--cloudinit/config/cc_fan.py4
-rw-r--r--cloudinit/config/cc_mounts.py12
-rw-r--r--cloudinit/config/cc_resolv_conf.py2
-rw-r--r--cloudinit/config/cc_rsyslog.py7
-rw-r--r--cloudinit/config/cc_snappy.py6
-rwxr-xr-xcloudinit/distros/__init__.py31
-rw-r--r--cloudinit/distros/arch.py6
-rw-r--r--cloudinit/distros/debian.py2
-rw-r--r--cloudinit/distros/freebsd.py8
-rw-r--r--cloudinit/distros/gentoo.py11
-rw-r--r--cloudinit/distros/parsers/resolv_conf.py6
-rwxr-xr-xcloudinit/distros/ug_util.py16
-rw-r--r--cloudinit/ec2_utils.py7
-rw-r--r--cloudinit/gpg.py2
-rw-r--r--cloudinit/handlers/__init__.py2
-rw-r--r--cloudinit/helpers.py14
-rw-r--r--cloudinit/net/network_state.py8
-rw-r--r--cloudinit/reporting/handlers.py4
-rw-r--r--cloudinit/sources/DataSourceAltCloud.py4
-rw-r--r--cloudinit/sources/DataSourceAzure.py22
-rw-r--r--cloudinit/sources/DataSourceCloudSigma.py2
-rw-r--r--cloudinit/sources/DataSourceConfigDrive.py4
-rw-r--r--cloudinit/sources/DataSourceDigitalOcean.py2
-rw-r--r--cloudinit/sources/DataSourceEc2.py10
-rw-r--r--cloudinit/sources/DataSourceGCE.py5
-rw-r--r--cloudinit/sources/DataSourceMAAS.py10
-rw-r--r--cloudinit/sources/DataSourceNoCloud.py4
-rw-r--r--cloudinit/sources/DataSourceOVF.py10
-rw-r--r--cloudinit/sources/DataSourceOpenNebula.py4
-rw-r--r--cloudinit/sources/DataSourceOpenStack.py4
-rw-r--r--cloudinit/sources/DataSourceSmartOS.py2
-rw-r--r--cloudinit/sources/__init__.py4
-rw-r--r--cloudinit/sources/helpers/azure.py2
-rw-r--r--cloudinit/sources/helpers/vmware/imc/config_file.py8
-rw-r--r--cloudinit/stages.py33
-rw-r--r--cloudinit/templater.py8
-rw-r--r--cloudinit/url_helper.py11
-rw-r--r--cloudinit/user_data.py11
-rw-r--r--cloudinit/util.py18
-rw-r--r--cloudinit/warnings.py4
-rw-r--r--tests/cloud_tests/__main__.py2
-rw-r--r--tests/cloud_tests/args.py2
-rw-r--r--tests/cloud_tests/collect.py2
-rw-r--r--tests/cloud_tests/verify.py9
-rwxr-xr-xtools/mock-meta.py6
51 files changed, 239 insertions, 202 deletions
diff --git a/.pylintrc b/.pylintrc
index b8cda03c..0f5e41b1 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -6,8 +6,29 @@ jobs=4
[MESSAGES CONTROL]
-# Errors only
-disable=C, F, I, R, W
+# Errors and warings with some filtered:
+# W0105(pointless-string-statement)
+# W0107(unnecessary-pass)
+# W0201(attribute-defined-outside-init)
+# W0212(protected-access)
+# W0221(arguments-differ)
+# W0222(signature-differs)
+# W0223(abstract-method)
+# W0231(super-init-not-called)
+# W0311(bad-indentation)
+# W0511(fixme)
+# W0602(global-variable-not-assigned)
+# W0603(global-statement)
+# W0611(unused-import)
+# W0612(unused-variable)
+# W0613(unused-argument)
+# W0621(redefined-outer-name)
+# W0622(redefined-builtin)
+# W0631(undefined-loop-variable)
+# W0703(broad-except)
+# W1401(anomalous-backslash-in-string)
+
+disable=C, F, I, R, W0105, W0107, W0201, W0212, W0221, W0222, W0223, W0231, W0311, W0511, W0602, W0603, W0611, W0612, W0613, W0621, W0622, W0631, W0703, W1401
[REPORTS]
@@ -25,7 +46,7 @@ reports=no
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
-ignored-modules=six.moves,pkg_resources
+ignored-modules=six.moves,pkg_resources,httplib,http.client
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
diff --git a/cloudinit/cloud.py b/cloudinit/cloud.py
index b93a42ea..d8a9fc86 100644
--- a/cloudinit/cloud.py
+++ b/cloudinit/cloud.py
@@ -56,7 +56,8 @@ class Cloud(object):
def get_template_filename(self, name):
fn = self.paths.template_tpl % (name)
if not os.path.isfile(fn):
- LOG.warn("No template found at %s for template named %s", fn, name)
+ LOG.warning("No template found at %s for template named %s",
+ fn, name)
return None
return fn
diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py
index fd221323..26cc2654 100644
--- a/cloudinit/cmd/main.py
+++ b/cloudinit/cmd/main.py
@@ -405,7 +405,8 @@ def main_init(name, args):
errfmt_orig = errfmt
(outfmt, errfmt) = util.get_output_cfg(mods.cfg, name)
if outfmt_orig != outfmt or errfmt_orig != errfmt:
- LOG.warn("Stdout, stderr changing to (%s, %s)", outfmt, errfmt)
+ LOG.warning("Stdout, stderr changing to (%s, %s)",
+ outfmt, errfmt)
(outfmt, errfmt) = util.fixup_output(mods.cfg, name)
except Exception:
util.logexc(LOG, "Failed to re-adjust output redirection!")
@@ -427,15 +428,15 @@ def di_report_warn(datasource, cfg):
dicfg = cfg.get('di_report', {})
if not isinstance(dicfg, dict):
- LOG.warn("di_report config not a dictionary: %s", dicfg)
+ LOG.warning("di_report config not a dictionary: %s", dicfg)
return
dslist = dicfg.get('datasource_list')
if dslist is None:
- LOG.warn("no 'datasource_list' found in di_report.")
+ LOG.warning("no 'datasource_list' found in di_report.")
return
elif not isinstance(dslist, list):
- LOG.warn("di_report/datasource_list not a list: %s", dslist)
+ LOG.warning("di_report/datasource_list not a list: %s", dslist)
return
# ds.__module__ is like cloudinit.sources.DataSourceName
@@ -444,8 +445,8 @@ def di_report_warn(datasource, cfg):
if modname.startswith(sources.DS_PREFIX):
modname = modname[len(sources.DS_PREFIX):]
else:
- LOG.warn("Datasource '%s' came from unexpected module '%s'.",
- datasource, modname)
+ LOG.warning("Datasource '%s' came from unexpected module '%s'.",
+ datasource, modname)
if modname in dslist:
LOG.debug("used datasource '%s' from '%s' was in di_report's list: %s",
@@ -571,10 +572,10 @@ def main_single(name, args):
mod_args,
mod_freq)
if failures:
- LOG.warn("Ran %s but it failed!", mod_name)
+ LOG.warning("Ran %s but it failed!", mod_name)
return 1
elif not which_ran:
- LOG.warn("Did not run %s, does it exist?", mod_name)
+ LOG.warning("Did not run %s, does it exist?", mod_name)
return 1
else:
# Guess it worked
diff --git a/cloudinit/config/__init__.py b/cloudinit/config/__init__.py
index 57e2a44d..0ef9a748 100644
--- a/cloudinit/config/__init__.py
+++ b/cloudinit/config/__init__.py
@@ -37,7 +37,7 @@ def fixup_module(mod, def_freq=PER_INSTANCE):
else:
freq = mod.frequency
if freq and freq not in FREQUENCIES:
- LOG.warn("Module %s has an unknown frequency %s", mod, freq)
+ LOG.warning("Module %s has an unknown frequency %s", mod, freq)
if not hasattr(mod, 'distros'):
setattr(mod, 'distros', [])
if not hasattr(mod, 'osfamilies'):
diff --git a/cloudinit/config/cc_apt_configure.py b/cloudinit/config/cc_apt_configure.py
index 06804e85..7e751776 100644
--- a/cloudinit/config/cc_apt_configure.py
+++ b/cloudinit/config/cc_apt_configure.py
@@ -347,8 +347,8 @@ def dpkg_reconfigure(packages, target=None):
unhandled.append(pkg)
if len(unhandled):
- LOG.warn("The following packages were installed and preseeded, "
- "but cannot be unconfigured: %s", unhandled)
+ LOG.warning("The following packages were installed and preseeded, "
+ "but cannot be unconfigured: %s", unhandled)
if len(to_config):
util.subp(['dpkg-reconfigure', '--frontend=noninteractive'] +
@@ -441,7 +441,7 @@ def rename_apt_lists(new_mirrors, target=None):
os.rename(filename, newname)
except OSError:
# since this is a best effort task, warn with but don't fail
- LOG.warn("Failed to rename apt list:", exc_info=True)
+ LOG.warning("Failed to rename apt list:", exc_info=True)
def mirror_to_placeholder(tmpl, mirror, placeholder):
@@ -449,7 +449,7 @@ def mirror_to_placeholder(tmpl, mirror, placeholder):
replace the specified mirror in a template with a placeholder string
Checks for existance of the expected mirror and warns if not found"""
if mirror not in tmpl:
- LOG.warn("Expected mirror '%s' not found in: %s", mirror, tmpl)
+ LOG.warning("Expected mirror '%s' not found in: %s", mirror, tmpl)
return tmpl.replace(mirror, placeholder)
@@ -525,7 +525,8 @@ def generate_sources_list(cfg, release, mirrors, cloud):
if not template_fn:
template_fn = cloud.get_template_filename('sources.list')
if not template_fn:
- LOG.warn("No template found, not rendering /etc/apt/sources.list")
+ LOG.warning("No template found, "
+ "not rendering /etc/apt/sources.list")
return
tmpl = util.load_file(template_fn)
diff --git a/cloudinit/config/cc_disk_setup.py b/cloudinit/config/cc_disk_setup.py
index f39f0815..f49386e3 100644
--- a/cloudinit/config/cc_disk_setup.py
+++ b/cloudinit/config/cc_disk_setup.py
@@ -181,7 +181,7 @@ def update_fs_setup_devices(disk_setup, tformer):
# update it with the response from 'tformer'
for definition in disk_setup:
if not isinstance(definition, dict):
- LOG.warn("entry in disk_setup not a dict: %s", definition)
+ LOG.warning("entry in disk_setup not a dict: %s", definition)
continue
origname = definition.get('device')
@@ -279,7 +279,7 @@ def is_device_valid(name, partition=False):
try:
d_type = device_type(name)
except Exception:
- LOG.warn("Query against device %s failed" % name)
+ LOG.warning("Query against device %s failed", name)
return False
if partition and d_type == 'part':
@@ -372,7 +372,7 @@ def find_device_node(device, fs_type=None, label=None, valid_targets=None,
if not raw_device_used:
return (device, False)
- LOG.warn("Failed to find device during available device search.")
+ LOG.warning("Failed to find device during available device search.")
return (None, False)
@@ -638,7 +638,7 @@ def purge_disk(device):
if d['type'] not in ["disk", "crypt"]:
wipefs_cmd = [WIPEFS_CMD, "--all", "/dev/%s" % d['name']]
try:
- LOG.info("Purging filesystem on /dev/%s" % d['name'])
+ LOG.info("Purging filesystem on /dev/%s", d['name'])
util.subp(wipefs_cmd)
except Exception:
raise Exception("Failed FS purge of /dev/%s" % d['name'])
@@ -700,7 +700,7 @@ def exec_mkpart_gpt(device, layout):
[SGDISK_CMD,
'-t', '{}:{}'.format(index, partition_type), device])
except Exception:
- LOG.warn("Failed to partition device %s" % device)
+ LOG.warning("Failed to partition device %s", device)
raise
read_parttbl(device)
@@ -736,7 +736,7 @@ def mkpart(device, definition):
# ensure that we get a real device rather than a symbolic link
device = os.path.realpath(device)
- LOG.debug("Checking values for %s definition" % device)
+ LOG.debug("Checking values for %s definition", device)
overwrite = definition.get('overwrite', False)
layout = definition.get('layout', False)
table_type = definition.get('table_type', 'mbr')
@@ -766,7 +766,7 @@ def mkpart(device, definition):
LOG.debug("Checking if device is safe to partition")
if not overwrite and (is_disk_used(device) or is_filesystem(device)):
- LOG.debug("Skipping partitioning on configured device %s" % device)
+ LOG.debug("Skipping partitioning on configured device %s", device)
return
LOG.debug("Checking for device size")
@@ -774,7 +774,7 @@ def mkpart(device, definition):
LOG.debug("Calculating partition layout")
part_definition = get_partition_layout(table_type, device_size, layout)
- LOG.debug(" Layout is: %s" % part_definition)
+ LOG.debug(" Layout is: %s", part_definition)
LOG.debug("Creating partition table on %s", device)
exec_mkpart(table_type, device, part_definition)
@@ -799,7 +799,7 @@ def lookup_force_flag(fs):
if fs.lower() in flags:
return flags[fs]
- LOG.warn("Force flag for %s is unknown." % fs)
+ LOG.warning("Force flag for %s is unknown.", fs)
return ''
@@ -858,7 +858,7 @@ def mkfs(fs_cfg):
LOG.debug("Device %s has required file system", device)
return
else:
- LOG.warn("Destroying filesystem on %s", device)
+ LOG.warning("Destroying filesystem on %s", device)
else:
LOG.debug("Device %s is cleared for formating", device)
@@ -883,14 +883,14 @@ def mkfs(fs_cfg):
return
if not reuse and fs_replace and device:
- LOG.debug("Replacing file system on %s as instructed." % device)
+ LOG.debug("Replacing file system on %s as instructed.", device)
if not device:
LOG.debug("No device aviable that matches request. "
"Skipping fs creation for %s", fs_cfg)
return
elif not partition or str(partition).lower() == 'none':
- LOG.debug("Using the raw device to place filesystem %s on" % label)
+ LOG.debug("Using the raw device to place filesystem %s on", label)
else:
LOG.debug("Error in device identification handling.")
@@ -901,7 +901,7 @@ def mkfs(fs_cfg):
# Make sure the device is defined
if not device:
- LOG.warn("Device is not known: %s", device)
+ LOG.warning("Device is not known: %s", device)
return
# Check that we can create the FS
@@ -923,8 +923,8 @@ def mkfs(fs_cfg):
mkfs_cmd = util.which("mk%s" % fs_type)
if not mkfs_cmd:
- LOG.warn("Cannot create fstype '%s'. No mkfs.%s command", fs_type,
- fs_type)
+ LOG.warning("Cannot create fstype '%s'. No mkfs.%s command",
+ fs_type, fs_type)
return
fs_cmd = [mkfs_cmd, device]
diff --git a/cloudinit/config/cc_fan.py b/cloudinit/config/cc_fan.py
index f0cda3d5..0a135bbe 100644
--- a/cloudinit/config/cc_fan.py
+++ b/cloudinit/config/cc_fan.py
@@ -64,7 +64,7 @@ def stop_update_start(service, config_file, content, systemd=False):
try:
return util.subp(cmd, capture=True)
except util.ProcessExecutionError as e:
- LOG.warn("failed: %s (%s): %s", service, cmd, e)
+ LOG.warning("failed: %s (%s): %s", service, cmd, e)
return False
stop_failed = not run(cmds['stop'], msg='stop %s' % service)
@@ -74,7 +74,7 @@ def stop_update_start(service, config_file, content, systemd=False):
ret = run(cmds['start'], msg='start %s' % service)
if ret and stop_failed:
- LOG.warn("success: %s started", service)
+ LOG.warning("success: %s started", service)
if 'enable' in cmds:
ret = run(cmds['enable'], msg='enable %s' % service)
diff --git a/cloudinit/config/cc_mounts.py b/cloudinit/config/cc_mounts.py
index 5b630f8b..f14a4fc5 100644
--- a/cloudinit/config/cc_mounts.py
+++ b/cloudinit/config/cc_mounts.py
@@ -216,8 +216,9 @@ def suggested_swapsize(memsize=None, maxsize=None, fsys=None):
else:
pinfo[k] = v
- LOG.debug("suggest %(size)s swap for %(mem)s memory with '%(avail)s'"
- " disk given max=%(max_in)s [max=%(max)s]'" % pinfo)
+ LOG.debug("suggest %s swap for %s memory with '%s'"
+ " disk given max=%s [max=%s]'", pinfo['size'], pinfo['mem'],
+ pinfo['avail'], pinfo['max_in'], pinfo['max'])
return size
@@ -266,7 +267,7 @@ def handle_swapcfg(swapcfg):
return None or (filename, size)
"""
if not isinstance(swapcfg, dict):
- LOG.warn("input for swap config was not a dict.")
+ LOG.warning("input for swap config was not a dict.")
return None
fname = swapcfg.get('filename', '/swap.img')
@@ -289,7 +290,8 @@ def handle_swapcfg(swapcfg):
return fname
LOG.debug("swap file %s existed, but not in /proc/swaps", fname)
except Exception:
- LOG.warn("swap file %s existed. Error reading /proc/swaps", fname)
+ LOG.warning("swap file %s existed. Error reading /proc/swaps",
+ fname)
return fname
try:
@@ -300,7 +302,7 @@ def handle_swapcfg(swapcfg):
return setup_swapfile(fname=fname, size=size, maxsize=maxsize)
except Exception as e:
- LOG.warn("failed to setup swap: %s", e)
+ LOG.warning("failed to setup swap: %s", e)
return None
diff --git a/cloudinit/config/cc_resolv_conf.py b/cloudinit/config/cc_resolv_conf.py
index 9c5cd1fe..2548d1f1 100644
--- a/cloudinit/config/cc_resolv_conf.py
+++ b/cloudinit/config/cc_resolv_conf.py
@@ -77,7 +77,7 @@ def generate_resolv_conf(template_fn, params, target_fname="/etc/resolv.conf"):
params['options'] = {}
params['flags'] = flags
- LOG.debug("Writing resolv.conf from template %s" % template_fn)
+ LOG.debug("Writing resolv.conf from template %s", template_fn)
templater.render_to_file(template_fn, target_fname, params)
diff --git a/cloudinit/config/cc_rsyslog.py b/cloudinit/config/cc_rsyslog.py
index 50316214..50ff9e35 100644
--- a/cloudinit/config/cc_rsyslog.py
+++ b/cloudinit/config/cc_rsyslog.py
@@ -252,7 +252,8 @@ def apply_rsyslog_changes(configs, def_fname, cfg_dir):
for cur_pos, ent in enumerate(configs):
if isinstance(ent, dict):
if "content" not in ent:
- LOG.warn("No 'content' entry in config entry %s", cur_pos + 1)
+ LOG.warning("No 'content' entry in config entry %s",
+ cur_pos + 1)
continue
content = ent['content']
filename = ent.get("filename", def_fname)
@@ -262,7 +263,7 @@ def apply_rsyslog_changes(configs, def_fname, cfg_dir):
filename = filename.strip()
if not filename:
- LOG.warn("Entry %s has an empty filename", cur_pos + 1)
+ LOG.warning("Entry %s has an empty filename", cur_pos + 1)
continue
filename = os.path.join(cfg_dir, filename)
@@ -389,7 +390,7 @@ def remotes_to_rsyslog_cfg(remotes, header=None, footer=None):
try:
lines.append(str(parse_remotes_line(line, name=name)))
except ValueError as e:
- LOG.warn("failed loading remote %s: %s [%s]", name, line, e)
+ LOG.warning("failed loading remote %s: %s [%s]", name, line, e)
if footer is not None:
lines.append(footer)
return '\n'.join(lines) + "\n"
diff --git a/cloudinit/config/cc_snappy.py b/cloudinit/config/cc_snappy.py
index 6ea81b84..a9682f19 100644
--- a/cloudinit/config/cc_snappy.py
+++ b/cloudinit/config/cc_snappy.py
@@ -283,8 +283,8 @@ def handle(name, cfg, cloud, log, args):
render_snap_op(**pkg_op)
except Exception as e:
fails.append((pkg_op, e,))
- LOG.warn("'%s' failed for '%s': %s",
- pkg_op['op'], pkg_op['name'], e)
+ LOG.warning("'%s' failed for '%s': %s",
+ pkg_op['op'], pkg_op['name'], e)
# Default to disabling SSH
ssh_enabled = mycfg.get('ssh_enabled', "auto")
@@ -303,7 +303,7 @@ def handle(name, cfg, cloud, log, args):
LOG.debug("Enabling SSH, password authentication requested")
ssh_enabled = True
elif ssh_enabled not in (True, False):
- LOG.warn("Unknown value '%s' in ssh_enabled", ssh_enabled)
+ LOG.warning("Unknown value '%s' in ssh_enabled", ssh_enabled)
disable_enable_ssh(ssh_enabled)
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 803ac74e..28650b88 100755
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -143,9 +143,9 @@ class Distro(object):
def _apply_network_from_network_config(self, netconfig, bring_up=True):
distro = self.__class__
- LOG.warn("apply_network_config is not currently implemented "
- "for distribution '%s'. Attempting to use apply_network",
- distro)
+ LOG.warning("apply_network_config is not currently implemented "
+ "for distribution '%s'. Attempting to use apply_network",
+ distro)
header = '\n'.join([
"# Converted from network_config for distro %s" % distro,
"# Implmentation of _write_network_config is needed."
@@ -335,7 +335,8 @@ class Distro(object):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s", cmd, err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
return True
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed", cmd)
@@ -358,7 +359,7 @@ class Distro(object):
Add a user to the system using standard GNU tools
"""
if util.is_user(name):
- LOG.info("User %s already exists, skipping." % name)
+ LOG.info("User %s already exists, skipping.", name)
return
if 'create_groups' in kwargs:
@@ -520,9 +521,9 @@ class Distro(object):
keys = list(keys.values())
if keys is not None:
if not isinstance(keys, (tuple, list, set)):
- LOG.warn("Invalid type '%s' detected for"
- " 'ssh_authorized_keys', expected list,"
- " string, dict, or set.", type(keys))
+ LOG.warning("Invalid type '%s' detected for"
+ " 'ssh_authorized_keys', expected list,"
+ " string, dict, or set.", type(keys))
else:
keys = set(keys) or []
ssh_util.setup_user_keys(keys, name, options=None)
@@ -595,7 +596,7 @@ class Distro(object):
"#includedir %s" % (path), '']
sudoers_contents = "\n".join(lines)
util.append_file(sudo_base, sudoers_contents)
- LOG.debug("Added '#includedir %s' to %s" % (path, sudo_base))
+ LOG.debug("Added '#includedir %s' to %s", path, sudo_base)
except IOError as e:
util.logexc(LOG, "Failed to write %s", sudo_base)
raise e
@@ -647,11 +648,11 @@ class Distro(object):
# Check if group exists, and then add it doesn't
if util.is_group(name):
- LOG.warn("Skipping creation of existing group '%s'" % name)
+ LOG.warning("Skipping creation of existing group '%s'", name)
else:
try:
util.subp(group_add_cmd)
- LOG.info("Created new group %s" % name)
+ LOG.info("Created new group %s", name)
except Exception:
util.logexc(LOG, "Failed to create group %s", name)
@@ -659,12 +660,12 @@ class Distro(object):
if len(members) > 0:
for member in members:
if not util.is_user(member):
- LOG.warn("Unable to add group member '%s' to group '%s'"
- "; user does not exist.", member, name)
+ LOG.warning("Unable to add group member '%s' to group '%s'"
+ "; user does not exist.", member, name)
continue
util.subp(['usermod', '-a', '-G', name, member])
- LOG.info("Added user '%s' to group '%s'" % (member, name))
+ LOG.info("Added user '%s' to group '%s'", member, name)
def _get_package_mirror_info(mirror_info, data_source=None,
@@ -708,7 +709,7 @@ def _get_package_mirror_info(mirror_info, data_source=None,
if found:
results[name] = found
- LOG.debug("filtered distro mirror info: %s" % results)
+ LOG.debug("filtered distro mirror info: %s", results)
return results
diff --git a/cloudinit/distros/arch.py b/cloudinit/distros/arch.py
index 64b8c1fb..75d46201 100644
--- a/cloudinit/distros/arch.py
+++ b/cloudinit/distros/arch.py
@@ -83,7 +83,8 @@ class Distro(distros.Distro):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s", cmd, err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed", cmd)
@@ -94,7 +95,8 @@ class Distro(distros.Distro):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s", cmd, err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
return True
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed", cmd)
diff --git a/cloudinit/distros/debian.py b/cloudinit/distros/debian.py
index 16f8d955..d06d46a6 100644
--- a/cloudinit/distros/debian.py
+++ b/cloudinit/distros/debian.py
@@ -223,6 +223,6 @@ def _maybe_remove_legacy_eth0(path="/etc/network/interfaces.d/eth0.cfg"):
except Exception:
msg = bmsg + " %s exists, but could not be read." % path
- LOG.warn(msg)
+ LOG.warning(msg)
# vi: ts=4 expandtab
diff --git a/cloudinit/distros/freebsd.py b/cloudinit/distros/freebsd.py
index a70ee45b..183e4452 100644
--- a/cloudinit/distros/freebsd.py
+++ b/cloudinit/distros/freebsd.py
@@ -148,7 +148,7 @@ class Distro(distros.Distro):
def create_group(self, name, members):
group_add_cmd = ['pw', '-n', name]
if util.is_group(name):
- LOG.warn("Skipping creation of existing group '%s'", name)
+ LOG.warning("Skipping creation of existing group '%s'", name)
else:
try:
util.subp(group_add_cmd)
@@ -160,8 +160,8 @@ class Distro(distros.Distro):
if len(members) > 0:
for member in members:
if not util.is_user(member):
- LOG.warn("Unable to add group member '%s' to group '%s'"
- "; user does not exist.", member, name)
+ LOG.warning("Unable to add group member '%s' to group '%s'"
+ "; user does not exist.", member, name)
continue
try:
util.subp(['pw', 'usermod', '-n', name, '-G', member])
@@ -369,7 +369,7 @@ class Distro(distros.Distro):
# OS. This is just fine.
(_out, err) = util.subp(cmd, rcs=[0, 1])
if len(err):
- LOG.warn("Error running %s: %s", cmd, err)
+ LOG.warning("Error running %s: %s", cmd, err)
def install_packages(self, pkglist):
self.update_package_sources()
diff --git a/cloudinit/distros/gentoo.py b/cloudinit/distros/gentoo.py
index 83fb56ff..0ad2f032 100644
--- a/cloudinit/distros/gentoo.py
+++ b/cloudinit/distros/gentoo.py
@@ -96,8 +96,8 @@ class Distro(distros.Distro):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s",
- cmd, err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed",
cmd)
@@ -121,7 +121,8 @@ class Distro(distros.Distro):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s", cmd, err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
return True
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed", cmd)
@@ -138,8 +139,8 @@ class Distro(distros.Distro):
try:
(_out, err) = util.subp(cmd)
if len(err):
- LOG.warn("Running %s resulted in stderr output: %s", cmd,
- err)
+ LOG.warning("Running %s resulted in stderr output: %s",
+ cmd, err)
except util.ProcessExecutionError:
util.logexc(LOG, "Running interface command %s failed", cmd)
return False
diff --git a/cloudinit/distros/parsers/resolv_conf.py b/cloudinit/distros/parsers/resolv_conf.py
index d1f8a042..a62055ae 100644
--- a/cloudinit/distros/parsers/resolv_conf.py
+++ b/cloudinit/distros/parsers/resolv_conf.py
@@ -81,9 +81,9 @@ class ResolvConf(object):
if len(new_ns) == len(current_ns):
return current_ns
if len(current_ns) >= 3:
- LOG.warn("ignoring nameserver %r: adding would "
- "exceed the maximum of "
- "'3' name servers (see resolv.conf(5))" % (ns))
+ LOG.warning("ignoring nameserver %r: adding would "
+ "exceed the maximum of "
+ "'3' name servers (see resolv.conf(5))", ns)
return current_ns[:3]
self._remove_option('nameserver')
for n in new_ns:
diff --git a/cloudinit/distros/ug_util.py b/cloudinit/distros/ug_util.py
index 53a0eafb..9378dd78 100755
--- a/cloudinit/distros/ug_util.py
+++ b/cloudinit/distros/ug_util.py
@@ -214,8 +214,8 @@ def normalize_users_groups(cfg, distro):
'name': old_user,
}
if not isinstance(old_user, dict):
- LOG.warn(("Format for 'user' key must be a string or "
- "dictionary and not %s"), type_utils.obj_name(old_user))
+ LOG.warning(("Format for 'user' key must be a string or dictionary"
+ " and not %s"), type_utils.obj_name(old_user))
old_user = {}
# If no old user format, then assume the distro
@@ -227,9 +227,9 @@ def normalize_users_groups(cfg, distro):
try:
distro_user_config = distro.get_default_user()
except NotImplementedError:
- LOG.warn(("Distro has not implemented default user "
- "access. No distribution provided default user"
- " will be normalized."))
+ LOG.warning(("Distro has not implemented default user "
+ "access. No distribution provided default user"
+ " will be normalized."))
# Merge the old user (which may just be an empty dict when not
# present with the distro provided default user configuration so
@@ -239,9 +239,9 @@ def normalize_users_groups(cfg, distro):
base_users = cfg.get('users', [])
if not isinstance(base_users, (list, dict) + six.string_types):
- LOG.warn(("Format for 'users' key must be a comma separated string"
- " or a dictionary or a list and not %s"),
- type_utils.obj_name(base_users))
+ LOG.warning(("Format for 'users' key must be a comma separated string"
+ " or a dictionary or a list and not %s"),
+ type_utils.obj_name(base_users))
base_users = []
if old_user:
diff --git a/cloudinit/ec2_utils.py b/cloudinit/ec2_utils.py
index 13691549..723d6bd6 100644
--- a/cloudinit/ec2_utils.py
+++ b/cloudinit/ec2_utils.py
@@ -38,8 +38,8 @@ class MetadataLeafDecoder(object):
# Assume it's json, unless it fails parsing...
return json.loads(blob)
except (ValueError, TypeError) as e:
- LOG.warn("Field %s looked like a json object, but it was"
- " not: %s", field, e)
+ LOG.warning("Field %s looked like a json object, but it"
+ " was not: %s", field, e)
if blob.find("\n") != -1:
return blob.splitlines()
return blob
@@ -125,7 +125,8 @@ class MetadataMaterializer(object):
joined.update(child_contents)
for field in leaf_contents.keys():
if field in joined:
- LOG.warn("Duplicate key found in results from %s", base_url)
+ LOG.warning("Duplicate key found in results from %s",
+ base_url)
else:
joined[field] = leaf_contents[field]
return joined
diff --git a/cloudinit/gpg.py b/cloudinit/gpg.py
index 70c620de..d58d73e0 100644
--- a/cloudinit/gpg.py
+++ b/cloudinit/gpg.py
@@ -43,7 +43,7 @@ def delete_key(key):
util.subp(["gpg", "--batch", "--yes", "--delete-keys", key],
capture=True)
except util.ProcessExecutionError as error:
- LOG.warn('Failed delete key "%s": %s', key, error)
+ LOG.warning('Failed delete key "%s": %s', key, error)
def getkeybyid(keyid, keyserver='keyserver.ubuntu.com'):
diff --git a/cloudinit/handlers/__init__.py b/cloudinit/handlers/__init__.py
index 1362db6e..c3576c04 100644
--- a/cloudinit/handlers/__init__.py
+++ b/cloudinit/handlers/__init__.py
@@ -246,7 +246,7 @@ def fixup_handler(mod, def_freq=PER_INSTANCE):
else:
freq = mod.frequency
if freq and freq not in FREQUENCIES:
- LOG.warn("Handler %s has an unknown frequency %s", mod, freq)
+ LOG.warning("Handler %s has an unknown frequency %s", mod, freq)
return mod
diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py
index 7435d58d..f01021aa 100644
--- a/cloudinit/helpers.py
+++ b/cloudinit/helpers.py
@@ -126,11 +126,11 @@ class FileSemaphores(object):
# this case could happen if the migrator module hadn't run yet
# but the item had run before we did canon_sem_name.
if cname != name and os.path.exists(self._get_path(name, freq)):
- LOG.warn("%s has run without canonicalized name [%s].\n"
- "likely the migrator has not yet run. "
- "It will run next boot.\n"
- "run manually with: cloud-init single --name=migrator"
- % (name, cname))
+ LOG.warning("%s has run without canonicalized name [%s].\n"
+ "likely the migrator has not yet run. "
+ "It will run next boot.\n"
+ "run manually with: cloud-init single --name=migrator",
+ name, cname)
return True
return False
@@ -375,8 +375,8 @@ class Paths(object):
def get_ipath(self, name=None):
ipath = self._get_ipath(name)
if not ipath:
- LOG.warn(("No per instance data available, "
- "is there an datasource/iid set?"))
+ LOG.warning(("No per instance data available, "
+ "is there an datasource/iid set?"))
return None
else:
return ipath
diff --git a/cloudinit/net/network_state.py b/cloudinit/net/network_state.py
index 692b6007..db3c3579 100644
--- a/cloudinit/net/network_state.py
+++ b/cloudinit/net/network_state.py
@@ -242,8 +242,8 @@ class NetworkStateInterpreter(object):
if not skip_broken:
raise
else:
- LOG.warn("Skipping invalid command: %s", command,
- exc_info=True)
+ LOG.warning("Skipping invalid command: %s", command,
+ exc_info=True)
LOG.debug(self.dump_network_state())
def parse_config_v2(self, skip_broken=True):
@@ -262,8 +262,8 @@ class NetworkStateInterpreter(object):
if not skip_broken:
raise
else:
- LOG.warn("Skipping invalid command: %s", command,
- exc_info=True)
+ LOG.warning("Skipping invalid command: %s", command,
+ exc_info=True)
LOG.debug(self.dump_network_state())
@ensure_command_keys(['name'])
diff --git a/cloudinit/reporting/handlers.py b/cloudinit/reporting/handlers.py
index b90bc191..4066076c 100644
--- a/cloudinit/reporting/handlers.py
+++ b/cloudinit/reporting/handlers.py
@@ -37,7 +37,7 @@ class LogHandler(ReportingHandler):
try:
level = getattr(logging, level.upper())
except Exception:
- LOG.warn("invalid level '%s', using WARN", input_level)
+ LOG.warning("invalid level '%s', using WARN", input_level)
level = logging.WARN
self.level = level
@@ -82,7 +82,7 @@ class WebHookHandler(ReportingHandler):
timeout=self.timeout,
retries=self.retries, ssl_details=self.ssl_details)
except Exception:
- LOG.warn("failed posting event: %s" % event.as_string())
+ LOG.warning("failed posting event: %s", event.as_string())
available_handlers = DictRegistry()
diff --git a/cloudinit/sources/DataSourceAltCloud.py b/cloudinit/sources/DataSourceAltCloud.py
index 8528fa10..ed1d691a 100644
--- a/cloudinit/sources/DataSourceAltCloud.py
+++ b/cloudinit/sources/DataSourceAltCloud.py
@@ -181,7 +181,7 @@ class DataSourceAltCloud(sources.DataSource):
try:
cmd = CMD_PROBE_FLOPPY
(cmd_out, _err) = util.subp(cmd)
- LOG.debug(('Command: %s\nOutput%s') % (' '.join(cmd), cmd_out))
+ LOG.debug('Command: %s\nOutput%s', ' '.join(cmd), cmd_out)
except ProcessExecutionError as _err:
util.logexc(LOG, 'Failed command: %s\n%s', ' '.join(cmd), _err)
return False
@@ -196,7 +196,7 @@ class DataSourceAltCloud(sources.DataSource):
cmd = CMD_UDEVADM_SETTLE
cmd.append('--exit-if-exists=' + floppy_dev)
(cmd_out, _err) = util.subp(cmd)
- LOG.debug(('Command: %s\nOutput%s') % (' '.join(cmd), cmd_out))
+ LOG.debug('Command: %s\nOutput%s', ' '.join(cmd), cmd_out)
except ProcessExecutionError as _err:
util.logexc(LOG, 'Failed command: %s\n%s', ' '.join(cmd), _err)
return False
diff --git a/cloudinit/sources/DataSourceAzure.py b/cloudinit/sources/DataSourceAzure.py
index 48a3e1df..04358b73 100644
--- a/cloudinit/sources/DataSourceAzure.py
+++ b/cloudinit/sources/DataSourceAzure.py
@@ -116,7 +116,7 @@ class DataSourceAzureNet(sources.DataSource):
# the metadata and "bounce" the network to force DDNS to update via
# dhclient
azure_hostname = self.metadata.get('local-hostname')
- LOG.debug("Hostname in metadata is {}".format(azure_hostname))
+ LOG.debug("Hostname in metadata is %s", azure_hostname)
hostname_command = self.ds_cfg['hostname_bounce']['hostname_command']
with temporary_hostname(azure_hostname, self.ds_cfg,
@@ -132,7 +132,7 @@ class DataSourceAzureNet(sources.DataSource):
cfg=cfg,
prev_hostname=previous_hostname)
except Exception as e:
- LOG.warn("Failed publishing hostname: %s", e)
+ LOG.warning("Failed publishing hostname: %s", e)
util.logexc(LOG, "handling set_hostname failed")
def get_metadata_from_agent(self):
@@ -168,7 +168,7 @@ class DataSourceAzureNet(sources.DataSource):
func=wait_for_files,
args=(fp_files,))
if len(missing):
- LOG.warn("Did not find files, but going on: %s", missing)
+ LOG.warning("Did not find files, but going on: %s", missing)
metadata = {}
metadata['public-keys'] = key_value or pubkeys_from_crt_files(fp_files)
@@ -199,7 +199,7 @@ class DataSourceAzureNet(sources.DataSource):
except BrokenAzureDataSource as exc:
raise exc
except util.MountFailedError:
- LOG.warn("%s was not mountable", cdev)
+ LOG.warning("%s was not mountable", cdev)
continue
(md, self.userdata_raw, cfg, files) = ret
@@ -331,8 +331,8 @@ def address_ephemeral_resize(devpath=RESOURCE_DISK_PATH, maxwait=120,
log_pre="Azure ephemeral disk: ")
if missing:
- LOG.warn("ephemeral device '%s' did not appear after %d seconds.",
- devpath, maxwait)
+ LOG.warning("ephemeral device '%s' did not appear after %d seconds.",
+ devpath, maxwait)
return
result = False
@@ -342,7 +342,7 @@ def address_ephemeral_resize(devpath=RESOURCE_DISK_PATH, maxwait=120,
else:
result, msg = can_dev_be_reformatted(devpath)
- LOG.debug("reformattable=%s: %s" % (result, msg))
+ LOG.debug("reformattable=%s: %s", result, msg)
if not result:
return
@@ -355,7 +355,7 @@ def address_ephemeral_resize(devpath=RESOURCE_DISK_PATH, maxwait=120,
LOG.debug(bmsg + " removed.")
except Exception as e:
# python3 throws FileNotFoundError, python2 throws OSError
- LOG.warn(bmsg + ": remove failed! (%s)" % e)
+ LOG.warning(bmsg + ": remove failed! (%s)", e)
else:
LOG.debug(bmsg + " did not exist.")
return
@@ -405,7 +405,7 @@ def pubkeys_from_crt_files(flist):
errors.append(fname)
if errors:
- LOG.warn("failed to convert the crt files to pubkey: %s", errors)
+ LOG.warning("failed to convert the crt files to pubkey: %s", errors)
return pubkeys
@@ -427,8 +427,8 @@ def wait_for_files(flist, maxwait=60, naplen=.5, log_pre=""):
time.sleep(naplen)
waited += naplen
- LOG.warn("%sStill missing files after %s seconds: %s",
- log_pre, maxwait, need)
+ LOG.warning("%sStill missing files after %s seconds: %s",
+ log_pre, maxwait, need)
return need
diff --git a/cloudinit/sources/DataSourceCloudSigma.py b/cloudinit/sources/DataSourceCloudSigma.py
index ffc23e3d..19df16b1 100644
--- a/cloudinit/sources/DataSourceCloudSigma.py
+++ b/cloudinit/sources/DataSourceCloudSigma.py
@@ -43,7 +43,7 @@ class DataSourceCloudSigma(sources.DataSource):
LOG.debug("detected hypervisor as %s", sys_product_name)
return 'cloudsigma' in sys_product_name.lower()
- LOG.warn("failed to query dmi data for system product name")
+ LOG.warning("failed to query dmi data for system product name")
return False
def get_data(self):
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py
index 46dd89e0..ef374f3f 100644
--- a/cloudinit/sources/DataSourceConfigDrive.py
+++ b/cloudinit/sources/DataSourceConfigDrive.py
@@ -127,7 +127,7 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
try:
self.vendordata_raw = sources.convert_vendordata(vd)
except ValueError as e:
- LOG.warn("Invalid content in vendor-data: %s", e)
+ LOG.warning("Invalid content in vendor-data: %s", e)
self.vendordata_raw = None
# network_config is an /etc/network/interfaces formated file and is
@@ -190,7 +190,7 @@ def on_first_boot(data, distro=None, network=True):
if network:
net_conf = data.get("network_config", '')
if net_conf and distro:
- LOG.warn("Updating network interfaces from config drive")
+ LOG.warning("Updating network interfaces from config drive")
distro.apply_network(net_conf)
write_injected_files(data.get('files'))
diff --git a/cloudinit/sources/DataSourceDigitalOcean.py b/cloudinit/sources/DataSourceDigitalOcean.py
index d052c4c3..5e7e66be 100644
--- a/cloudinit/sources/DataSourceDigitalOcean.py
+++ b/cloudinit/sources/DataSourceDigitalOcean.py
@@ -51,7 +51,7 @@ class DataSourceDigitalOcean(sources.DataSource):
if not is_do:
return False
- LOG.info("Running on digital ocean. droplet_id=%s" % droplet_id)
+ LOG.info("Running on digital ocean. droplet_id=%s", droplet_id)
ipv4LL_nic = None
if self.use_ip4LL:
diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py
index 6f01a139..2f9c7edf 100644
--- a/cloudinit/sources/DataSourceEc2.py
+++ b/cloudinit/sources/DataSourceEc2.py
@@ -125,7 +125,7 @@ class DataSourceEc2(sources.DataSource):
if len(filtered):
mdurls = filtered
else:
- LOG.warn("Empty metadata url list! using default list")
+ LOG.warning("Empty metadata url list! using default list")
mdurls = self.metadata_urls
urls = []
@@ -232,7 +232,7 @@ def read_strict_mode(cfgval, default):
try:
return parse_strict_mode(cfgval)
except ValueError as e:
- LOG.warn(e)
+ LOG.warning(e)
return default
@@ -270,7 +270,7 @@ def warn_if_necessary(cfgval, cfg):
try:
mode, sleep = parse_strict_mode(cfgval)
except ValueError as e:
- LOG.warn(e)
+ LOG.warning(e)
return
if mode == "false":
@@ -304,8 +304,8 @@ def identify_platform():
if result:
return result
except Exception as e:
- LOG.warn("calling %s with %s raised exception: %s",
- checker, data, e)
+ LOG.warning("calling %s with %s raised exception: %s",
+ checker, data, e)
def _collect_platform_data():
diff --git a/cloudinit/sources/DataSourceGCE.py b/cloudinit/sources/DataSourceGCE.py
index 637c9505..e9afda9c 100644
--- a/cloudinit/sources/DataSourceGCE.py
+++ b/cloudinit/sources/DataSourceGCE.py
@@ -98,7 +98,7 @@ class DataSourceGCE(sources.DataSource):
if not running_on_gce:
LOG.debug(msg, mkey)
else:
- LOG.warn(msg, mkey)
+ LOG.warning(msg, mkey)
return False
self.metadata[mkey] = value
@@ -116,7 +116,8 @@ class DataSourceGCE(sources.DataSource):
self.metadata['user-data'] = b64decode(
self.metadata['user-data'])
else:
- LOG.warn('unknown user-data-encoding: %s, ignoring', encoding)
+ LOG.warning('unknown user-data-encoding: %s, ignoring',
+ encoding)
return running_on_gce
diff --git a/cloudinit/sources/DataSourceMAAS.py b/cloudinit/sources/DataSourceMAAS.py
index 41179b02..77df5a51 100644
--- a/cloudinit/sources/DataSourceMAAS.py
+++ b/cloudinit/sources/DataSourceMAAS.py
@@ -71,7 +71,7 @@ class DataSourceMAAS(sources.DataSource):
except MAASSeedDirNone:
pass
except MAASSeedDirMalformed as exc:
- LOG.warn("%s was malformed: %s" % (self.seed_dir, exc))
+ LOG.warning("%s was malformed: %s", self.seed_dir, exc)
raise
# If there is no metadata_url, then we're not configured
@@ -107,7 +107,7 @@ class DataSourceMAAS(sources.DataSource):
try:
self.vendordata_raw = sources.convert_vendordata(vd)
except ValueError as e:
- LOG.warn("Invalid content in vendor-data: %s", e)
+ LOG.warning("Invalid content in vendor-data: %s", e)
self.vendordata_raw = None
def wait_for_metadata_service(self, url):
@@ -126,7 +126,7 @@ class DataSourceMAAS(sources.DataSource):
if timeout in mcfg:
timeout = int(mcfg.get("timeout", timeout))
except Exception:
- LOG.warn("Failed to get timeout, using %s" % timeout)
+ LOG.warning("Failed to get timeout, using %s", timeout)
starttime = time.time()
if url.endswith("/"):
@@ -190,8 +190,8 @@ def read_maas_seed_url(seed_url, read_file_or_url=None, timeout=None,
else:
md[path] = util.decode_binary(resp.contents)
else:
- LOG.warn(("Fetching from %s resulted in"
- " an invalid http code %s"), url, resp.code)
+ LOG.warning(("Fetching from %s resulted in"
+ " an invalid http code %s"), url, resp.code)
except url_helper.UrlError as e:
if e.code == 404 and not optional:
raise MAASSeedDirMalformed(
diff --git a/cloudinit/sources/DataSourceNoCloud.py b/cloudinit/sources/DataSourceNoCloud.py
index 5924b828..c68f6b8c 100644
--- a/cloudinit/sources/DataSourceNoCloud.py
+++ b/cloudinit/sources/DataSourceNoCloud.py
@@ -104,8 +104,8 @@ class DataSourceNoCloud(sources.DataSource):
pp2d_kwargs)
except ValueError as e:
if dev in label_list:
- LOG.warn("device %s with label=%s not a"
- "valid seed.", dev, label)
+ LOG.warning("device %s with label=%s not a"
+ "valid seed.", dev, label)
continue
mydata = _merge_new_seed(mydata, seeded)
diff --git a/cloudinit/sources/DataSourceOVF.py b/cloudinit/sources/DataSourceOVF.py
index d70784ac..f20c9a65 100644
--- a/cloudinit/sources/DataSourceOVF.py
+++ b/cloudinit/sources/DataSourceOVF.py
@@ -225,12 +225,12 @@ def get_max_wait_from_cfg(cfg):
try:
max_wait = int(cfg.get(max_wait_cfg_option, default_max_wait))
except ValueError:
- LOG.warn("Failed to get '%s', using %s",
- max_wait_cfg_option, default_max_wait)
+ LOG.warning("Failed to get '%s', using %s",
+ max_wait_cfg_option, default_max_wait)
if max_wait <= 0:
- LOG.warn("Invalid value '%s' for '%s', using '%s' instead",
- max_wait, max_wait_cfg_option, default_max_wait)
+ LOG.warning("Invalid value '%s' for '%s', using '%s' instead",
+ max_wait, max_wait_cfg_option, default_max_wait)
max_wait = default_max_wait
return max_wait
@@ -355,7 +355,7 @@ def transport_iso9660(require_iso=True):
try:
(fname, contents) = util.mount_cb(fullp, get_ovf_env, mtype=mtype)
except util.MountFailedError:
- LOG.debug("%s not mountable as iso9660" % fullp)
+ LOG.debug("%s not mountable as iso9660", fullp)
continue
if contents is not False:
diff --git a/cloudinit/sources/DataSourceOpenNebula.py b/cloudinit/sources/DataSourceOpenNebula.py
index cd75e6ea..5fdac192 100644
--- a/cloudinit/sources/DataSourceOpenNebula.py
+++ b/cloudinit/sources/DataSourceOpenNebula.py
@@ -64,7 +64,7 @@ class DataSourceOpenNebula(sources.DataSource):
except BrokenContextDiskDir as exc:
raise exc
except util.MountFailedError:
- LOG.warn("%s was not mountable" % cdev)
+ LOG.warning("%s was not mountable", cdev)
if results:
seed = cdev
@@ -381,7 +381,7 @@ def read_context_disk_dir(source_dir, asuser=None):
try:
results['userdata'] = util.b64d(results['userdata'])
except TypeError:
- LOG.warn("Failed base64 decoding of userdata")
+ LOG.warning("Failed base64 decoding of userdata")
# generate static /etc/network/interfaces
# only if there are any required context variables
diff --git a/cloudinit/sources/DataSourceOpenStack.py b/cloudinit/sources/DataSourceOpenStack.py
index e1ea21f8..f0a6bfce 100644
--- a/cloudinit/sources/DataSourceOpenStack.py
+++ b/cloudinit/sources/DataSourceOpenStack.py
@@ -73,7 +73,7 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):
if len(filtered):
urls = filtered
else:
- LOG.warn("Empty metadata url list! using default list")
+ LOG.warning("Empty metadata url list! using default list")
urls = [DEF_MD_URL]
md_urls = []
@@ -137,7 +137,7 @@ class DataSourceOpenStack(openstack.SourceMixin, sources.DataSource):
try:
self.vendordata_raw = sources.convert_vendordata(vd)
except ValueError as e:
- LOG.warn("Invalid content in vendor-data: %s", e)
+ LOG.warning("Invalid content in vendor-data: %s", e)
self.vendordata_raw = None
return True
diff --git a/cloudinit/sources/DataSourceSmartOS.py b/cloudinit/sources/DataSourceSmartOS.py
index 5e668947..6c6902fd 100644
--- a/cloudinit/sources/DataSourceSmartOS.py
+++ b/cloudinit/sources/DataSourceSmartOS.py
@@ -555,7 +555,7 @@ class JoyentMetadataLegacySerialClient(JoyentMetadataSerialClient):
val = base64.b64decode(val.encode()).decode()
# Bogus input produces different errors in Python 2 and 3
except (TypeError, binascii.Error):
- LOG.warn("Failed base64 decoding key '%s': %s", key, val)
+ LOG.warning("Failed base64 decoding key '%s': %s", key, val)
if strip:
val = val.strip()
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index 5c99437e..c3ce36d6 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -237,8 +237,8 @@ class DataSource(object):
if candidate in valid:
return candidate
else:
- LOG.warn("invalid dsmode '%s', using default=%s",
- candidate, default)
+ LOG.warning("invalid dsmode '%s', using default=%s",
+ candidate, default)
return default
return default
diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py
index f32dac9a..6e01aa47 100644
--- a/cloudinit/sources/helpers/azure.py
+++ b/cloudinit/sources/helpers/azure.py
@@ -289,7 +289,7 @@ class WALinuxAgentShim(object):
LOG.debug("Unable to find endpoint in dhclient logs. "
" Falling back to check lease files")
if fallback_lease_file is None:
- LOG.warn("No fallback lease file was specified.")
+ LOG.warning("No fallback lease file was specified.")
value = None
else:
LOG.debug("Looking for endpoint in lease file %s",
diff --git a/cloudinit/sources/helpers/vmware/imc/config_file.py b/cloudinit/sources/helpers/vmware/imc/config_file.py
index 14293f3c..602af078 100644
--- a/cloudinit/sources/helpers/vmware/imc/config_file.py
+++ b/cloudinit/sources/helpers/vmware/imc/config_file.py
@@ -43,9 +43,9 @@ class ConfigFile(ConfigSource, dict):
# "sensitive" settings shall not be logged
if canLog:
- logger.debug("ADDED KEY-VAL :: '%s' = '%s'" % (key, val))
+ logger.debug("ADDED KEY-VAL :: '%s' = '%s'", key, val)
else:
- logger.debug("ADDED KEY-VAL :: '%s' = '*****************'" % key)
+ logger.debug("ADDED KEY-VAL :: '%s' = '*****************'", key)
self[key] = val
@@ -60,7 +60,7 @@ class ConfigFile(ConfigSource, dict):
Keyword arguments:
filename - The full path to the config file.
"""
- logger.info('Parsing the config file %s.' % filename)
+ logger.info('Parsing the config file %s.', filename)
config = configparser.ConfigParser()
config.optionxform = str
@@ -69,7 +69,7 @@ class ConfigFile(ConfigSource, dict):
self.clear()
for category in config.sections():
- logger.debug("FOUND CATEGORY = '%s'" % category)
+ logger.debug("FOUND CATEGORY = '%s'", category)
for (key, value) in config.items(category):
self._insertKey(category + '|' + key, value)
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index 12165433..f7191b09 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -163,8 +163,8 @@ class Init(object):
except OSError as e:
error = e
- LOG.warn("Failed changing perms on '%s'. tried: %s. %s",
- log_file, ','.join(perms), error)
+ LOG.warning("Failed changing perms on '%s'. tried: %s. %s",
+ log_file, ','.join(perms), error)
def read_cfg(self, extra_fns=None):
# None check so that we don't keep on re-loading if empty
@@ -447,9 +447,9 @@ class Init(object):
mod_locs, looked_locs = importer.find_module(
mod_name, [''], ['list_types', 'handle_part'])
if not mod_locs:
- LOG.warn("Could not find a valid user-data handler"
- " named %s in file %s (searched %s)",
- mod_name, fname, looked_locs)
+ LOG.warning("Could not find a valid user-data handler"
+ " named %s in file %s (searched %s)",
+ mod_name, fname, looked_locs)
continue
mod = importer.import_module(mod_locs[0])
mod = handlers.fixup_handler(mod)
@@ -568,7 +568,8 @@ class Init(object):
if not isinstance(vdcfg, dict):
vdcfg = {'enabled': False}
- LOG.warn("invalid 'vendor_data' setting. resetting to: %s", vdcfg)
+ LOG.warning("invalid 'vendor_data' setting. resetting to: %s",
+ vdcfg)
enabled = vdcfg.get('enabled')
no_handlers = vdcfg.get('disabled_handlers', None)
@@ -632,10 +633,10 @@ class Init(object):
return
try:
- LOG.debug("applying net config names for %s" % netcfg)
+ LOG.debug("applying net config names for %s", netcfg)
self.distro.apply_network_config_names(netcfg)
except Exception as e:
- LOG.warn("Failed to rename devices: %s", e)
+ LOG.warning("Failed to rename devices: %s", e)
if (self.datasource is not NULL_DATA_SOURCE and
not self.is_new_instance()):
@@ -651,9 +652,9 @@ class Init(object):
"likely broken: %s", e)
return
except NotImplementedError:
- LOG.warn("distro '%s' does not implement apply_network_config. "
- "networking may not be configured properly.",
- self.distro)
+ LOG.warning("distro '%s' does not implement apply_network_config. "
+ "networking may not be configured properly.",
+ self.distro)
return
@@ -737,15 +738,15 @@ class Modules(object):
if not mod_name:
continue
if freq and freq not in FREQUENCIES:
- LOG.warn(("Config specified module %s"
- " has an unknown frequency %s"), raw_name, freq)
+ LOG.warning(("Config specified module %s"
+ " has an unknown frequency %s"), raw_name, freq)
# Reset it so when ran it will get set to a known value
freq = None
mod_locs, looked_locs = importer.find_module(
mod_name, ['', type_utils.obj_name(config)], ['handle'])
if not mod_locs:
- LOG.warn("Could not find module named %s (searched %s)",
- mod_name, looked_locs)
+ LOG.warning("Could not find module named %s (searched %s)",
+ mod_name, looked_locs)
continue
mod = config.fixup_module(importer.import_module(mod_locs[0]))
mostly_mods.append([mod, raw_name, freq, run_args])
@@ -877,7 +878,7 @@ def _pkl_load(fname):
pickle_contents = util.load_file(fname, decode=False)
except Exception as e:
if os.path.isfile(fname):
- LOG.warn("failed loading pickle in %s: %s" % (fname, e))
+ LOG.warning("failed loading pickle in %s: %s", fname, e)
pass
# This is allowed so just return nothing successfully loaded...
diff --git a/cloudinit/templater.py b/cloudinit/templater.py
index 648cd218..b3ea64e4 100644
--- a/cloudinit/templater.py
+++ b/cloudinit/templater.py
@@ -103,14 +103,14 @@ def detect_template(text):
raise ValueError("Unknown template rendering type '%s' requested"
% template_type)
if template_type == 'jinja' and not JINJA_AVAILABLE:
- LOG.warn("Jinja not available as the selected renderer for"
- " desired template, reverting to the basic renderer.")
+ LOG.warning("Jinja not available as the selected renderer for"
+ " desired template, reverting to the basic renderer.")
return ('basic', basic_render, rest)
elif template_type == 'jinja' and JINJA_AVAILABLE:
return ('jinja', jinja_render, rest)
if template_type == 'cheetah' and not CHEETAH_AVAILABLE:
- LOG.warn("Cheetah not available as the selected renderer for"
- " desired template, reverting to the basic renderer.")
+ LOG.warning("Cheetah not available as the selected renderer for"
+ " desired template, reverting to the basic renderer.")
return ('basic', basic_render, rest)
elif template_type == 'cheetah' and CHEETAH_AVAILABLE:
return ('cheetah', cheetah_render, rest)
diff --git a/cloudinit/url_helper.py b/cloudinit/url_helper.py
index 2f6a158e..d2b92e6a 100644
--- a/cloudinit/url_helper.py
+++ b/cloudinit/url_helper.py
@@ -155,8 +155,8 @@ def _get_ssl_args(url, ssl_details):
scheme = urlparse(url).scheme
if scheme == 'https' and ssl_details:
if not SSL_ENABLED:
- LOG.warn("SSL is not supported in requests v%s, "
- "cert. verification can not occur!", _REQ_VER)
+ LOG.warning("SSL is not supported in requests v%s, "
+ "cert. verification can not occur!", _REQ_VER)
else:
if 'ca_certs' in ssl_details and ssl_details['ca_certs']:
ssl_args['verify'] = ssl_details['ca_certs']
@@ -415,14 +415,15 @@ class OauthUrlHelper(object):
return
if 'date' not in exception.headers:
- LOG.warn("Missing header 'date' in %s response", exception.code)
+ LOG.warning("Missing header 'date' in %s response",
+ exception.code)
return
date = exception.headers['date']
try:
remote_time = time.mktime(parsedate(date))
except Exception as e:
- LOG.warn("Failed to convert datetime '%s': %s", date, e)
+ LOG.warning("Failed to convert datetime '%s': %s", date, e)
return
skew = int(remote_time - time.time())
@@ -430,7 +431,7 @@ class OauthUrlHelper(object):
old_skew = self.skew_data.get(host, 0)
if abs(old_skew - skew) > self.skew_change_limit:
self.update_skew_file(host, skew)
- LOG.warn("Setting oauth clockskew for %s to %d", host, skew)
+ LOG.warning("Setting oauth clockskew for %s to %d", host, skew)
self.skew_data[host] = skew
return
diff --git a/cloudinit/user_data.py b/cloudinit/user_data.py
index cfe5aa2f..88cb7f84 100644
--- a/cloudinit/user_data.py
+++ b/cloudinit/user_data.py
@@ -109,8 +109,9 @@ class UserDataProcessor(object):
ctype_orig = None
was_compressed = True
except util.DecompressionError as e:
- LOG.warn("Failed decompressing payload from %s of length"
- " %s due to: %s", ctype_orig, len(payload), e)
+ LOG.warning("Failed decompressing payload from %s of"
+ " length %s due to: %s",
+ ctype_orig, len(payload), e)
continue
# Attempt to figure out the payloads content-type
@@ -228,9 +229,9 @@ class UserDataProcessor(object):
if resp.ok():
content = resp.contents
else:
- LOG.warn(("Fetching from %s resulted in"
- " a invalid http code of %s"),
- include_url, resp.code)
+ LOG.warning(("Fetching from %s resulted in"
+ " a invalid http code of %s"),
+ include_url, resp.code)
if content is not None:
new_msg = convert_string(content)
diff --git a/cloudinit/util.py b/cloudinit/util.py
index 6940850c..bfddca67 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -96,11 +96,11 @@ def _lsb_release(target=None):
data[fmap[fname]] = val.strip()
missing = [k for k in fmap.values() if k not in data]
if len(missing):
- LOG.warn("Missing fields in lsb_release --all output: %s",
- ','.join(missing))
+ LOG.warning("Missing fields in lsb_release --all output: %s",
+ ','.join(missing))
except ProcessExecutionError as err:
- LOG.warn("Unable to get lsb_release --all: %s", err)
+ LOG.warning("Unable to get lsb_release --all: %s", err)
data = dict((v, "UNAVAILABLE") for v in fmap.values())
return data
@@ -590,7 +590,7 @@ def system_info():
'release': platform.release(),
'python': platform.python_version(),
'uname': platform.uname(),
- 'dist': platform.linux_distribution(),
+ 'dist': platform.linux_distribution(), # pylint: disable=W1505
}
@@ -865,7 +865,7 @@ def read_file_or_url(url, timeout=5, retries=10,
url = "file://%s" % url
if url.lower().startswith("file://"):
if data:
- LOG.warn("Unable to post data to file resource %s", url)
+ LOG.warning("Unable to post data to file resource %s", url)
file_path = url[len("file://"):]
try:
contents = load_file(file_path, decode=False)
@@ -1279,7 +1279,7 @@ def get_cmdline():
# replace nulls with space and drop trailing null
cmdline = contents.replace("\x00", " ")[:-1]
except Exception as e:
- LOG.warn("failed reading /proc/1/cmdline: %s", e)
+ LOG.warning("failed reading /proc/1/cmdline: %s", e)
cmdline = ""
else:
try:
@@ -1400,7 +1400,7 @@ def logexc(log, msg, *args):
# or even desirable to have that much junk
# coming out to a non-debug stream
if msg:
- log.warn(msg, *args)
+ log.warning(msg, *args)
# Debug gets the full trace. However, nose has a bug whereby its
# logcapture plugin doesn't properly handle the case where there is no
# actual exception. To avoid tracebacks during the test suite then, we'll
@@ -2344,8 +2344,8 @@ def read_dmi_data(key):
if dmidecode_path:
return _call_dmidecode(key, dmidecode_path)
- LOG.warn("did not find either path %s or dmidecode command",
- DMI_SYS_PATH)
+ LOG.warning("did not find either path %s or dmidecode command",
+ DMI_SYS_PATH)
return None
diff --git a/cloudinit/warnings.py b/cloudinit/warnings.py
index 3206d4e9..f9f7a63c 100644
--- a/cloudinit/warnings.py
+++ b/cloudinit/warnings.py
@@ -130,10 +130,10 @@ def show_warning(name, cfg=None, sleep=None, mode=True, **kwargs):
os.path.join(_get_warn_dir(cfg), name),
topline + "\n".join(fmtlines) + "\n" + topline)
- LOG.warn(topline + "\n".join(fmtlines) + "\n" + closeline)
+ LOG.warning(topline + "\n".join(fmtlines) + "\n" + closeline)
if sleep:
- LOG.debug("sleeping %d seconds for warning '%s'" % (sleep, name))
+ LOG.debug("sleeping %d seconds for warning '%s'", sleep, name)
time.sleep(sleep)
# vi: ts=4 expandtab
diff --git a/tests/cloud_tests/__main__.py b/tests/cloud_tests/__main__.py
index ef7d1878..ed654ad3 100644
--- a/tests/cloud_tests/__main__.py
+++ b/tests/cloud_tests/__main__.py
@@ -38,7 +38,7 @@ def run(args):
finally:
# TODO: make this configurable via environ or cmdline
if failed:
- LOG.warn('some tests failed, leaving data in %s', args.data_dir)
+ LOG.warning('some tests failed, leaving data in %s', args.data_dir)
else:
shutil.rmtree(args.data_dir)
return failed
diff --git a/tests/cloud_tests/args.py b/tests/cloud_tests/args.py
index b68cc98e..371b0444 100644
--- a/tests/cloud_tests/args.py
+++ b/tests/cloud_tests/args.py
@@ -94,7 +94,7 @@ def normalize_create_args(args):
if os.path.exists(config.name_to_path(args.name)):
msg = 'test: {} already exists'.format(args.name)
if args.force:
- LOG.warn('%s but ignoring due to --force', msg)
+ LOG.warning('%s but ignoring due to --force', msg)
else:
LOG.error(msg)
return None
diff --git a/tests/cloud_tests/collect.py b/tests/cloud_tests/collect.py
index 68b47d7a..02fc0e52 100644
--- a/tests/cloud_tests/collect.py
+++ b/tests/cloud_tests/collect.py
@@ -45,7 +45,7 @@ def collect_test_data(args, snapshot, os_name, test_name):
# if test is not enabled, skip and return 0 failures
if not test_config.get('enabled', False):
- LOG.warn('test config %s is not enabled, skipping', test_name)
+ LOG.warning('test config %s is not enabled, skipping', test_name)
return ({}, 0)
# create test instance
diff --git a/tests/cloud_tests/verify.py b/tests/cloud_tests/verify.py
index ef7d4e21..2a63550e 100644
--- a/tests/cloud_tests/verify.py
+++ b/tests/cloud_tests/verify.py
@@ -45,9 +45,9 @@ def verify_data(base_dir, tests):
}
for failure in res[test_name]['failures']:
- LOG.warn('test case: %s failed %s.%s with: %s',
- test_name, failure['class'], failure['function'],
- failure['error'])
+ LOG.warning('test case: %s failed %s.%s with: %s',
+ test_name, failure['class'], failure['function'],
+ failure['error'])
return res
@@ -80,7 +80,8 @@ def verify(args):
if len(fail_list) == 0:
LOG.info('test: %s passed all tests', test_name)
else:
- LOG.warn('test: %s failed %s tests', test_name, len(fail_list))
+ LOG.warning('test: %s failed %s tests', test_name,
+ len(fail_list))
failed += len(fail_list)
# dump results
diff --git a/tools/mock-meta.py b/tools/mock-meta.py
index 95fc4659..82816e8a 100755
--- a/tools/mock-meta.py
+++ b/tools/mock-meta.py
@@ -293,9 +293,9 @@ class MetaDataHandler(object):
else:
return "%s" % (PLACEMENT_CAPABILITIES.get(pentry, ''))
else:
- log.warn(("Did not implement action %s, "
- "returning empty response: %r"),
- action, NOT_IMPL_RESPONSE)
+ log.warning(("Did not implement action %s, "
+ "returning empty response: %r"),
+ action, NOT_IMPL_RESPONSE)
return NOT_IMPL_RESPONSE