|
Packit |
bc9a3a |
# This file is part of cloud-init. See LICENSE file for license information.
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
from cloudinit import helpers
|
|
Packit |
bc9a3a |
from cloudinit import log as logging
|
|
Packit |
bc9a3a |
from cloudinit import util
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
import os
|
|
Packit |
bc9a3a |
import time
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
LOG = logging.getLogger()
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
WARNINGS = {
|
|
Packit |
bc9a3a |
'non_ec2_md': """
|
|
Packit |
bc9a3a |
This system is using the EC2 Metadata Service, but does not appear to
|
|
Packit |
bc9a3a |
be running on Amazon EC2 or one of cloud-init's known platforms that
|
|
Packit |
bc9a3a |
provide a EC2 Metadata service. In the future, cloud-init may stop
|
|
Packit |
bc9a3a |
reading metadata from the EC2 Metadata Service unless the platform can
|
|
Packit |
bc9a3a |
be identified.
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
If you are seeing this message, please file a bug against
|
|
Packit |
bc9a3a |
cloud-init at
|
|
Packit |
bc9a3a |
https://bugs.launchpad.net/cloud-init/+filebug?field.tags=dsid
|
|
Packit |
bc9a3a |
Make sure to include the cloud provider your instance is
|
|
Packit |
bc9a3a |
running on.
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
For more information see
|
|
Packit |
bc9a3a |
https://bugs.launchpad.net/bugs/1660385
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
After you have filed a bug, you can disable this warning by
|
|
Packit |
bc9a3a |
launching your instance with the cloud-config below, or
|
|
Packit |
bc9a3a |
putting that content into
|
|
Packit |
bc9a3a |
/etc/cloud/cloud.cfg.d/99-ec2-datasource.cfg
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
#cloud-config
|
|
Packit |
bc9a3a |
datasource:
|
|
Packit |
bc9a3a |
Ec2:
|
|
Packit |
bc9a3a |
strict_id: false""",
|
|
Packit |
bc9a3a |
'dsid_missing_source': """
|
|
Packit |
bc9a3a |
A new feature in cloud-init identified possible datasources for
|
|
Packit |
bc9a3a |
this system as:
|
|
Packit |
bc9a3a |
{dslist}
|
|
Packit |
bc9a3a |
However, the datasource used was: {source}
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
In the future, cloud-init will only attempt to use datasources that
|
|
Packit |
bc9a3a |
are identified or specifically configured.
|
|
Packit |
bc9a3a |
For more information see
|
|
Packit |
bc9a3a |
https://bugs.launchpad.net/bugs/1669675
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
If you are seeing this message, please file a bug against
|
|
Packit |
bc9a3a |
cloud-init at
|
|
Packit |
bc9a3a |
https://bugs.launchpad.net/cloud-init/+filebug?field.tags=dsid
|
|
Packit |
bc9a3a |
Make sure to include the cloud provider your instance is
|
|
Packit |
bc9a3a |
running on.
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
After you have filed a bug, you can disable this warning by launching
|
|
Packit |
bc9a3a |
your instance with the cloud-config below, or putting that content
|
|
Packit |
bc9a3a |
into /etc/cloud/cloud.cfg.d/99-warnings.cfg
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
#cloud-config
|
|
Packit |
bc9a3a |
warnings:
|
|
Packit |
bc9a3a |
dsid_missing_source: off""",
|
|
Packit |
bc9a3a |
}
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
def _get_warn_dir(cfg):
|
|
Packit |
bc9a3a |
paths = helpers.Paths(
|
|
Packit |
bc9a3a |
path_cfgs=cfg.get('system_info', {}).get('paths', {}))
|
|
Packit |
bc9a3a |
return paths.get_ipath_cur('warnings')
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
def _load_warn_cfg(cfg, name, mode=True, sleep=None):
|
|
Packit |
bc9a3a |
# parse cfg['warnings']['name'] returning boolean, sleep
|
|
Packit |
bc9a3a |
# expected value is form of:
|
|
Packit |
bc9a3a |
# (on|off|true|false|sleep)[,sleeptime]
|
|
Packit |
bc9a3a |
# boolean True == on, False == off
|
|
Packit |
bc9a3a |
default = (mode, sleep)
|
|
Packit |
bc9a3a |
if not cfg or not isinstance(cfg, dict):
|
|
Packit |
bc9a3a |
return default
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
ncfg = util.get_cfg_by_path(cfg, ('warnings', name))
|
|
Packit |
bc9a3a |
if ncfg is None:
|
|
Packit |
bc9a3a |
return default
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
if ncfg in ("on", "true", True):
|
|
Packit |
bc9a3a |
return True, None
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
if ncfg in ("off", "false", False):
|
|
Packit |
bc9a3a |
return False, None
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
mode, _, csleep = ncfg.partition(",")
|
|
Packit |
bc9a3a |
if mode != "sleep":
|
|
Packit |
bc9a3a |
return default
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
if csleep:
|
|
Packit |
bc9a3a |
try:
|
|
Packit |
bc9a3a |
sleep = int(csleep)
|
|
Packit |
bc9a3a |
except ValueError:
|
|
Packit |
bc9a3a |
return default
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
return True, sleep
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
def show_warning(name, cfg=None, sleep=None, mode=True, **kwargs):
|
|
Packit |
bc9a3a |
# kwargs are used for .format of the message.
|
|
Packit |
bc9a3a |
# sleep and mode are default values used if
|
|
Packit |
bc9a3a |
# cfg['warnings']['name'] is not present.
|
|
Packit |
bc9a3a |
if cfg is None:
|
|
Packit |
bc9a3a |
cfg = {}
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
mode, sleep = _load_warn_cfg(cfg, name, mode=mode, sleep=sleep)
|
|
Packit |
bc9a3a |
if not mode:
|
|
Packit |
bc9a3a |
return
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
msg = WARNINGS[name].format(**kwargs)
|
|
Packit |
bc9a3a |
msgwidth = 70
|
|
Packit |
bc9a3a |
linewidth = msgwidth + 4
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
fmt = "# %%-%ds #" % msgwidth
|
|
Packit |
bc9a3a |
topline = "*" * linewidth + "\n"
|
|
Packit |
bc9a3a |
fmtlines = []
|
|
Packit |
bc9a3a |
for line in msg.strip("\n").splitlines():
|
|
Packit |
bc9a3a |
fmtlines.append(fmt % line)
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
closeline = topline
|
|
Packit |
bc9a3a |
if sleep:
|
|
Packit |
bc9a3a |
sleepmsg = " [sleeping for %d seconds] " % sleep
|
|
Packit |
bc9a3a |
closeline = sleepmsg.center(linewidth, "*") + "\n"
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
util.write_file(
|
|
Packit |
bc9a3a |
os.path.join(_get_warn_dir(cfg), name),
|
|
Packit |
bc9a3a |
topline + "\n".join(fmtlines) + "\n" + topline)
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
LOG.warning("%s%s\n%s", topline, "\n".join(fmtlines), closeline)
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
if sleep:
|
|
Packit |
bc9a3a |
LOG.debug("sleeping %d seconds for warning '%s'", sleep, name)
|
|
Packit |
bc9a3a |
time.sleep(sleep)
|
|
Packit |
bc9a3a |
|
|
Packit |
bc9a3a |
# vi: ts=4 expandtab
|