arvados-cli 0.1.20140616132754 → 0.1.20140616152753
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/crunch-job +33 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2ea85d71466309df46d656ca0a395e638fd1716
|
4
|
+
data.tar.gz: 3246cf8fd176c5061e8e1df59458d787065aa845
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a843a87259742e70da986e24362eff16c2a21a6fe3348f527c0316d6c84288ab8f945831f72f7b7ec60cbf579e58729655be56312f205a334d196a20374c7346
|
7
|
+
data.tar.gz: 00d747bcd22b0632aa128d35917c60e2c9bd8d83cee5e568376f6827fc1c19b15e936267cdf59f6d090836f3ec690aa259d65316b59ac99dadadacef5dd05c5e
|
data/bin/crunch-job
CHANGED
@@ -501,13 +501,23 @@ if (!$have_slurm)
|
|
501
501
|
|
502
502
|
# If this job requires a Docker image, install that.
|
503
503
|
my $docker_bin = "/usr/bin/docker.io";
|
504
|
-
my $
|
505
|
-
if ($
|
504
|
+
my ($docker_locator, $docker_hash);
|
505
|
+
if ($docker_locator = $Job->{docker_image_locator}) {
|
506
|
+
$docker_hash = find_docker_hash($docker_locator);
|
507
|
+
if (!$docker_hash)
|
508
|
+
{
|
509
|
+
croak("No Docker image hash found from locator $docker_locator");
|
510
|
+
}
|
511
|
+
my $docker_install_script = qq{
|
512
|
+
if ! $docker_bin images -q --no-trunc | grep -qxF \Q$docker_hash\E; then
|
513
|
+
arv-get \Q$docker_locator/$docker_hash.tar\E | $docker_bin load
|
514
|
+
fi
|
515
|
+
};
|
506
516
|
my $docker_pid = fork();
|
507
517
|
if ($docker_pid == 0)
|
508
518
|
{
|
509
|
-
srun (["srun", "--nodelist=" . join('
|
510
|
-
[
|
519
|
+
srun (["srun", "--nodelist=" . join(',', @node)],
|
520
|
+
["/bin/sh", "-ec", $docker_install_script]);
|
511
521
|
exit ($?);
|
512
522
|
}
|
513
523
|
while (1)
|
@@ -516,11 +526,9 @@ if ($docker_image) {
|
|
516
526
|
freeze_if_want_freeze ($docker_pid);
|
517
527
|
select (undef, undef, undef, 0.1);
|
518
528
|
}
|
519
|
-
|
520
|
-
# Ignore that error. We'll see what happens when we try to run later.
|
521
|
-
if (($? != 0) && ($docker_image !~ /^[0-9a-fA-F]{5,64}$/))
|
529
|
+
if ($? != 0)
|
522
530
|
{
|
523
|
-
croak("Installing Docker image $
|
531
|
+
croak("Installing Docker image from $docker_locator returned exit code $?");
|
524
532
|
}
|
525
533
|
}
|
526
534
|
|
@@ -639,7 +647,7 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
639
647
|
"&& perl -";
|
640
648
|
}
|
641
649
|
$command .= "&& exec arv-mount --allow-other $ENV{TASK_KEEPMOUNT} --exec ";
|
642
|
-
if ($
|
650
|
+
if ($docker_hash)
|
643
651
|
{
|
644
652
|
$command .= "crunchstat -cgroup-root=/sys/fs/cgroup -cgroup-parent=docker -cgroup-cid=$ENV{TASK_WORK}/docker.cid -poll=10000 ";
|
645
653
|
$command .= "$docker_bin run -i -a stdin -a stdout -a stderr --cidfile=$ENV{TASK_WORK}/docker.cid ";
|
@@ -659,7 +667,7 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
659
667
|
$command .= "-e \Q$env_key=$env_val\E ";
|
660
668
|
}
|
661
669
|
}
|
662
|
-
$command .= "\Q$
|
670
|
+
$command .= "\Q$docker_hash\E ";
|
663
671
|
} else {
|
664
672
|
$command .= "crunchstat -cgroup-root=/sys/fs/cgroup -poll=10000 "
|
665
673
|
}
|
@@ -1437,6 +1445,21 @@ sub must_lock_now
|
|
1437
1445
|
}
|
1438
1446
|
}
|
1439
1447
|
|
1448
|
+
sub find_docker_hash {
|
1449
|
+
# Given a Keep locator, search for a matching link to find the Docker hash
|
1450
|
+
# of the stored image.
|
1451
|
+
my $locator = shift;
|
1452
|
+
my $links_result = $arv->{links}->{list}->execute(
|
1453
|
+
filters => [["head_uuid", "=", $locator],
|
1454
|
+
["link_class", "=", "docker_image_hash"]],
|
1455
|
+
limit => 1);
|
1456
|
+
my $docker_hash;
|
1457
|
+
foreach my $link (@{$links_result->{items}}) {
|
1458
|
+
$docker_hash = lc($link->{name});
|
1459
|
+
}
|
1460
|
+
return $docker_hash;
|
1461
|
+
}
|
1462
|
+
|
1440
1463
|
__DATA__
|
1441
1464
|
#!/usr/bin/perl
|
1442
1465
|
|
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.20140616152753
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
@@ -146,7 +146,7 @@ dependencies:
|
|
146
146
|
- - "~>"
|
147
147
|
- !ruby/object:Gem::Version
|
148
148
|
version: '0.8'
|
149
|
-
description: This is the Arvados SDK CLI gem, git revision
|
149
|
+
description: This is the Arvados SDK CLI gem, git revision 439e1417599cad4e65d506a11b583a6ebabc7604
|
150
150
|
email: gem-dev@curoverse.com
|
151
151
|
executables:
|
152
152
|
- arv
|