From 25275859b01a1f8c8bff018878842d194d99c173 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Wed, 28 Dec 2016 10:31:49 -0500 Subject: [PATCH] 10497: Add --no-log-timestamps to eliminate redundant timestamps when running in Arvados job or container. Conflicts: sdk/cwl/setup.py --- sdk/cwl/arvados_cwl/__init__.py | 13 +++++++++++++ sdk/cwl/arvados_cwl/arvcontainer.py | 2 +- sdk/cwl/arvados_cwl/crunch_script.py | 3 +++ sdk/cwl/tests/test_submit.py | 19 +++++++++++++------ 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/sdk/cwl/arvados_cwl/__init__.py b/sdk/cwl/arvados_cwl/__init__.py index 6d2afc69e9..6d8bf82cee 100644 --- a/sdk/cwl/arvados_cwl/__init__.py +++ b/sdk/cwl/arvados_cwl/__init__.py @@ -559,6 +559,12 @@ def arg_parser(): # type: () -> argparse.ArgumentParser exgroup.add_argument("--no-wait", action="store_false", help="Submit workflow runner job and exit.", default=True, dest="wait") + exgroup = parser.add_mutually_exclusive_group() + exgroup.add_argument("--log-timestamps", action="store_true", help="Prefix logging lines with timestamp", + default=True, dest="log_timestamps") + exgroup.add_argument("--no-log-timestamps", action="store_false", help="No timestamp on logging lines", + default=True, dest="log_timestamps") + parser.add_argument("--api", type=str, default=None, dest="work_api", help="Select work submission API, one of 'jobs' or 'containers'. Default is 'jobs' if that API is available, otherwise 'containers'.") @@ -643,6 +649,13 @@ def main(args, stdout, stderr, api_client=None, keep_client=None): metrics.setLevel(logging.DEBUG) logging.getLogger("cwltool.metrics").setLevel(logging.DEBUG) + if arvargs.log_timestamps: + arvados.log_handler.setFormatter(logging.Formatter( + '%(asctime)s %(name)s %(levelname)s: %(message)s', + '%Y-%m-%d %H:%M:%S')) + else: + arvados.log_handler.setFormatter(logging.Formatter('%(name)s %(levelname)s: %(message)s')) + arvargs.conformance_test = None arvargs.use_container = True arvargs.relax_path_checks = True diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index 609d8c217b..5f96ac6d09 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -245,7 +245,7 @@ class RunnerContainer(Runner): } container_req["properties"]["template_uuid"] = wfuuid - command = ["arvados-cwl-runner", "--local", "--api=containers"] + command = ["arvados-cwl-runner", "--local", "--api=containers", "--no-log-timestamps"] if self.output_name: command.append("--output-name=" + self.output_name) diff --git a/sdk/cwl/arvados_cwl/crunch_script.py b/sdk/cwl/arvados_cwl/crunch_script.py index 225d5ec504..570f686a68 100644 --- a/sdk/cwl/arvados_cwl/crunch_script.py +++ b/sdk/cwl/arvados_cwl/crunch_script.py @@ -26,6 +26,9 @@ from cwltool.errors import WorkflowException logger = logging.getLogger('arvados.cwl-runner') def run(): + # Timestamps are added by crunch-job, so don't print redundant timestamps. + arvados.log_handler.setFormatter(logging.Formatter('%(name)s %(levelname)s: %(message)s')) + # Print package versions logger.info(arvados_cwl.versionstring()) diff --git a/sdk/cwl/tests/test_submit.py b/sdk/cwl/tests/test_submit.py index a39972b3b8..cdeb6dfd8e 100644 --- a/sdk/cwl/tests/test_submit.py +++ b/sdk/cwl/tests/test_submit.py @@ -195,7 +195,7 @@ def stubs(func): }, 'state': 'Committed', 'owner_uuid': None, - 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--enable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'], + 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', '--enable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'], 'name': 'submit_wf.cwl', 'container_image': 'arvados/jobs:'+arvados_cwl.__version__, 'output_path': '/var/spool/cwl', @@ -446,7 +446,8 @@ class TestSubmit(unittest.TestCase): except: logging.exception("") - stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', '--disable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] + stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', + '--disable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] expect_container = copy.deepcopy(stubs.expect_container_spec) stubs.api.container_requests().create.assert_called_with( @@ -468,7 +469,9 @@ class TestSubmit(unittest.TestCase): except: logging.exception("") - stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', "--output-name="+output_name, '--enable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] + stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', + "--output-name="+output_name, '--enable-reuse', + '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] expect_container = copy.deepcopy(stubs.expect_container_spec) stubs.api.container_requests().create.assert_called_with( @@ -490,7 +493,9 @@ class TestSubmit(unittest.TestCase): except: logging.exception("") - stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', "--output-tags="+output_tags, '--enable-reuse', '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] + stubs.expect_container_spec["command"] = ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', + "--output-tags="+output_tags, '--enable-reuse', + '/var/lib/cwl/workflow/submit_wf.cwl', '/var/lib/cwl/cwl.input.json'] expect_container = copy.deepcopy(stubs.expect_container_spec) stubs.api.container_requests().create.assert_called_with( @@ -571,7 +576,8 @@ class TestSubmit(unittest.TestCase): 'output_path': '/var/spool/cwl', 'name': 'expect_arvworkflow.cwl#main', 'container_image': 'arvados/jobs:'+arvados_cwl.__version__, - 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--enable-reuse', '/var/lib/cwl/workflow/expect_arvworkflow.cwl#main', '/var/lib/cwl/cwl.input.json'], + 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', + '--enable-reuse', '/var/lib/cwl/workflow/expect_arvworkflow.cwl#main', '/var/lib/cwl/cwl.input.json'], 'cwd': '/var/spool/cwl', 'runtime_constraints': { 'API': True, @@ -658,7 +664,8 @@ class TestSubmit(unittest.TestCase): 'output_path': '/var/spool/cwl', 'name': 'a test workflow', 'container_image': 'arvados/jobs:'+arvados_cwl.__version__, - 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--enable-reuse', '/var/lib/cwl/workflow.json#main', '/var/lib/cwl/cwl.input.json'], + 'command': ['arvados-cwl-runner', '--local', '--api=containers', '--no-log-timestamps', + '--enable-reuse', '/var/lib/cwl/workflow.json#main', '/var/lib/cwl/cwl.input.json'], 'cwd': '/var/spool/cwl', 'runtime_constraints': { 'API': True, -- 2.30.2