arvados-cli 0.1.20140326173450 → 0.1.20140327092713

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/arv-run-pipeline-instance +23 -80
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e7ce3e63bcaeac4a73ce1efb484c66756677c8e
4
- data.tar.gz: 90c8acaa05d9ca47f517aa8f61e9b79137f2f8fc
3
+ metadata.gz: acc87ed620bd3dab59995717a259df4711c97ec4
4
+ data.tar.gz: 54b3c124bd65e48ab76ca0a43d782ef69b58b5e6
5
5
  SHA512:
6
- metadata.gz: dac0eeb952ef8a5fc8c29ee08e1f345a02443c6615f7f74fb1fa9f7927dac6f1ffe8af05ca61e5750093fbc744533f4795351608fb576dd2ee8c48ff7d9299d8
7
- data.tar.gz: 3c65515ac79334a72887ac239263298568b20d84c68ceb58cabddc2cd111d4213f7d4fe18bd7146d379c8d073f2ef18d0dae2be14b4ee573359e58faf1a11382
6
+ metadata.gz: 3f9c6d633e1f638ceba03d503e248033504b7de33db85f666cc457d9f8eb836085accf12e8b16837dc2c5b29ce9de5e3dead71bdf1a1b373724218993689471e
7
+ data.tar.gz: 7ffea4f249a4e93cadfe56cbc286278b2b61daa8343b3607ccf5a7646e282095e77fbc9c66f28ed085479df8e1a06cdaa1624552df798e6a78a0d9d2e23b1b89
@@ -28,11 +28,6 @@
28
28
  # [--no-wait] Make only as much progress as possible without entering
29
29
  # a sleep/poll loop.
30
30
  #
31
- # [--no-reuse-finished] Do not reuse existing outputs to satisfy
32
- # pipeline components. Always submit a new job
33
- # or use an existing job which has not yet
34
- # finished.
35
- #
36
31
  # [--no-reuse] Do not reuse existing jobs to satisfy pipeline
37
32
  # components. Submit a new job for every component.
38
33
  #
@@ -152,10 +147,6 @@ p = Trollop::Parser.new do
152
147
  "Do not wait for jobs to finish. Just look up status, submit new jobs if needed, and exit.",
153
148
  :short => :none,
154
149
  :type => :boolean)
155
- opt(:no_reuse_finished,
156
- "Do not reuse existing outputs to satisfy pipeline components. Always submit a new job or use an existing job which has not yet finished.",
157
- :short => :none,
158
- :type => :boolean)
159
150
  opt(:no_reuse,
160
151
  "Do not reuse existing jobs to satisfy pipeline components. Submit a new job for every component.",
161
152
  :short => :none,
@@ -331,7 +322,7 @@ class JobCache
331
322
  if j.is_a? Hash and j[:uuid]
332
323
  @cache[j[:uuid]] = j
333
324
  else
334
- debuglog "create job: #{j[:errors] rescue nil}", 0
325
+ debuglog "create job: #{j[:errors] rescue nil} with attribute #{attributes}", 0
335
326
  nil
336
327
  end
337
328
  end
@@ -433,84 +424,35 @@ class WhRunPipelineInstance
433
424
  moretodo = false
434
425
  @components.each do |cname, c|
435
426
  job = nil
436
- if !c[:job] and
437
- c[:script_parameters].select { |pname, p| p.is_a? Hash }.empty?
438
- # Job is fully specified (all parameter values are present) but
439
- # no particular job has been found.
440
-
441
- debuglog "component #{cname} ready to satisfy."
442
-
443
- c.delete :wait
444
- second_place_job = nil # satisfies component, but not finished yet
445
-
446
- (@options[:no_reuse] ? [] : JobCache.
447
- where(script: c[:script],
448
- script_parameters: c[:script_parameters],
449
- script_version_descends_from: c[:script_version])
450
- ).each do |candidate_job|
451
- candidate_params_downcase = Hash[candidate_job[:script_parameters].
452
- map { |k,v| [k.downcase,v] }]
453
- c_params_downcase = Hash[c[:script_parameters].
454
- map { |k,v| [k.downcase,v] }]
455
-
456
- debuglog "component #{cname} considering job #{candidate_job[:uuid]} version #{candidate_job[:script_version]} parameters #{candidate_params_downcase.inspect}", 3
457
-
458
- unless candidate_params_downcase == c_params_downcase
459
- next
460
- end
461
-
462
- if c[:script_version] !=
463
- candidate_job[:script_version][0,c[:script_version].length]
464
- debuglog "component #{cname} would be satisfied by job #{candidate_job[:uuid]} if script_version matched.", 2
465
- next
466
- end
467
427
 
468
- unless candidate_job[:success] || candidate_job[:running] ||
469
- (!candidate_job[:started_at] && !candidate_job[:cancelled_at])
470
- debuglog "component #{cname} would be satisfied by job #{candidate_job[:uuid]} if it were running or successful.", 2
471
- next
472
- end
473
-
474
- if candidate_job[:success]
475
- unless @options[:no_reuse_finished]
476
- job = candidate_job
477
- $stderr.puts "using #{job[:uuid]} (finished at #{job[:finished_at]}) for component #{cname}"
478
- c[:job] = job
479
- end
480
- else
481
- second_place_job ||= candidate_job
482
- end
483
- break
484
- end
485
- if not c[:job] and second_place_job
486
- job = second_place_job
487
- $stderr.puts "using #{job[:uuid]} (running since #{job[:started_at]}) for component #{cname}"
428
+ if !c[:job] and
429
+ c[:script_parameters].select { |pname, p| p.is_a? Hash and p[:output_of]}.empty?
430
+ # No job yet associated with this component and is component inputs
431
+ # are fully specified (any output_of script_parameters are resolved
432
+ # to real value)
433
+ job = JobCache.create({:script => c[:script],
434
+ :script_parameters => c[:script_parameters],
435
+ :script_version => c[:script_version],
436
+ :repository => c[:repository],
437
+ :minimum_script_version => c[:minimum_script_version],
438
+ :exclude_script_versions => c[:exclude_minimum_script_versions],
439
+ :nondeterministic => c[:nondeterministic],
440
+ :no_reuse => @options[:no_reuse]})
441
+ if job
442
+ debuglog "component #{cname} new job #{job[:uuid]}"
488
443
  c[:job] = job
444
+ else
445
+ debuglog "component #{cname} new job failed"
489
446
  end
490
- if not c[:job]
491
- debuglog "component #{cname} not satisfied by any existing job."
492
- if !@options[:dry_run]
493
- debuglog "component #{cname} new job."
494
- job = JobCache.create(:script => c[:script],
495
- :script_parameters => c[:script_parameters],
496
- :runtime_constraints => c[:runtime_constraints] || {},
497
- :script_version => c[:script_version] || 'master')
498
- if job
499
- debuglog "component #{cname} new job #{job[:uuid]}"
500
- c[:job] = job
501
- else
502
- debuglog "component #{cname} new job failed"
503
- end
504
- end
505
- end
506
- else
507
- c[:wait] = true
508
447
  end
448
+
509
449
  if c[:job] and c[:job][:uuid]
510
450
  if (c[:job][:running] or
511
451
  not (c[:job][:finished_at] or c[:job][:cancelled_at]))
512
- c[:job] = JobCache.get(c[:job][:uuid])
452
+ # Job is running so update copy of job record
453
+ c[:job] = JobCache.get(c[:job][:uuid])
513
454
  end
455
+
514
456
  if c[:job][:success]
515
457
  # Populate script_parameters of other components waiting for
516
458
  # this job
@@ -525,6 +467,7 @@ class WhRunPipelineInstance
525
467
  end
526
468
  elsif c[:job][:running] ||
527
469
  (!c[:job][:started_at] && !c[:job][:cancelled_at])
470
+ # Job is still running
528
471
  moretodo = true
529
472
  elsif c[:job][:cancelled_at]
530
473
  debuglog "component #{cname} job #{c[:job][:uuid]} cancelled."
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arvados-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20140326173450
4
+ version: 0.1.20140327092713
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arvados Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-26 00:00:00.000000000 Z
11
+ date: 2014-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-api-client
@@ -132,7 +132,7 @@ dependencies:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0.8'
135
- description: This is the Arvados SDK CLI gem, git revision 1013c7cee5478538901fd9ba5fc0fb2ce30f6422
135
+ description: This is the Arvados SDK CLI gem, git revision ee86983a93c335413c508c5717a8707bbced93e6
136
136
  email: gem-dev@curoverse.com
137
137
  executables:
138
138
  - arv