Example #1
0
def _pbsmrtipe_setup_log(alog, **kwargs):
    """Setup stdout log. pbsmrtpipe will setup pbsmrtpipe.log, master.log

    This should only emit 'status.*' messages.
    """

    str_formatter = '[%(levelname)s] %(asctime)-15s %(message)s'

    level = kwargs.get('level', logging.INFO)
    setup_log(alog,
              level=level,
              file_name=None,
              log_filter=StdOutStatusLogFilter(),
              str_formatter=str_formatter)

    slog.info("Starting pbsmrtpipe v{v}".format(v=pbsmrtpipe.get_version()))
Example #2
0
def _pbsmrtipe_setup_log(alog, **kwargs):
    """Setup stdout log. pbsmrtpipe will setup pbsmrtpipe.log, master.log

    This should only emit 'status.*' messages.
    """

    str_formatter = '[%(levelname)s] %(asctime)-15s %(message)s'

    level = kwargs.get('level', logging.INFO)
    setup_log(alog,
              level=level,
              file_name=None,
              log_filter=StdOutStatusLogFilter(),
              str_formatter=str_formatter)

    slog.info("Starting pbsmrtpipe v{v}".format(v=pbsmrtpipe.get_version()))
Example #3
0
def run_fofn(butler_cfg_fofn, log_file=None):
    """
    Run fofn of butler.cfg files
    :param butler_cfg_fofn:
    """
    # list of absolute file paths
    butler_cfgs = _parse_file(butler_cfg_fofn)

    if log_file is not None:
        setup_log(log, level=logging.DEBUG, file_name=log_file)

    for butler_cfg in butler_cfgs:
        cmd = _to_cmd(_EXE, butler_cfg)
        dir_name = os.path.dirname(butler_cfg)
        with lcd(dir_name):
            log.info(cmd)
            output = local(cmd)
            log.info(output)
            print output
Example #4
0
def _pbsmrtipe_setup_log(alog, **kwargs):
    """Setup stdout log. pbsmrtpipe will setup pbsmrtpipe.log, master.log

    This should only emit 'status.*' messages.
    """
    # This is a essentially just a bootstrapping step before the job-dir/logs
    # can be created and proper log files (pbsmrtpipe.log, master.log) will
    # be setup for this to work with the new global dict setup model would have to
    # extended to support adding a custom filter.

    str_formatter = '%(message)s'

    level = kwargs.get('level', logging.INFO)
    setup_log(alog,
              level=level,
              file_name=None,
              log_filter=StdOutStatusLogFilter(),
              str_formatter=str_formatter)

    slog.info("Starting pbsmrtpipe v{v}".format(v=pbsmrtpipe.get_version()))
Example #5
0
def _pbsmrtipe_setup_log(alog, **kwargs):
    """Setup stdout log. pbsmrtpipe will setup pbsmrtpipe.log, master.log

    This should only emit 'status.*' messages.
    """
    # This is a essentially just a bootstrapping step before the job-dir/logs
    # can be created and proper log files (pbsmrtpipe.log, master.log) will
    # be setup for this to work with the new global dict setup model would have to
    # extended to support adding a custom filter.

    str_formatter = '%(message)s'

    level = kwargs.get('level', logging.INFO)
    setup_log(alog,
              level=level,
              file_name=None,
              log_filter=StdOutStatusLogFilter(),
              str_formatter=str_formatter)

    slog.info("Starting pbsmrtpipe v{v}".format(v=pbsmrtpipe.get_version()))
Example #6
0
def run_butler(
    butler, test_cases, output_xml, log_file=None, log_level=logging.DEBUG, force_distribute=None, force_chunk=None
):
    """
    Run a Butler instance.

    :param butler: Butler instance
    :return: exit code


    :rtype: int
    """
    started_at = time.time()

    if isinstance(force_distribute, bool):
        butler.force_distribute = force_distribute

    if isinstance(force_chunk, bool):
        butler.force_chunk = force_chunk

    cmd = butler.to_cmd()

    if not os.path.exists(butler.output_dir):
        os.mkdir(butler.output_dir)

    b_log = os.path.join(butler.output_dir, "butler.log")
    # b_err = os.path.join(butler.output_dir, 'butler.stderr')
    b_out = os.path.join(butler.output_dir, "butler.stdout")

    setup_log(log, level=log_level, file_name=b_log)

    # Butler stdout log
    str_formatter = "[%(levelname)s] %(message)s"
    setup_log(slog, level=log_level, file_name=b_out, log_filter=StdOutStatusLogFilter(), str_formatter=str_formatter)

    if log_file is not None:
        if isinstance(log_level, str):
            log_levels_d = {attr: getattr(logging, attr) for attr in LOG_LEVELS}
            level = log_levels_d[log_level]
        else:
            level = logging.DEBUG
        setup_log(log, level=level, file_name=log_file)

    # log.debug(pprint.pformat(butler.__dict__))
    slog.info("Running butler with test id {i}".format(i=butler.job_id))
    slog.info("Running cmd '{c}'".format(c=cmd))

    def _to_p(file_name):
        return os.path.join(butler.output_dir, file_name)

    # pbsmrtpipe stdout and stderr
    stdout = _to_p("job.stdout")
    stderr = _to_p("job.stderr")

    with open(stdout, "w") as stdout_fh:
        with open(stderr, "w") as stderr_fh:

            rcode, stdout, stderr, run_time = run_command_async(cmd, stdout_fh, stderr_fh)

            rmessage = "was successful" if rcode == 0 else " failed"
            msg = "pbsmrtpipe command {m} ({s:.2f} sec) exit code {e}.'".format(e=rcode, s=run_time, m=rmessage)
            if rcode != 0:
                slog.error(msg)
                log.error(str(stderr))
            else:
                slog.info(msg)

        if test_cases is not None:
            trcode = run_butler_tests(test_cases, butler.output_dir, output_xml, butler.job_id)
        else:
            trcode = 0

    run_time = time.time() - started_at
    slog.info("Exiting testkit runner in {s:.2f} sec.".format(s=run_time))

    # Was butler successful + all the tests pass
    return rcode | trcode
Example #7
0
def setup_minimal_log(alog, **kwargs):
    kwargs["str_formatter"] = "%(message)s"
    setup_log(alog, **kwargs)
Example #8
0
def run_butler(butler, test_cases, output_xml,
               log_file=None,
               log_level=logging.DEBUG,
               force_distribute=None,
               force_chunk=None):
    """
    Run a Butler instance.

    :param butler: Butler instance
    :return: exit code


    :rtype: int
    """
    started_at = time.time()

    if isinstance(force_distribute, bool):
        butler.force_distribute = force_distribute

    if isinstance(force_chunk, bool):
        butler.force_chunk = force_chunk

    cmd = butler.to_cmd()

    if not os.path.exists(butler.output_dir):
        os.mkdir(butler.output_dir)

    b_log = os.path.join(butler.output_dir, 'butler.log')
    # b_err = os.path.join(butler.output_dir, 'butler.stderr')
    b_out = os.path.join(butler.output_dir, 'butler.stdout')

    setup_log(log, level=log_level, file_name=b_log)

    # Butler stdout log
    str_formatter = '[%(levelname)s] %(message)s'
    setup_log(slog, level=log_level,
              file_name=b_out,
              log_filter=StdOutStatusLogFilter(),
              str_formatter=str_formatter)

    if log_file is not None:
        if isinstance(log_level, str):
            log_levels_d = {attr: getattr(logging, attr) for attr in LOG_LEVELS}
            level = log_levels_d[log_level]
        else:
            level = logging.DEBUG
        setup_log(log, level=level, file_name=log_file)

    # log.debug(pprint.pformat(butler.__dict__))
    slog.info("Running butler with test id {i}".format(i=butler.job_id))
    slog.info("Running cmd '{c}'".format(c=cmd))

    def _to_p(file_name):
        return os.path.join(butler.output_dir, file_name)

    # pbsmrtpipe stdout and stderr
    stdout = _to_p('job.stdout')
    stderr = _to_p('job.stderr')

    with open(stdout, 'w') as stdout_fh:
        with open(stderr, 'w') as stderr_fh:

            rcode, stdout, stderr, run_time = run_command_async(cmd, stdout_fh, stderr_fh)

            rmessage = "was successful" if rcode == 0 else " failed"
            msg = "pbsmrtpipe command {m} ({s:.2f} sec) exit code {e}.'".format(e=rcode, s=run_time, m=rmessage)
            if rcode != 0:
                slog.error(msg)
                log.error(str(stderr))
            else:
                slog.info(msg)

        if test_cases is not None:
            trcode = run_butler_tests(test_cases, butler.output_dir, output_xml, butler.job_id)
        else:
            trcode = 0

    run_time = time.time() - started_at
    slog.info("Exiting testkit runner in {s:.2f} sec.".format(s=run_time))

    # Was butler successful + all the tests pass
    return rcode | trcode
Example #9
0
def setup_minimal_log(alog, **kwargs):
    kwargs['str_formatter'] = '%(message)s'
    setup_log(alog, **kwargs)