cloud-init-dev team mailing list archive
-
cloud-init-dev team
-
Mailing list archive
-
Message #01621
Re: [Merge] ~smoser/cloud-init:feature/login-warn into cloud-init:master
fix "create add support" -> "add support" in the above message (or at least fix in commit message).
Two comments below; generally looks good.
Diff comments:
> diff --git a/cloudinit/warnings.py b/cloudinit/warnings.py
> new file mode 100644
> index 0000000..a21794f
> --- /dev/null
> +++ b/cloudinit/warnings.py
> @@ -0,0 +1,136 @@
> +# This file is part of cloud-init. See LICENSE file for license information.
Copyright header missing
> +
> +from cloudinit import helpers
> +from cloudinit import log as logging
> +from cloudinit import util
> +
> +import os
> +import time
> +
> +LOG = logging.getLogger()
> +
> +WARNINGS = {
> + 'non_ec2_md': """
> +This system is using the EC2 Metadata Service, but does not appear to
> +be running on Amazon EC2 or one of cloud-init's known platforms that
> +provide a EC2 Metadata service. In the future, cloud-init may stop
> +reading metadata from the EC2 Metadata Service unless the platform can
> +be identified.
> +
> +If you are seeing this message, please file a bug against
> +cloud-init at
> + https://bugs.launchpad.net/cloud-init/+filebug?field.tags=dsid
> +Make sure to include the cloud provider your instance is
> +running on.
> +
> +For more information see
> + https://bugs.launchpad.net/cloud-init/+bug/1660385
> +
> +After you have filed a bug, you can disable this warning by
> +launching your instance with the cloud-config below, or
> +putting that content into
> + /etc/cloud/cloud.cfg.d/99-ec2-datasource.cfg
> +
> +#cloud-config
> +datasource:
> + Ec2:
> + strict_id: false""",
> + 'dsid_missing_source': """
> +A new feature in cloud-init identified possible datasources for
> +this system as:
> + {dslist}
> +However, the datasource used was: {source}
> +
> +In the future, cloud-init will only attempt to use datasources that
> +are identified or specifically configured.
> +
> +If you are seeing this message, please file a bug against
> +cloud-init at
> + https://bugs.launchpad.net/cloud-init/+filebug?field.tags=dsid
> +Make sure to include the cloud provider your instance is
> +running on.
> +
> +After you have filed a bug, you can disable this warning by launching
> +your instance with the cloud-config below, or putting that content
> +into /etc/cloud/cloud.cfg.d/99-warnings.cfg
> +
> +#cloud-config
> +warnings:
> + dsid_missing_source: off""",
> +}
> +
> +
> +def _get_warn_dir(cfg):
> + paths = helpers.Paths(
> + path_cfgs=cfg.get('system_info', {}).get('paths', {}))
> + return paths.get_ipath_cur('warnings')
> +
> +
> +def _load_warn_cfg(cfg, name, mode=True, sleep=None):
> + # parse cfg['warnings']['name'] returning boolean, sleep
> + # expected value is form of:
> + # (on|off|true|false|sleep)[,sleeptime]
> + # boolean True == on, False == off
> + default = (mode, sleep)
> + if not cfg or not isinstance(cfg, dict):
> + return default
> +
> + ncfg = util.get_cfg_by_path(cfg, ('warnings', name))
> + if ncfg is None:
> + return default
> +
> + if ncfg in ("on", "true", True):
> + return True, None
> +
> + if ncfg in ("off", "false", False):
> + return False, None
> +
> + mode, _, csleep = ncfg.partition(",")
> + if mode != "sleep":
> + return default
> +
> + if csleep:
> + try:
> + sleep = int(csleep)
> + except ValueError:
> + return default
> +
> + return True, sleep
> +
> +
> +def show_warning(name, cfg=None, sleep=None, mode=True, **kwargs):
> + # kwargs are used for .format of the message.
> + # sleep and mode are default values used if
> + # cfg['warnings']['name'] is not present.
> + if cfg is None:
> + cfg = {}
> +
> + mode, sleep = _load_warn_cfg(cfg, name, mode=mode, sleep=sleep)
> + if not mode:
> + return
> +
> + msg = WARNINGS[name].format(**kwargs)
> + msgwidth = 70
> + linewidth = msgwidth + 4
> +
> + fmt = "# %%-%ds #" % msgwidth
> + topline = "*" * linewidth + "\n"
> + fmtlines = []
> + for line in msg.strip("\n").splitlines():
> + fmtlines.append(fmt % line)
> +
> + closeline = topline
> + if sleep:
> + sleepmsg = " [sleeping for %d seconds] " % sleep
> + closeline = sleepmsg.center(linewidth, "*") + "\n"
> +
> + util.write_file(
> + os.path.join(_get_warn_dir(cfg), name),
> + topline + "\n".join(fmtlines) + "\n" + topline)
> +
> + LOG.warn(topline + "\n".join(fmtlines) + "\n" + closeline)
> +
> + if sleep:
> + time.sleep(sleep)
I'd LOG.debug that you're sleeping for how long; for log watchers, they'll know cloud-init is sleeping.
> +
> +# vi: ts=4 expandtab
--
https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/318844
Your team cloud init development team is requested to review the proposed merge of ~smoser/cloud-init:feature/login-warn into cloud-init:master.
References