Example #1
0
 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
Example #2
0
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
Example #3
0
 def publish_event(self, event):
     logger = logging.getLogger(
         '.'.join(['cloudinit', 'reporting', event.event_type, event.name]))
     logger.log(self.level, event.as_string())
Example #4
0
# 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):
Example #5
0
# 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(
Example #6
0
    "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")
Example #7
0
# 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):
Example #8
0
# 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")
Example #9
0
 def publish_event(self, event):
     logger = logging.getLogger('.'.join(
         ['cloudinit', 'reporting', event.event_type, event.name]))
     logger.log(self.level, event.as_string())