arvados-cli 0.1.20160331222945 → 0.1.20160502182247

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c738972b30fbe141b217d5ec94ce311ce8838ed
4
- data.tar.gz: 68e2efaf0c0361dbeb2fbe9f06a721b7b83c9376
3
+ metadata.gz: 028deb623850341357235f78b0a0778c05a41553
4
+ data.tar.gz: 27461048cae5ade3b6a080ae407fce6be4eebdda
5
5
  SHA512:
6
- metadata.gz: 3dc5ae689c7bf6bd7b2e9543a45e1d7e88247ccfdf1d3a188b2329f1f06621db0c862b76aae2e1969f5611128fd2b49e3fd417a2ce4c1822c9b11dc1af993b47
7
- data.tar.gz: bdc42b1882e9985bca582dee2fec71c7fbf3fffd5cee6c760f5fc585ea4899a3050e9535fa14cfd837d4fe1da54be93dfaf0ea38941800784fd58a226e1b414d
6
+ metadata.gz: f9a4f4bbe80b59cd33a937ee00be54b1e1d0ac83ce1917e56e29af2d791722153edced8759fc57eafbab4bc831bcdb912555855c547b96fe479a430db774fd6a
7
+ data.tar.gz: 35bd843bbd394c4f4eebad20914bdba94755bb63c258b5ba0adef0568bbfbc4baa384b7199cf1faad1320ac7a66a8ad8be0e2048fd2287463c4526df589d369f
data/bin/arv CHANGED
@@ -566,7 +566,7 @@ def parse_arguments(discovery_document, subcommands)
566
566
  end
567
567
  end
568
568
 
569
- discovered_params.each do |k,v|
569
+ discovered_params.merge({resource => {'type' => 'object'}}).each do |k,v|
570
570
  k = k.to_sym
571
571
  if ['object', 'array'].index(v["type"]) and method_opts.has_key? k
572
572
  if method_opts[k].andand.match /^\//
@@ -17,7 +17,7 @@ begin
17
17
  require 'trollop'
18
18
  require 'google/api_client'
19
19
  rescue LoadError => l
20
- puts $:
20
+ $stderr.puts $:
21
21
  abort <<-EOS
22
22
  #{$0}: fatal: #{l.message}
23
23
  Some runtime dependencies may be missing.
@@ -132,7 +132,7 @@ if $options[:instance]
132
132
  abort "#{$0}: syntax error: --instance cannot be combined with --template or --submit."
133
133
  end
134
134
  elsif not $options[:template]
135
- puts "error: you must supply a --template or --instance."
135
+ $stderr.puts "error: you must supply a --template or --instance."
136
136
  p.educate
137
137
  abort
138
138
  end
data/bin/crunch-job CHANGED
@@ -416,8 +416,17 @@ if ($docker_locator = $Job->{docker_image_locator}) {
416
416
  Log (undef, "docker image hash is $docker_hash");
417
417
  $docker_stream =~ s/^\.//;
418
418
  my $docker_install_script = qq{
419
- if ! $docker_bin images -q --no-trunc --all | grep -qxF \Q$docker_hash\E; then
420
- arv-get \Q$docker_locator$docker_stream/$docker_hash.tar\E | $docker_bin load
419
+ if $docker_bin images -q --no-trunc --all | grep -qxF \Q$docker_hash\E; then
420
+ exit 0
421
+ fi
422
+ declare -a exit_codes=("\${PIPESTATUS[@]}")
423
+ if [ 0 != "\${exit_codes[0]}" ]; then
424
+ exit "\${exit_codes[0]}" # `docker images` failed
425
+ elif [ 1 != "\${exit_codes[1]}" ]; then
426
+ exit "\${exit_codes[1]}" # `grep` encountered an error
427
+ else
428
+ # Everything worked fine, but grep didn't find the image on this host.
429
+ arv-get \Q$docker_locator$docker_stream/$docker_hash.tar\E | $docker_bin load
421
430
  fi
422
431
  };
423
432
 
@@ -853,9 +862,10 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
853
862
  .q{&& SWAP=$(awk '($1 == "SwapTotal:"){print $2}' </proc/meminfo) }
854
863
  ."&& MEMLIMIT=\$(( (\$MEM * 95) / ($ENV{CRUNCH_NODE_SLOTS} * 100) )) "
855
864
  ."&& let SWAPLIMIT=\$MEMLIMIT+\$SWAP "
856
- ."&& if which crunchrunner >/dev/null ; then VOLUME_CRUNCHRUNNER=\"--volume=\$(which crunchrunner):/usr/local/bin/crunchrunner\" ; fi "
857
- ."&& if test -f /etc/ssl/certs/ca-certificates.crt ; then VOLUME_CERTS=\"--volume=/etc/ssl/certs/ca-certificates.crt:/etc/arvados/ca-certificates.crt\" ; fi "
858
- ."&& if test -f /etc/pki/tls/certs/ca-bundle.crt ; then VOLUME_CERTS=\"--volume=/etc/pki/tls/certs/ca-bundle.crt:/etc/arvados/ca-certificates.crt\" ; fi ";
865
+ .q{&& declare -a VOLUMES=() }
866
+ .q{&& if which crunchrunner >/dev/null ; then VOLUMES+=("--volume=$(which crunchrunner):/usr/local/bin/crunchrunner") ; fi }
867
+ .q{&& if test -f /etc/ssl/certs/ca-certificates.crt ; then VOLUMES+=("--volume=/etc/ssl/certs/ca-certificates.crt:/etc/arvados/ca-certificates.crt") ; }
868
+ .q{elif test -f /etc/pki/tls/certs/ca-bundle.crt ; then VOLUMES+=("--volume=/etc/pki/tls/certs/ca-bundle.crt:/etc/arvados/ca-certificates.crt") ; fi };
859
869
 
860
870
  $command .= "&& exec arv-mount --read-write --mount-by-pdh=by_pdh --mount-tmp=tmp --crunchstat-interval=10 --allow-other $arv_file_cache \Q$keep_mnt\E --exec ";
861
871
  $ENV{TASK_KEEPMOUNT} = "$keep_mnt/by_pdh";
@@ -922,7 +932,7 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
922
932
 
923
933
  # Bind mount the crunchrunner binary and host TLS certificates file into
924
934
  # the container.
925
- $command .= "\"\$VOLUME_CRUNCHRUNNER\" \"\$VOLUME_CERTS\" ";
935
+ $command .= '"${VOLUMES[@]}" ';
926
936
 
927
937
  while (my ($env_key, $env_val) = each %ENV)
928
938
  {
@@ -1152,13 +1162,6 @@ sub reapchildren
1152
1162
  . $slot[$proc{$pid}->{slot}]->{cpu});
1153
1163
  my $jobstepidx = $proc{$pid}->{jobstepidx};
1154
1164
 
1155
- if (!WIFEXITED($childstatus))
1156
- {
1157
- # child did not exit (may be temporarily stopped)
1158
- Log ($jobstepidx, "child $pid did not actually exit in reapchildren, ignoring for now.");
1159
- next;
1160
- }
1161
-
1162
1165
  $children_reaped++;
1163
1166
  my $elapsed = time - $proc{$pid}->{time};
1164
1167
  my $Jobstep = $jobstep[$jobstepidx];
@@ -1466,6 +1469,9 @@ sub readfrompipes
1466
1469
  sub preprocess_stderr
1467
1470
  {
1468
1471
  my $jobstepidx = shift;
1472
+ # slotindex is only defined for children running Arvados job tasks.
1473
+ # Be prepared to handle the undef case (for setup srun calls, etc.).
1474
+ my $job_slot_index = $jobstep[$jobstepidx]->{slotindex};
1469
1475
 
1470
1476
  while ($jobstep[$jobstepidx]->{stderr} =~ /^(.*?)\n/) {
1471
1477
  my $line = $1;
@@ -1475,19 +1481,16 @@ sub preprocess_stderr
1475
1481
  # whoa.
1476
1482
  $main::please_freeze = 1;
1477
1483
  }
1478
- elsif (!exists $jobstep[$jobstepidx]->{slotindex}) {
1479
- # Skip the following tempfail checks if this srun proc isn't
1480
- # attached to a particular worker slot.
1481
- }
1482
1484
  elsif ($line =~ /srun: error: (Node failure on|Aborting, .*\bio error\b)/) {
1483
- my $job_slot_index = $jobstep[$jobstepidx]->{slotindex};
1484
- $slot[$job_slot_index]->{node}->{fail_count}++;
1485
1485
  $jobstep[$jobstepidx]->{tempfail} = 1;
1486
- ban_node_by_slot($job_slot_index);
1486
+ if (defined($job_slot_index)) {
1487
+ $slot[$job_slot_index]->{node}->{fail_count}++;
1488
+ ban_node_by_slot($job_slot_index);
1489
+ }
1487
1490
  }
1488
1491
  elsif ($line =~ /srun: error: (Unable to create job step|.*: Communication connection failure)/) {
1489
1492
  $jobstep[$jobstepidx]->{tempfail} = 1;
1490
- ban_node_by_slot($jobstep[$jobstepidx]->{slotindex});
1493
+ ban_node_by_slot($job_slot_index) if (defined($job_slot_index));
1491
1494
  }
1492
1495
  elsif ($line =~ /\bKeep(Read|Write|Request)Error:/) {
1493
1496
  $jobstep[$jobstepidx]->{tempfail} = 1;
@@ -1977,6 +1980,11 @@ sub srun_sync
1977
1980
  delete $reader{$jobstepidx};
1978
1981
 
1979
1982
  my $j = pop @jobstep;
1983
+ # If the srun showed signs of tempfail, ensure the caller treats that as a
1984
+ # failure case.
1985
+ if ($main::please_freeze || $j->{tempfail}) {
1986
+ $exited ||= 255;
1987
+ }
1980
1988
  return ($exited, $j->{stdout_captured}, $j->{stderr_captured});
1981
1989
  }
1982
1990
 
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.20160331222945
4
+ version: 0.1.20160502182247
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arvados Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: arvados
@@ -178,7 +178,7 @@ dependencies:
178
178
  - - "<"
179
179
  - !ruby/object:Gem::Version
180
180
  version: 1.0.0
181
- description: Arvados command line tools, git commit 49743c080265b270693154d7a327d0433b0a7dbe
181
+ description: Arvados command line tools, git commit 4c360c5a3a9564f584dac973810059d2d45d08ef
182
182
  email: gem-dev@curoverse.com
183
183
  executables:
184
184
  - arv