21578: Merge branch 'main' into 21578-mount-debug
[arvados.git] / sdk / python / arvados / commands / ws.py
index 57070636bba75d4c30fbd363be6365fd1668ce8e..04a90cf20b8b1556819a47166c37f44d66b0dfd6 100644 (file)
@@ -10,12 +10,13 @@ import arvados
 import json
 from arvados.events import subscribe
 from arvados._version import __version__
+from . import _util as arv_cmd
 import signal
 
 def main(arguments=None):
     logger = logging.getLogger('arvados.arv-ws')
 
-    parser = argparse.ArgumentParser()
+    parser = argparse.ArgumentParser(parents=[arv_cmd.retry_opt])
     parser.add_argument('--version', action='version',
                         version="%s %s" % (sys.argv[0], __version__),
                         help='Print version and exit.')
@@ -50,12 +51,13 @@ 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')
+    api = arvados.api('v1', num_retries=args.retries)
 
     if args.uuid:
         filters += [ ['object_uuid', '=', args.uuid] ]