arvados-cli 0.1.20151015194711 → 0.1.20151023190001
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/crunch-job +54 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba224c6c0738da9111348f7b9bbefa056cc146c1
|
4
|
+
data.tar.gz: cce922c27376ab4477fa5cdd4158d88bdd16414b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1770331e2ae4aba0bafb44b7ad6f9de4b0655f7e7bb30781339c8395bfbcd9ff37cd5d878790784b1be27dd360c72c15311f1ae803b25d28b2685c2290dc7390
|
7
|
+
data.tar.gz: 35c40d6695d4081ab0b6307d23e6edffe9bcab88805dc529262fcef85900b2e4e5bd2f3f383cffc97d563c9ecbc2e5a36f2132fa54969ef2e7d6eaa1ddfbb7a2
|
data/bin/crunch-job
CHANGED
@@ -411,7 +411,7 @@ if (!defined $no_clear_tmp) {
|
|
411
411
|
}
|
412
412
|
|
413
413
|
# If this job requires a Docker image, install that.
|
414
|
-
my ($docker_locator, $docker_stream, $docker_hash, $docker_limitmem);
|
414
|
+
my ($docker_locator, $docker_stream, $docker_hash, $docker_limitmem, $dockeruserarg);
|
415
415
|
if ($docker_locator = $Job->{docker_image_locator}) {
|
416
416
|
($docker_stream, $docker_hash) = find_docker_image($docker_locator);
|
417
417
|
if (!$docker_hash)
|
@@ -449,6 +449,42 @@ fi
|
|
449
449
|
{fork => 1});
|
450
450
|
$docker_limitmem = ($? == 0);
|
451
451
|
|
452
|
+
# Find a non-root Docker user to use.
|
453
|
+
# Tries the default user for the container, then 'crunch', then 'nobody',
|
454
|
+
# testing for whether the actual user id is non-zero. This defends against
|
455
|
+
# mistakes but not malice, but we intend to harden the security in the future
|
456
|
+
# so we don't want anyone getting used to their jobs running as root in their
|
457
|
+
# Docker containers.
|
458
|
+
my @tryusers = ("", "crunch", "nobody");
|
459
|
+
foreach my $try_user (@tryusers) {
|
460
|
+
my $try_user_arg;
|
461
|
+
if ($try_user eq "") {
|
462
|
+
Log(undef, "Checking if container default user is not UID 0");
|
463
|
+
$try_user_arg = "";
|
464
|
+
} else {
|
465
|
+
Log(undef, "Checking if user '$try_user' is not UID 0");
|
466
|
+
$try_user_arg = "--user=$try_user";
|
467
|
+
}
|
468
|
+
srun(["srun", "--nodelist=" . $node[0]],
|
469
|
+
["/bin/sh", "-ec",
|
470
|
+
"a=`$docker_bin run --rm $try_user_arg $docker_hash id --user` && " .
|
471
|
+
" test \$a -ne 0"],
|
472
|
+
{fork => 1});
|
473
|
+
if ($? == 0) {
|
474
|
+
$dockeruserarg = $try_user_arg;
|
475
|
+
if ($try_user eq "") {
|
476
|
+
Log(undef, "Container will run with default user");
|
477
|
+
} else {
|
478
|
+
Log(undef, "Container will run with $dockeruserarg");
|
479
|
+
}
|
480
|
+
last;
|
481
|
+
}
|
482
|
+
}
|
483
|
+
|
484
|
+
if (!defined $dockeruserarg) {
|
485
|
+
croak("Could not find a user in container that is not UID 0 (tried default user, @tryusers) or there was a problem running 'id' in the container.");
|
486
|
+
}
|
487
|
+
|
452
488
|
if ($Job->{arvados_sdk_version}) {
|
453
489
|
# The job also specifies an Arvados SDK version. Add the SDKs to the
|
454
490
|
# tar file for the build script to install.
|
@@ -844,6 +880,9 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
844
880
|
qw(-n1 -c1 -N1 -D), $ENV{'TMPDIR'},
|
845
881
|
"--job-name=$job_id.$id.$$",
|
846
882
|
);
|
883
|
+
|
884
|
+
my $stdbuf = " stdbuf --output=0 --error=0 ";
|
885
|
+
|
847
886
|
my $command =
|
848
887
|
"if [ -e $ENV{TASK_WORK} ]; then rm -rf $ENV{TASK_WORK}; fi; "
|
849
888
|
."mkdir -p $ENV{CRUNCH_TMP} $ENV{JOB_WORK} $ENV{TASK_WORK} $ENV{TASK_KEEPMOUNT} "
|
@@ -859,7 +898,7 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
859
898
|
{
|
860
899
|
my $cidfile = "$ENV{CRUNCH_TMP}/$Jobstep->{arvados_task}->{uuid}-$Jobstep->{failures}.cid";
|
861
900
|
$command .= "crunchstat -cgroup-root=/sys/fs/cgroup -cgroup-parent=docker -cgroup-cid=$cidfile -poll=10000 ";
|
862
|
-
$command .= "$docker_bin run --rm=true --attach=stdout --attach=stderr --attach=stdin -i
|
901
|
+
$command .= "$docker_bin run --rm=true --attach=stdout --attach=stderr --attach=stdin -i \Q$dockeruserarg\E --cidfile=$cidfile --sig-proxy ";
|
863
902
|
# We only set memory limits if Docker lets us limit both memory and swap.
|
864
903
|
# Memory limits alone have been supported longer, but subprocesses tend
|
865
904
|
# to get SIGKILL if they exceed that without any swap limit set.
|
@@ -917,12 +956,22 @@ for (my $todo_ptr = 0; $todo_ptr <= $#jobstep_todo; $todo_ptr ++)
|
|
917
956
|
}
|
918
957
|
$command .= "--env=\QHOME=$ENV{HOME}\E ";
|
919
958
|
$command .= "\Q$docker_hash\E ";
|
920
|
-
|
921
|
-
|
959
|
+
|
960
|
+
if ($Job->{arvados_sdk_version}) {
|
961
|
+
$command .= $stdbuf;
|
962
|
+
$command .= "perl - \Q$ENV{CRUNCH_SRC}/crunch_scripts/$Job->{script}\E";
|
963
|
+
} else {
|
964
|
+
$command .= "/bin/sh -c \'mkdir -p \"$ENV{JOB_WORK}\" \"$ENV{TASK_WORK}\" && " .
|
965
|
+
"if which stdbuf >/dev/null ; then " .
|
966
|
+
" exec $stdbuf \Q$ENV{CRUNCH_SRC}/crunch_scripts/$Job->{script}\E ;" .
|
967
|
+
" else " .
|
968
|
+
" exec \Q$ENV{CRUNCH_SRC}/crunch_scripts/$Job->{script}\E ;" .
|
969
|
+
" fi\'";
|
970
|
+
}
|
922
971
|
} else {
|
923
972
|
# Non-docker run
|
924
973
|
$command .= "crunchstat -cgroup-root=/sys/fs/cgroup -poll=10000 ";
|
925
|
-
$command .=
|
974
|
+
$command .= $stdbuf;
|
926
975
|
$command .= "perl - $ENV{CRUNCH_SRC}/crunch_scripts/" . $Job->{"script"};
|
927
976
|
}
|
928
977
|
|
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.
|
4
|
+
version: 0.1.20151023190001
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-23 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
|
181
|
+
description: Arvados command line tools, git commit dbf51c6ab20fab93c3f71910c13de9d4a0501bad
|
182
182
|
email: gem-dev@curoverse.com
|
183
183
|
executables:
|
184
184
|
- arv
|