PHP 7.4.33
Preview: warnings.py Size: 3.76 KB
/lib/python3/dist-packages/cloudinit/warnings.py
# This file is part of cloud-init. See LICENSE file for license information.
import logging
import os
import time

from cloudinit import helpers, util

LOG = logging.getLogger(__name__)

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://github.com/canonical/cloud-init/issues
Make sure to include the cloud provider your instance is
running on.

For more information see
  https://github.com/canonical/cloud-init/issues/2795

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.
For more information see
  https://bugs.launchpad.net/bugs/1669675

If you are seeing this message, please file a bug against
cloud-init at
   https://github.com/canonical/cloud-init/issues
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.warning("%s%s\n%s", topline, "\n".join(fmtlines), closeline)

    if sleep:
        LOG.debug("sleeping %d seconds for warning '%s'", sleep, name)
        time.sleep(sleep)

Directory Contents

Dirs: 12 × Files: 31
Name Size Perms Modified Actions
analyze DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
cmd DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
config DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
distros DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
filters DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
handlers DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
log DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
mergers DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
net DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
reporting DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
sources DIR
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
- drwxr-xr-x 2025-08-01 06:35:22
Edit Download
8.30 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.79 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
3.22 KB lrw-r--r-- 2025-06-24 21:15:25
Edit Download
7.81 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.00 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
5.28 KB lrw-r--r-- 2025-06-24 21:15:25
Edit Download
7.99 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
16.16 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.43 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
7.79 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
24.07 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
3.10 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.52 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
1022 B lrw-r--r-- 2025-06-24 20:50:00
Edit Download
10.11 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.12 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
3.92 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
1.93 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
5.93 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
22.21 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
41.53 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
12.43 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
7.74 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
2.94 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
703 B lrw-r--r-- 2025-06-24 20:50:00
Edit Download
38.15 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
14.44 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
90.38 KB lrw-r--r-- 2025-06-24 21:15:25
Edit Download
568 B lrw-r--r-- 2025-06-24 21:15:25
Edit Download
3.76 KB lrw-r--r-- 2025-06-24 20:50:00
Edit Download
0 B lrw-r--r-- 2025-06-24 20:50:00
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).