X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/35ade8a042094a27e2ca5cfd5e9754aa3513410c..df9e166a5ffc4aa79658bec1a5d552a3b413f0d8:/sdk/python/arvados/commands/ws.py diff --git a/sdk/python/arvados/commands/ws.py b/sdk/python/arvados/commands/ws.py index 674daadcd9..9bce997107 100644 --- a/sdk/python/arvados/commands/ws.py +++ b/sdk/python/arvados/commands/ws.py @@ -46,7 +46,7 @@ def main(arguments=None): ws.subscribe([['object_uuid', 'in', [args.pipeline] + list(pipeline_jobs)]]) known_component_jobs = pipeline_jobs - api = arvados.api('v1', cache=False) + api = arvados.api('v1') if args.uuid: filters += [ ['object_uuid', '=', args.uuid] ] @@ -71,20 +71,28 @@ def main(arguments=None): elif ev["event_type"] in ("create", "update"): if ev["object_kind"] == "arvados#pipelineInstance": update_subscribed_components(ev["properties"]["new_attributes"]["components"]) + + if ev["object_kind"] == "arvados#pipelineInstance" and args.pipeline: + if ev["properties"]["new_attributes"]["state"] in ("Complete", "Failed", "Paused"): + ws.close() + + if ev["object_kind"] == "arvados#job" and args.job: + if ev["properties"]["new_attributes"]["state"] in ("Complete", "Failed", "Cancelled"): + ws.close() elif 'status' in ev and ev['status'] == 200: pass else: print json.dumps(ev) try: - ws = subscribe(arvados.api('v1', cache=False), filters, on_message, poll_fallback=args.poll_interval) + ws = subscribe(arvados.api('v1'), filters, on_message, poll_fallback=args.poll_interval) if ws: if args.pipeline: c = api.pipeline_instances().get(uuid=args.pipeline).execute() update_subscribed_components(c["components"]) - - while True: - signal.pause() + if c["state"] in ("Complete", "Failed", "Paused"): + ws.close() + ws.run_forever() except KeyboardInterrupt: pass except Exception as e: