arvados-cli 0.1.20140328145218 → 0.1.20140328152103
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.
- checksums.yaml +4 -4
- data/bin/arv-run-pipeline-instance +50 -5
- data/bin/crunch-job +11 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272f81448344f725c7753fa314ab58ae28ec24c5
|
4
|
+
data.tar.gz: 7a27f7396a43a06a5660fb8c97caa961397a5d34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f27db74f753bc33b61ebba0e549a0e5db2e8f51a4ffd2c4c6dffed69b03c7ff7d4883827411c0f73ec5fe0ab378b580b62a2abbfe398f82d993969d59ba7836
|
7
|
+
data.tar.gz: 24828a815587cb7888261add2c88046002358aa9c00830227899c1f0165bbaf33f6eff8413dd8e750bcda7a7fa34895fe0754a23f5754b80b6fb5170831d92f7
|
@@ -74,6 +74,7 @@ $arvados_api_token = ENV['ARVADOS_API_TOKEN'] or
|
|
74
74
|
abort "#{$0}: fatal: ARVADOS_API_TOKEN environment variable not set."
|
75
75
|
|
76
76
|
begin
|
77
|
+
require 'arvados'
|
77
78
|
require 'rubygems'
|
78
79
|
require 'json'
|
79
80
|
require 'pp'
|
@@ -84,7 +85,7 @@ rescue LoadError => l
|
|
84
85
|
abort <<-EOS
|
85
86
|
#{$0}: fatal: #{l.message}
|
86
87
|
Some runtime dependencies may be missing.
|
87
|
-
Try: gem install pp google-api-client json trollop
|
88
|
+
Try: gem install arvados pp google-api-client json trollop
|
88
89
|
EOS
|
89
90
|
end
|
90
91
|
|
@@ -216,6 +217,7 @@ $client ||= Google::APIClient.
|
|
216
217
|
:application_name => File.split($0).last,
|
217
218
|
:application_version => $application_version.to_s)
|
218
219
|
$arvados = $client.discovered_api('arvados', $arvados_api_version)
|
220
|
+
$arv = Arvados.new api_version: 'v1'
|
219
221
|
|
220
222
|
|
221
223
|
class PipelineInstance
|
@@ -424,7 +426,12 @@ class WhRunPipelineInstance
|
|
424
426
|
moretodo = false
|
425
427
|
@components.each do |cname, c|
|
426
428
|
job = nil
|
427
|
-
|
429
|
+
# Is the job satisfying this component already known to be
|
430
|
+
# finished? (Already meaning "before we query API server about
|
431
|
+
# the job's current state")
|
432
|
+
c_already_finished = (c[:job] &&
|
433
|
+
c[:job][:uuid] &&
|
434
|
+
!c[:job][:success].nil?)
|
428
435
|
if !c[:job] and
|
429
436
|
c[:script_parameters].select { |pname, p| p.is_a? Hash and p[:output_of]}.empty?
|
430
437
|
# No job yet associated with this component and is component inputs
|
@@ -437,7 +444,8 @@ class WhRunPipelineInstance
|
|
437
444
|
:minimum_script_version => c[:minimum_script_version],
|
438
445
|
:exclude_script_versions => c[:exclude_minimum_script_versions],
|
439
446
|
:nondeterministic => c[:nondeterministic],
|
440
|
-
:no_reuse => @options[:no_reuse]
|
447
|
+
:no_reuse => @options[:no_reuse],
|
448
|
+
:output_is_persistent => c[:output_is_persistent] || false})
|
441
449
|
if job
|
442
450
|
debuglog "component #{cname} new job #{job[:uuid]}"
|
443
451
|
c[:job] = job
|
@@ -450,7 +458,7 @@ class WhRunPipelineInstance
|
|
450
458
|
if (c[:job][:running] or
|
451
459
|
not (c[:job][:finished_at] or c[:job][:cancelled_at]))
|
452
460
|
# Job is running so update copy of job record
|
453
|
-
c[:job] = JobCache.get(c[:job][:uuid])
|
461
|
+
c[:job] = JobCache.get(c[:job][:uuid])
|
454
462
|
end
|
455
463
|
|
456
464
|
if c[:job][:success]
|
@@ -465,6 +473,43 @@ class WhRunPipelineInstance
|
|
465
473
|
end
|
466
474
|
end
|
467
475
|
end
|
476
|
+
unless c_already_finished
|
477
|
+
# This is my first time discovering that the job
|
478
|
+
# succeeded. (At the top of this loop, I was still
|
479
|
+
# waiting for it to finish.)
|
480
|
+
if c[:output_is_persistent]
|
481
|
+
# I need to make sure a resources/wants link is in
|
482
|
+
# place to protect the output from garbage
|
483
|
+
# collection. (Normally Crunch does this for me, but
|
484
|
+
# here I might be reusing the output of someone else's
|
485
|
+
# job and I need to make sure it's understood that the
|
486
|
+
# output is valuable to me, too.)
|
487
|
+
wanted = c[:job][:output]
|
488
|
+
debuglog "checking for existing persistence link for #{wanted}"
|
489
|
+
@my_user_uuid ||= $arv.user.current[:uuid]
|
490
|
+
links = $arv.link.list(limit: 1,
|
491
|
+
filters:
|
492
|
+
[%w(link_class = resources),
|
493
|
+
%w(name = wants),
|
494
|
+
%w(tail_uuid =) + [@my_user_uuid],
|
495
|
+
%w(head_uuid =) + [wanted]
|
496
|
+
])[:items]
|
497
|
+
if links.any?
|
498
|
+
debuglog "link already exists, uuid #{links.first[:uuid]}"
|
499
|
+
else
|
500
|
+
newlink = $arv.link.create link: \
|
501
|
+
{
|
502
|
+
link_class: 'resources',
|
503
|
+
name: 'wants',
|
504
|
+
tail_kind: 'arvados#user',
|
505
|
+
tail_uuid: @my_user_uuid,
|
506
|
+
head_kind: 'arvados#collection',
|
507
|
+
head_uuid: wanted
|
508
|
+
}
|
509
|
+
debuglog "added link, uuid #{newlink[:uuid]}"
|
510
|
+
end
|
511
|
+
end
|
512
|
+
end
|
468
513
|
elsif c[:job][:running] ||
|
469
514
|
(!c[:job][:started_at] && !c[:job][:cancelled_at])
|
470
515
|
# Job is still running
|
@@ -507,7 +552,7 @@ class WhRunPipelineInstance
|
|
507
552
|
end
|
508
553
|
end
|
509
554
|
end
|
510
|
-
|
555
|
+
|
511
556
|
if ended == @components.length or failed > 0
|
512
557
|
@instance[:active] = false
|
513
558
|
@instance[:success] = (succeeded == @components.length)
|
data/bin/crunch-job
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/perl
|
2
|
-
# -*- mode: perl; perl-indent-level: 2; -*-
|
2
|
+
# -*- mode: perl; perl-indent-level: 2; indent-tabs-mode: nil; -*-
|
3
3
|
|
4
4
|
=head1 NAME
|
5
5
|
|
@@ -766,6 +766,16 @@ if ($Job->{'output'})
|
|
766
766
|
'uuid' => $Job->{'output'},
|
767
767
|
'manifest_text' => $manifest_text,
|
768
768
|
});
|
769
|
+
if ($Job->{'output_is_persistent'}) {
|
770
|
+
$arv->{'links'}->{'create'}->execute('link' => {
|
771
|
+
'tail_kind' => 'arvados#user',
|
772
|
+
'tail_uuid' => $User->{'uuid'},
|
773
|
+
'head_kind' => 'arvados#collection',
|
774
|
+
'head_uuid' => $Job->{'output'},
|
775
|
+
'link_class' => 'resources',
|
776
|
+
'name' => 'wants',
|
777
|
+
});
|
778
|
+
}
|
769
779
|
};
|
770
780
|
if ($@) {
|
771
781
|
Log (undef, "Failed to register output manifest: $@");
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20140328152103
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
@@ -10,6 +10,20 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2014-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: arvados
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.0
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: google-api-client
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +146,7 @@ dependencies:
|
|
132
146
|
- - "~>"
|
133
147
|
- !ruby/object:Gem::Version
|
134
148
|
version: '0.8'
|
135
|
-
description: This is the Arvados SDK CLI gem, git revision
|
149
|
+
description: This is the Arvados SDK CLI gem, git revision 64b24877bdb4b35938e8b691463b78073a4fd31d
|
136
150
|
email: gem-dev@curoverse.com
|
137
151
|
executables:
|
138
152
|
- arv
|