summaryrefslogtreecommitdiffstats
path: root/core/modules/run-virt-docker
diff options
context:
space:
mode:
authorralph isenmann2021-08-13 10:49:32 +0200
committerralph isenmann2021-08-13 11:03:40 +0200
commitf967d493f53587566df2ffb7aaea699eeedb26e2 (patch)
treece5df34ee35f78eacd8a1ba06a081eec1302af50 /core/modules/run-virt-docker
parent[vbox-src] explicit '--system' option (diff)
downloadmltk-f967d493f53587566df2ffb7aaea699eeedb26e2.tar.gz
mltk-f967d493f53587566df2ffb7aaea699eeedb26e2.tar.xz
mltk-f967d493f53587566df2ffb7aaea699eeedb26e2.zip
[run-virt-docker] update plugin
- pull images directly if an image repository is specified - docker load directly into daemon, use pv (pipeview) to display transfere progress - use specified command for container run (CONTAINER_RUN_COMMAND)
Diffstat (limited to 'core/modules/run-virt-docker')
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh5
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf2
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init34
-rw-r--r--core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc6
-rwxr-xr-xcore/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include2
-rw-r--r--core/modules/run-virt-docker/module.conf2
-rw-r--r--core/modules/run-virt-docker/module.conf.ubuntu2
7 files changed, 38 insertions, 15 deletions
diff --git a/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh b/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh
index f5db36e4..5490380a 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh
+++ b/core/modules/run-virt-docker/data/opt/openslx/pam/hooks/auth-final-exec.d/30-add-to-docker.sh
@@ -8,8 +8,9 @@ DOCKER_TMP="/tmp/docker"
[ -e $DOCKER_TMP ] && rm -rf -- $DOCKER_TMP
[ ! -e $DOCKER_TMP ] && mkdir -p $DOCKER_TMP && chmod 0777 $DOCKER_TMP
-# TODO Check if same user logs on to the system.
-# if prev_user != curr_user then delete existing /tmp/virt/docker/prev_user_uid:prev_user_gid/
+# remove all leftovers in docker_home from previous users
+DOCKER_HOME="/tmp/virt/docker"
+rm -r -- "$DOCKER_HOME"/*
# This changes the subuid and subgid for the dockremap(user) to the current user and restards the docker daemon.
# Because off this change in the docker daemon, for each userns will be a directory under /tmp/virt/docker/
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
index ae6cb288..fd398929 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/.bwlp-user-conf
@@ -16,6 +16,8 @@ export RUNSCRIPT=""
export VM_DISKFILE_RO=""
+export CONTAINER_REPO_NAME=""
export CONTAINER_BUILD_CONTEXT=""
export CONTAINER_IMAGE_NAME=""
export CONTAINER_RUN_OPTIONS=""
+export CONTAINER_RUN_COMMAND=""
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
index 5f52a16d..ea37582b 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/docker-init
@@ -16,15 +16,16 @@ load_image () {
else
# In this case a pre build container image (tar archive from "docker save ...")
# will be loaded into the local docker daemon.
- echo "+ load container image"
- # create TMP_FILE for image
+ echo "+ load container image... (please be patient)"
+ # create TMP_FILE for docker load output
local TMP_FILE=$(mktemp)
- # write currently existing image ids into TMP_FILE
- cp $VM_DISKFILE_RO $TMP_FILE
- # recieve the RepoTag form the manifest.json inside the tar
- local REPO_TAG=$(tar -axf $TMP_FILE manifest.json -O | jq -r '.[].RepoTags[0]')
+
+ # TODO no progress output for docker load
# load image from tar file
- docker load --input $TMP_FILE
+ pv -cN "Image Transfer" < $VM_DISKFILE_RO | docker load -q > $TMP_FILE
+ echo "+ $(cat $TMP_FILE)"
+
+ local REPO_TAG=$(head -n 1 $TMP_FILE | cut -d" " -f3)
# rename image
docker tag "$REPO_TAG" "$CONTAINER_IMAGE_NAME"
rm -f -- "$TMP_FILE"
@@ -35,8 +36,18 @@ load_image () {
main ()
{
- # TODO only check by image name could be bad, images whith a same name could exist
+ if [[ -n $CONTAINER_REPO_NAME ]]; then
+ echo "pull container $CONTAINER_REPO_NAME"
+ docker pull $CONTAINER_REPO_NAME
+
+ [ "$?" != 0 ] && echo ".. docker pull not successful ...giving up..." && exit -1
+
+ CONTAINER_IMAGE_NAME="$CONTAINER_REPO_NAME"
+ fi
+
+ # TODO only check by image name could be bad, images whith a same name could exist
+
# check if the container_image_name already loaded in docker daemon
if [[ -z $(docker images $CONTAINER_IMAGE_NAME -q) ]]; then
echo "+ Image unknown by docker daemon ..."
@@ -54,8 +65,8 @@ main ()
fi
echo "+ start container..."
- echo "+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME"
- docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME
+ echo "+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME $CONTAINER_RUN_COMMAND"
+ docker run $CONTAINER_RUN_OPTIONS $CONTAINER_BIND_MOUNT_STRING $CONTAINER_IMAGE_NAME $CONTAINER_RUN_COMMAND
if [[ "$?" != "0" ]]; then
echo "...container start failed!...giving up..."
@@ -64,7 +75,8 @@ main ()
if [[ -n $RUNSCRIPT ]]; then
echo "+ execute user runscript"
- /bin/bash $RUNSCRIPT
+ NOHUP_TMP=$(mktemp)
+ nohup /bin/bash $RUNSCRIPT > "$NOHUP_TMP" & tail -f "$NOHUP_TMP"
fi
}
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
index 99ba4580..4751880a 100644
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/includes/init_user_context.inc
@@ -8,6 +8,7 @@ function process_container_meta()
export CONTAINER_IMAGE_NAME=$( jq -r '.image_name' "$CONFDIR/container_meta.json" | \
tr '[:upper:]' '[:lower:]' | sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g' | sed -e 's/[[:space:]]/_/g')
export CONTAINER_RUN_OPTIONS=$( jq -r '.run_options' "$CONFDIR/container_meta.json" )
+ export CONTAINER_RUN_COMMAND=$( jq -r '.run_command' "$CONFDIR/container_meta.json" )
# set build context
@@ -18,6 +19,9 @@ function process_container_meta()
elif [[ "$build_context_method" == "1" ]]; then
writelog "+ container_build_context: git url"
export CONTAINER_BUILD_CONTEXT=$( jq -r '.build_context_url' "$CONFDIR/container_meta.json" )
+ elif [[ "$build_context_method" == "2" ]]; then
+ writelog "+ pull public container"
+ export CONTAINER_REPO_NAME=$( jq -r '.image_repo' "$CONFDIR/container_meta.json" )
else
writelog "+ no proper build_context_method!"
cleanexit 1
@@ -62,9 +66,11 @@ function init_user_container_config()
sed -i "s#export VM_DISKFILE_RO=".*"#export VM_DISKFILE_RO=\"$VM_DISKFILE_RO\"#" "$USER_CONTAINER_CONFIG"
+ sed -i "s#export CONTAINER_REPO_NAME=".*"#export CONTAINER_REPO_NAME=\"$CONTAINER_REPO_NAME\"#" "$USER_CONTAINER_CONFIG"
sed -i "s#export CONTAINER_BUILD_CONTEXT=".*"#export CONTAINER_BUILD_CONTEXT=\"$CONTAINER_BUILD_CONTEXT\"#" "$USER_CONTAINER_CONFIG"
sed -i "s#export CONTAINER_IMAGE_NAME=".*"#export CONTAINER_IMAGE_NAME=\"$CONTAINER_IMAGE_NAME\"#" "$USER_CONTAINER_CONFIG"
sed -i "s#export CONTAINER_RUN_OPTIONS=".*"#export CONTAINER_RUN_OPTIONS=\"$CONTAINER_RUN_OPTIONS\"#" "$USER_CONTAINER_CONFIG"
+ sed -i "s#export CONTAINER_RUN_COMMAND=".*"#export CONTAINER_RUN_COMMAND=\"$CONTAINER_RUN_COMMAND\"#" "$USER_CONTAINER_CONFIG"
local RUNSCRIPT="$CONFDIR/runscript"
# check if runscript file contains more than default line "ext=;visibility=1;soundMuted=-1"
diff --git a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include
index 610c7814..55f89e01 100755
--- a/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include
+++ b/core/modules/run-virt-docker/data/opt/openslx/vmchooser/plugins/docker/run-virt.include
@@ -8,7 +8,7 @@
# See https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
#
# If you have any feedback please consult https://bwlehrpool.de and
-# send your feedback to support@bwlehrpool.de.
+# send your feedback to bwlehrpool@hs-offenburg.de.
#
# General information about bwLehrpool can be found at https://bwlehrpool.de
#
diff --git a/core/modules/run-virt-docker/module.conf b/core/modules/run-virt-docker/module.conf
index 8811668a..749da396 100644
--- a/core/modules/run-virt-docker/module.conf
+++ b/core/modules/run-virt-docker/module.conf
@@ -1,4 +1,4 @@
#!/bin/bash
-REQUIRED_BINARIES=""
+REQUIRED_BINARIES="pv"
REQUIRED_LIBRARIES=""
REQUIRED_DIRECTORIES=""
diff --git a/core/modules/run-virt-docker/module.conf.ubuntu b/core/modules/run-virt-docker/module.conf.ubuntu
new file mode 100644
index 00000000..f2880ae5
--- /dev/null
+++ b/core/modules/run-virt-docker/module.conf.ubuntu
@@ -0,0 +1,2 @@
+#!/bin/bash
+REQUIRED_INSTALLED_PACKAGES="pv"