15965: Decode as UTF-8 to avoid "not ASCII" error on Python 2
[arvados.git] / sdk / python / arvados / commands / ws.py
index 72ef1befed85ffd4d8b883270ebefa0a3bcd3dac..37dab55d60351b69bf97980f1dd9fa1376e4303b 100644 (file)
@@ -1,5 +1,8 @@
-#!/usr/bin/env python
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
 
+from __future__ import print_function
 import sys
 import logging
 import argparse
@@ -47,9 +50,10 @@ def main(arguments=None):
             if "job" in components[c]:
                 pipeline_jobs.add(components[c]["job"]["uuid"])
         if known_component_jobs != pipeline_jobs:
+            new_filters = [['object_uuid', 'in', [args.pipeline] + list(pipeline_jobs)]]
+            ws.subscribe(new_filters)
             ws.unsubscribe(filters)
-            filters = [['object_uuid', 'in', [args.pipeline] + list(pipeline_jobs)]]
-            ws.subscribe([['object_uuid', 'in', [args.pipeline] + list(pipeline_jobs)]])
+            filters = new_filters
             known_component_jobs = pipeline_jobs
 
     api = arvados.api('v1')
@@ -85,7 +89,8 @@ def main(arguments=None):
                 sys.stdout.write(ev["properties"]["text"])
             elif ev["event_type"] in ("create", "update"):
                 if ev["object_kind"] == "arvados#pipelineInstance":
-                    update_subscribed_components(ev["properties"]["new_attributes"]["components"])
+                    c = api.pipeline_instances().get(uuid=ev["object_uuid"]).execute()
+                    update_subscribed_components(c["components"])
 
                 if ev["object_kind"] == "arvados#pipelineInstance" and args.pipeline:
                     if ev["properties"]["new_attributes"]["state"] in ("Complete", "Failed", "Paused"):
@@ -97,7 +102,7 @@ def main(arguments=None):
         elif 'status' in ev and ev['status'] == 200:
             pass
         else:
-            print json.dumps(ev)
+            print(json.dumps(ev))
 
     try:
         ws = subscribe(arvados.api('v1'), filters, on_message, poll_fallback=args.poll_interval, last_log_id=last_log_id)