예제 #1
0
def main():
    activate_logging()
    parser = arg_parser()
    add_arguments(parser)
    parsed_args = parse_arguments(parser)
    install_tees(parsed_args.stdout, parsed_args.stderr)
    max_ram_megabytes = MemoryParser.parse_to_megabytes(parsed_args.max_ram)
    max_cores = CPUParser.parse(parsed_args.max_cores)
    executor = CalrissianExecutor(max_ram_megabytes, max_cores)
    initialize_reporter(max_ram_megabytes, max_cores)
    runtime_context = CalrissianRuntimeContext(vars(parsed_args))
    runtime_context.select_resources = executor.select_resources
    install_signal_handler()
    try:
        result = cwlmain(args=parsed_args,
                         executor=executor,
                         loadingContext=CalrissianLoadingContext(),
                         runtimeContext=runtime_context,
                         versionfunc=version,
                         )
    finally:
        # Always clean up after cwlmain
        delete_pods()
        if parsed_args.usage_report:
            write_report(parsed_args.usage_report)
        flush_tees()

    return result
예제 #2
0
 def test_delete_pods_calls_podmonitor(self, mock_pod_monitor):
     delete_pods()
     self.assertTrue(mock_pod_monitor.cleanup.called)
예제 #3
0
def handle_sigterm(signum, frame):
    log.error('Received signal {}, deleting pods'.format(signum))
    delete_pods()
    sys.exit(signum)