Blame tools/ccfg-merge-debug

Packit Service 751c4a
#!/usr/bin/env python3
Packit Service a04d08
Packit Service a04d08
from cloudinit import handlers
Packit Service a04d08
from cloudinit.handlers import cloud_config as cc_part
Packit Service a04d08
from cloudinit import helpers
Packit Service a04d08
from cloudinit import log as logging
Packit Service a04d08
from cloudinit.settings import PER_INSTANCE
Packit Service a04d08
from cloudinit import user_data as ud
Packit Service a04d08
Packit Service a04d08
import argparse
Packit Service a04d08
import os
Packit Service a04d08
import shutil
Packit Service a04d08
import tempfile
Packit Service a04d08
Packit Service a04d08
Packit Service a04d08
def main():
Packit Service a04d08
    parser = argparse.ArgumentParser(
Packit Service a04d08
        description='test cloud-config merging')
Packit Service a04d08
    parser.add_argument("--output", "-o", metavar="file",
Packit Service a04d08
        help="specify output file", default="-")
Packit Service a04d08
    parser.add_argument('--verbose', '-v', action='count', default=0)
Packit Service a04d08
    parser.add_argument('files', nargs='+')
Packit Service a04d08
Packit Service a04d08
    args = parser.parse_args()
Packit Service a04d08
Packit Service a04d08
    if args.verbose:
Packit Service a04d08
        level = (logging.WARN, logging.INFO,
Packit Service a04d08
                 logging.DEBUG)[min(args.verbose, 2)]
Packit Service a04d08
        logging.setupBasicLogging(level)
Packit Service a04d08
Packit Service a04d08
    outfile = args.output
Packit Service a04d08
    if args.output == "-":
Packit Service a04d08
        outfile = "/dev/stdout"
Packit Service a04d08
Packit Service a04d08
    tempd = tempfile.mkdtemp()
Packit Service a04d08
    handler_dir = os.path.join(tempd, "hdir")
Packit Service a04d08
    data = None  # the 'init' object
Packit Service a04d08
    frequency = PER_INSTANCE
Packit Service a04d08
Packit Service a04d08
    paths = helpers.Paths({})
Packit Service a04d08
Packit Service a04d08
    # make a '#include <f1>' style
Packit Service a04d08
    udproc = ud.UserDataProcessor(paths=paths)
Packit Service a04d08
    user_data_msg = udproc.process("#include\n" +
Packit Service a04d08
      '\n'.join([os.path.abspath(f) for f in args.files]))
Packit Service a04d08
Packit Service a04d08
    ccph = cc_part.CloudConfigPartHandler(paths=paths)
Packit Service a04d08
    ccph.cloud_fn = outfile
Packit Service a04d08
Packit Service a04d08
    c_handlers = helpers.ContentHandlers()
Packit Service a04d08
    c_handlers.register(ccph)
Packit Service a04d08
Packit Service a04d08
    called = []
Packit Service a04d08
    for (_ctype, mod) in c_handlers.items():
Packit Service a04d08
        if mod in called:
Packit Service a04d08
            continue
Packit Service a04d08
        handlers.call_begin(mod, data, frequency)
Packit Service a04d08
        called.append(mod)
Packit Service a04d08
Packit Service a04d08
    # Walk the user data
Packit Service a04d08
    part_data = {
Packit Service a04d08
        'handlers': c_handlers,
Packit Service a04d08
        # Any new handlers that are encountered get writen here
Packit Service a04d08
        'handlerdir': handler_dir,
Packit Service a04d08
        'data': data,
Packit Service a04d08
        # The default frequency if handlers don't have one
Packit Service a04d08
        'frequency': frequency,
Packit Service a04d08
        # This will be used when new handlers are found
Packit Service a04d08
        # to help write there contents to files with numbered
Packit Service a04d08
        # names...
Packit Service a04d08
        'handlercount': 0,
Packit Service a04d08
        'excluded': [],
Packit Service a04d08
    }
Packit Service a04d08
Packit Service a04d08
    handlers.walk(user_data_msg, handlers.walker_callback, data=part_data)
Packit Service a04d08
Packit Service a04d08
    # Give callbacks opportunity to finalize
Packit Service a04d08
    called = []
Packit Service a04d08
    for (_ctype, mod) in c_handlers.items():
Packit Service a04d08
        if mod in called:
Packit Service a04d08
            continue
Packit Service a04d08
        handlers.call_end(mod, data, frequency)
Packit Service a04d08
        called.append(mod)
Packit Service a04d08
Packit Service a04d08
    shutil.rmtree(tempd)
Packit Service a04d08
Packit Service a04d08
if __name__ == "__main__":
Packit Service a04d08
    main()
Packit Service a04d08
Packit Service a04d08
# vi: ts=4 expandtab