projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '3212-pipeline-no-reuse' closes #3212
[arvados.git]
/
sdk
/
cli
/
bin
/
crunch-job
diff --git
a/sdk/cli/bin/crunch-job
b/sdk/cli/bin/crunch-job
index ad4330313e64ae058badd4497c05e15086bdd3ff..06b3da99a9929823bdc6b91ca4d315bb46878bc0 100755
(executable)
--- a/
sdk/cli/bin/crunch-job
+++ b/
sdk/cli/bin/crunch-job
@@
-499,16
+499,17
@@
if (!$have_slurm)
# If this job requires a Docker image, install that.
my $docker_bin = "/usr/bin/docker.io";
# If this job requires a Docker image, install that.
my $docker_bin = "/usr/bin/docker.io";
-my ($docker_locator, $docker_hash);
+my ($docker_locator, $docker_
stream, $docker_
hash);
if ($docker_locator = $Job->{docker_image_locator}) {
if ($docker_locator = $Job->{docker_image_locator}) {
-
$docker_hash = find_docker_hash
($docker_locator);
+
($docker_stream, $docker_hash) = find_docker_image
($docker_locator);
if (!$docker_hash)
{
croak("No Docker image hash found from locator $docker_locator");
}
if (!$docker_hash)
{
croak("No Docker image hash found from locator $docker_locator");
}
+ $docker_stream =~ s/^\.//;
my $docker_install_script = qq{
if ! $docker_bin images -q --no-trunc | grep -qxF \Q$docker_hash\E; then
my $docker_install_script = qq{
if ! $docker_bin images -q --no-trunc | grep -qxF \Q$docker_hash\E; then
- arv-get \Q$docker_locator/$docker_hash.tar\E | $docker_bin load
+ arv-get \Q$docker_locator
$docker_stream
/$docker_hash.tar\E | $docker_bin load
fi
};
my $docker_pid = fork();
fi
};
my $docker_pid = fork();
@@
-1466,18
+1467,19
@@
sub must_lock_now
}
}
}
}
-sub find_docker_hash {
- # Given a Keep locator, return the hash of the image inside it.
+sub find_docker_image {
+ # Given a Keep locator, check to see if it contains a Docker image.
+ # If so, return its stream name and Docker hash.
+ # If not, return undef for both values.
my $locator = shift;
my $locator = shift;
- my $docker_hash;
if (my $image = $arv->{collections}->{get}->execute(uuid => $locator)) {
my @file_list = @{$image->{files}};
if ((scalar(@file_list) == 1) &&
($file_list[0][1] =~ /^([0-9A-Fa-f]{64})\.tar$/)) {
if (my $image = $arv->{collections}->{get}->execute(uuid => $locator)) {
my @file_list = @{$image->{files}};
if ((scalar(@file_list) == 1) &&
($file_list[0][1] =~ /^([0-9A-Fa-f]{64})\.tar$/)) {
-
$docker_hash = $1
;
+
return ($file_list[0][0], $1)
;
}
}
}
}
- return
$docker_hash
;
+ return
(undef, undef)
;
}
__DATA__
}
__DATA__