summaryrefslogtreecommitdiffstats
path: root/lava-slave-base
diff options
context:
space:
mode:
Diffstat (limited to 'lava-slave-base')
-rw-r--r--lava-slave-base/Dockerfile44
-rw-r--r--lava-slave-base/scripts/lava-slave98
-rwxr-xr-xlava-slave-base/scripts/start.sh46
-rwxr-xr-xlava-slave-base/scripts/stop.sh3
4 files changed, 191 insertions, 0 deletions
diff --git a/lava-slave-base/Dockerfile b/lava-slave-base/Dockerfile
new file mode 100644
index 0000000..17286ca
--- /dev/null
+++ b/lava-slave-base/Dockerfile
@@ -0,0 +1,44 @@
+FROM bitnami/minideb:stretch
+
+RUN apt-get update
+
+# e2fsprogs is for libguestfs
+RUN \
+ echo 'lava-server lava-server/instance-name string lava-slave-instance' | debconf-set-selections && \
+ echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
+ echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \
+ DEBIAN_FRONTEND=noninteractive apt-get -y install \
+ locales \
+ vim \
+ sudo \
+ python-setproctitle \
+ tftpd-hpa \
+ u-boot-tools \
+ device-tree-compiler \
+ qemu-system \
+ qemu-system-arm \
+ qemu-system-i386 \
+ xnbd-server \
+ e2fsprogs
+
+RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y install qemu-kvm ; fi
+
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install wget gnupg
+RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc
+RUN apt-key add production-repo.key.asc
+RUN echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list
+RUN apt-get clean && apt-get update
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher
+
+COPY scripts/lava-slave /etc/init.d/
+RUN chmod 755 /etc/init.d/lava-slave
+
+# Add services helper utilities to start and stop LAVA
+COPY scripts/stop.sh .
+COPY scripts/start.sh .
+
+RUN dpkg -l |grep lava
+
+EXPOSE 69/udp 80
+
+CMD /start.sh
diff --git a/lava-slave-base/scripts/lava-slave b/lava-slave-base/scripts/lava-slave
new file mode 100644
index 0000000..3ba00f7
--- /dev/null
+++ b/lava-slave-base/scripts/lava-slave
@@ -0,0 +1,98 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: lava-slave
+# Required-Start: $time
+# Required-Stop: $time
+# X-Stop-After: sendsigs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: lava-slave
+# Description: lava-slave
+### END INIT INFO
+
+#
+# Author: Corentin LABBE <clabbe@baylibre.com>
+#
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="lava-slave"
+NAME=lava-slave
+
+DAEMON=/usr/bin/lava-slave
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+MASTER_URL=tcp://localhost:5556
+LOGGER_URL=tcp://localhost:5555
+LOGLEVEL=DEBUG
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+[ -r /etc/lava-dispatcher/$NAME ] && . /etc/lava-dispatcher/$NAME
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # other if daemon could not be started or a failure occured
+ start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- --level $LOGLEVEL --master $MASTER_URL --socket-addr $LOGGER_URL $IPV6 $ENCRYPT $MASTER_CERT $SLAVE_CERT $HOSTNAME
+}
+
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # other if daemon could not be stopped or a failure occurred
+ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
+}
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0)
+ log_end_msg 0 ;;
+ 1) log_progress_msg "already started"
+ log_end_msg 0 ;;
+ *) log_end_msg 1 ;;
+ esac
+
+ ;;
+ stop)
+ log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_progress_msg "already stopped"
+ log_end_msg 0 ;;
+ *) log_end_msg 1 ;;
+ esac
+
+ ;;
+ restart|force-reload)
+ $0 stop
+ $0 start
+ ;;
+ try-restart)
+ $0 status >/dev/null 2>&1 && $0 restart
+ ;;
+ status)
+ status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $?
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|try-restart|status}" >&2
+ exit 3
+ ;;
+esac
+
+:
+
diff --git a/lava-slave-base/scripts/start.sh b/lava-slave-base/scripts/start.sh
new file mode 100755
index 0000000..21b6903
--- /dev/null
+++ b/lava-slave-base/scripts/start.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+/setup.sh || exit $?
+
+# Set LAVA Master IP
+if [[ -n "$LAVA_MASTER" ]]; then
+ sed -i -e "s/{LAVA_MASTER}/$LAVA_MASTER/g" /etc/lava-dispatcher/lava-slave
+fi
+
+service tftpd-hpa start || exit 4
+if [ -s /etc/ser2net.conf ];then
+ service ser2net start || exit 7
+fi
+
+touch /var/run/conmux-registry
+/usr/sbin/conmux-registry 63000 /var/run/conmux-registry&
+sleep 2
+for item in $(ls /etc/conmux/*cf)
+do
+ echo "Add $item"
+ # On some OS, the rights/user from host are not duplicated on guest
+ grep -o '/dev/[a-zA-Z0-9_-]*' $item | xargs chown uucp
+ /usr/sbin/conmux $item &
+done
+
+HAVE_SCREEN=0
+while read screenboard
+do
+ echo "Start screen for $screenboard"
+ TERM=xterm screen -d -m -S $screenboard /dev/$screenboard 115200 -ixoff -ixon || exit 9
+ HAVE_SCREEN=1
+done < /root/lava-screen.conf
+if [ $HAVE_SCREEN -eq 1 ];then
+ sed -i 's,UsePAM.*yes,UsePAM no,' /etc/ssh/sshd_config || exit 10
+ service ssh start || exit 11
+fi
+
+
+# start an http file server for boot/transfer_overlay support
+(cd /var/lib/lava/dispatcher; python -m SimpleHTTPServer 80) &
+
+# FIXME lava-slave does not run if old pid is present
+rm -f /var/run/lava-slave.pid
+service lava-slave start || exit 5
+
+sleep 3650d
diff --git a/lava-slave-base/scripts/stop.sh b/lava-slave-base/scripts/stop.sh
new file mode 100755
index 0000000..0f18456
--- /dev/null
+++ b/lava-slave-base/scripts/stop.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+service tftpd-hpa stop
+service lava-slave stop