Merge branch 'master' into 8857-cwl-job-reuse
authorPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 1 Apr 2016 14:01:39 +0000 (10:01 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Fri, 1 Apr 2016 14:01:39 +0000 (10:01 -0400)
Conflicts:
sdk/cwl/arvados_cwl/__init__.py

1  2 
sdk/cwl/arvados_cwl/__init__.py

index 339b91ce594bc5747120c55106394b07c909af32,511f173eb0008995a60e55652a9c3af6be40bb06..ab8d725bd775d34d3588d17ba8004327231cea80
@@@ -403,10 -520,24 +530,26 @@@ class ArvCwlRunner(object)
          self.uploaded[src] = pair
  
      def arvExecutor(self, tool, job_order, input_basedir, args, **kwargs):
+         self.debug = args.debug
+         if args.quiet:
+             logger.setLevel(logging.WARN)
+             logging.getLogger('arvados.arv-run').setLevel(logging.WARN)
+         useruuid = self.api.users().current().execute()["uuid"]
+         self.project_uuid = args.project_uuid if args.project_uuid else useruuid
+         self.pipeline = None
+         if args.submit:
+             runnerjob = RunnerJob(self, tool, job_order, args.enable_reuse)
+             if not args.wait:
+                 runnerjob.run()
+                 return
          events = arvados.events.subscribe(arvados.api('v1'), [["object_uuid", "is_a", "arvados#job"]], self.on_message)
  
 +        self.debug = args.debug
 +        self.ignore_docker_for_reuse = args.ignore_docker_for_reuse
          self.fs_access = CollectionFsAccess(input_basedir)
  
          kwargs["fs_access"] = self.fs_access
@@@ -484,13 -631,25 +643,28 @@@ def main(args, stdout, stderr, api_clie
      exgroup.add_argument("--disable-reuse", action="store_false",
                          default=True, dest="enable_reuse",
                          help="")
      parser.add_argument("--project-uuid", type=str, help="Project that will own the workflow jobs")
 +    parser.add_argument("--ignore-docker-for-reuse", action="store_true",
 +                        help="Ignore Docker image version when deciding whether to reuse past jobs.",
 +                        default=False)
  
+     exgroup = parser.add_mutually_exclusive_group()
+     exgroup.add_argument("--submit", action="store_true", help="Submit workflow to run on Arvados.",
+                         default=True, dest="submit")
+     exgroup.add_argument("--local", action="store_false", help="Run workflow on local host (submits jobs to Arvados).",
+                         default=True, dest="submit")
+     exgroup = parser.add_mutually_exclusive_group()
+     exgroup.add_argument("--wait", action="store_true", help="After submitting workflow runner job, wait for completion.",
+                         default=True, dest="wait")
+     exgroup.add_argument("--no-wait", action="store_false", help="Submit workflow runner job and exit.",
+                         default=True, dest="wait")
      try:
-         runner = ArvCwlRunner(api_client=arvados.api('v1', model=OrderedJsonModel()))
+         if api_client is None:
+             api_client=arvados.api('v1', model=OrderedJsonModel())
+         runner = ArvCwlRunner(api_client)
      except Exception as e:
          logger.error(e)
          return 1