def capture_log(self, lvl=logging.DEBUG): log_file = StringIO() self._log_handler = logging.StreamHandler(log_file) self._log_handler.setLevel(lvl) self._log = log.getLogger() self._log.addHandler(self._log_handler) return log_file
from time import time import contextlib import io import os from ConfigParser import (NoSectionError, NoOptionError, RawConfigParser) from cloudinit.settings import (PER_INSTANCE, PER_ALWAYS, PER_ONCE, CFG_ENV_NAME) from cloudinit import log as logging from cloudinit import type_utils from cloudinit import util LOG = logging.getLogger(__name__) class LockFailure(Exception): pass class DummyLock(object): pass class DummySemaphores(object): def __init__(self): pass @contextlib.contextmanager
def publish_event(self, event): logger = logging.getLogger( '.'.join(['cloudinit', 'reporting', event.event_type, event.name])) logger.log(self.level, event.as_string())
# Things u can query on QUERY_DATA_TYPES = [ 'data', 'data_raw', 'instance_id', ] # Frequency shortname to full name # (so users don't have to remember the full name...) FREQ_SHORT_NAMES = { 'instance': PER_INSTANCE, 'always': PER_ALWAYS, 'once': PER_ONCE, } LOG = logging.getLogger() # Used for when a logger may not be active # and we still want to print exceptions... def print_exc(msg=''): if msg: sys.stderr.write("%s\n" % (msg)) sys.stderr.write('-' * 60) sys.stderr.write("\n") traceback.print_exc(file=sys.stderr) sys.stderr.write('-' * 60) sys.stderr.write("\n") def welcome(action, msg=None):
# This file is part of cloud-init. See LICENSE file for license information. """Debug jinja template rendering of user-data.""" import argparse import os import sys from cloudinit.handlers.jinja_template import render_jinja_payload_from_file from cloudinit import log from cloudinit.sources import INSTANCE_JSON_FILE, INSTANCE_JSON_SENSITIVE_FILE from . import addLogHandlerCLI, read_cfg_paths NAME = 'render' LOG = log.getLogger(NAME) def get_parser(parser=None): """Build or extend and arg parser for jinja render utility. @param parser: Optional existing ArgumentParser instance representing the subcommand which will be extended to support the args of this utility. @returns: ArgumentParser with proper argument configuration. """ if not parser: parser = argparse.ArgumentParser(prog=NAME, description=__doc__) parser.add_argument( 'user_data', type=str, help='Path to the user-data file to render') parser.add_argument(
"frequency": PER_INSTANCE, "examples": [], } # This module is undocumented in our schema docs __doc__ = "" # RMCCTRL is expected to be in system PATH (/opt/rsct/bin) # The symlink for RMCCTRL and RECFGCT are # /usr/sbin/rsct/bin/rmcctrl and # /usr/sbin/rsct/install/bin/recfgct respectively. RSCT_PATH = "/opt/rsct/install/bin" RMCCTRL = "rmcctrl" RECFGCT = "recfgct" LOG = logging.getLogger(__name__) NODE_ID_FILE = "/etc/ct_node_id" def handle(name, _cfg, cloud, _log, _args): # Ensuring node id has to be generated only once during first boot if cloud.datasource.platform_type == "none": LOG.debug("Skipping creation of new ct_node_id node") return if not os.path.isdir(RSCT_PATH): LOG.debug("module disabled, RSCT_PATH not present") return orig_path = os.environ.get("PATH")
# Welcome message template WELCOME_MSG_TPL = ("Cloud-init v. {version} running '{action}' at " "{timestamp}. Up {uptime} seconds.") # Module section template MOD_SECTION_TPL = "cloud_%s_modules" # Frequency shortname to full name # (so users don't have to remember the full name...) FREQ_SHORT_NAMES = { "instance": PER_INSTANCE, "always": PER_ALWAYS, "once": PER_ONCE, } LOG = logging.getLogger() # Used for when a logger may not be active # and we still want to print exceptions... def print_exc(msg=""): if msg: sys.stderr.write("%s\n" % (msg)) sys.stderr.write("-" * 60) sys.stderr.write("\n") traceback.print_exc(file=sys.stderr) sys.stderr.write("-" * 60) sys.stderr.write("\n") def welcome(action, msg=None):
# This file is part of cloud-init. See LICENSE file for license information. """Debug jinja template rendering of user-data.""" import argparse import os import sys from cloudinit import log from cloudinit.handlers.jinja_template import render_jinja_payload_from_file from cloudinit.sources import INSTANCE_JSON_FILE, INSTANCE_JSON_SENSITIVE_FILE from . import addLogHandlerCLI, read_cfg_paths NAME = "render" LOG = log.getLogger(NAME) def get_parser(parser=None): """Build or extend and arg parser for jinja render utility. @param parser: Optional existing ArgumentParser instance representing the subcommand which will be extended to support the args of this utility. @returns: ArgumentParser with proper argument configuration. """ if not parser: parser = argparse.ArgumentParser(prog=NAME, description=__doc__) parser.add_argument("user_data", type=str, help="Path to the user-data file to render")
def publish_event(self, event): logger = logging.getLogger('.'.join( ['cloudinit', 'reporting', event.event_type, event.name])) logger.log(self.level, event.as_string())