PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`# 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)