aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Hilman <khilman@baylibre.com>2019-09-04 09:24:52 -0700
committerGitHub <noreply@github.com>2019-09-04 09:24:52 -0700
commitb62cce369977403b2b2fa5e6d7c0af9d71058364 (patch)
tree63f92d5c2c23a1842e65154129d74a26838bc0ce
parentc0be09b6ddfd855eeadb3628a481f9c0bb4e26b7 (diff)
parent57bfd7462de249be794db3d015e7aa8177891863 (diff)
Merge pull request #99 from montjoie/2019.07
2019.07
-rw-r--r--README.md3
-rw-r--r--lava-master-base/99-stretch-backports43
-rw-r--r--lava-master-base/Dockerfile62
-rw-r--r--lava-master-base/scripts/lava-logs97
-rw-r--r--lava-master-base/scripts/lava-master97
-rw-r--r--lava-master-base/scripts/lava-server-gunicorn99
-rw-r--r--lava-master-base/scripts/lava-slave98
-rwxr-xr-xlava-master-base/scripts/start.sh40
-rwxr-xr-xlava-master-base/scripts/stop.sh10
-rw-r--r--lava-master/Dockerfile18
-rwxr-xr-xlava-master/entrypoint.d/01_setup.sh (renamed from lava-master/scripts/setup.sh)1
-rwxr-xr-xlava-master/scripts/start.sh38
-rw-r--r--lava-slave-base/99-stretch-backports23
-rw-r--r--lava-slave-base/Dockerfile50
-rw-r--r--lava-slave-base/scripts/lava-slave98
-rwxr-xr-xlava-slave-base/scripts/stop.sh3
-rw-r--r--lava-slave/Dockerfile5
-rw-r--r--lava-slave/aliases/.empty0
-rwxr-xr-xlava-slave/scripts/setup.sh16
-rwxr-xr-xlava-slave/scripts/start.sh (renamed from lava-slave-base/scripts/start.sh)7
-rwxr-xr-xlavalab-gen.py30
21 files changed, 65 insertions, 773 deletions
diff --git a/README.md b/README.md
index 5b8b361..04e9b73 100644
--- a/README.md
+++ b/README.md
@@ -299,6 +299,9 @@ boards:
tags: (optional) List of tag to set on this device
- tag1
- tag2
+ aliases: (optional) List of aliases to set on the DEVICE TYPE.
+ - alias1
+ - alias2
user: (optional) Name of user owning the board (LAVA default is admin) user is exclusive with group
group: (optional) Name of group owning the board (no LAVA default) group is exclusive with user
# One of uart or connection_command must be choosen
diff --git a/lava-master-base/99-stretch-backports b/lava-master-base/99-stretch-backports
deleted file mode 100644
index 02491b1..0000000
--- a/lava-master-base/99-stretch-backports
+++ /dev/null
@@ -1,43 +0,0 @@
-Package: python3-requests
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: python3-chardet
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: python3-urllib3
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-common
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-dispatcher
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-server
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-dev
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-server-doc
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lavacli
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: python3-junit.xml
-Pin: release n=stretch-backports
-Pin-Priority: 500
diff --git a/lava-master-base/Dockerfile b/lava-master-base/Dockerfile
deleted file mode 100644
index ee7d47f..0000000
--- a/lava-master-base/Dockerfile
+++ /dev/null
@@ -1,62 +0,0 @@
-FROM bitnami/minideb:stretch
-
-RUN echo "deb http://deb.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list
-COPY 99-stretch-backports /etc/apt/preferences.d/
-
-RUN apt-get update
-
-# Install debian packages used by the container
-# Configure apache to run the lava server
-# Log the hostname used during install for the slave name
-RUN echo 'lava-server lava-server/instance-name string lava-docker-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
-
-RUN echo "APT::Install-Recommends false;" > /etc/apt/apt.conf.d/01norecommands
-
-# e2fsprogs is for libguestfs
-RUN DEBIAN_FRONTEND=noninteractive apt-get -y install \
- locales \
- postgresql \
- screen \
- sudo \
- wget \
- e2fsprogs \
- letsencrypt \
- apt-transport-https \
- gnupg \
- vim
-
-RUN wget https://apt.lavasoftware.org/lavasoftware.key.asc \
- && apt-key add lavasoftware.key.asc \
- && echo 'deb https://apt.lavasoftware.org/release stretch-backports main' > /etc/apt/sources.list.d/lava.list \
- && apt-get clean && apt-get update && apt-get -y upgrade
-
-RUN service postgresql start \
- && DEBIAN_FRONTEND=noninteractive apt-get -y install lava lava-server \
- && sudo -u postgres psql lavaserver -c "DELETE FROM lava_scheduler_app_worker WHERE lava_scheduler_app_worker.hostname = 'example.com';" \
- && service postgresql stop
-
-RUN a2enmod proxy \
- && a2enmod proxy_http \
- && a2dissite 000-default \
- && a2ensite lava-server
-
-# Add services helper utilities to start and stop LAVA
-COPY scripts/stop.sh .
-COPY scripts/start.sh .
-COPY scripts/lava-logs /etc/init.d/
-RUN chmod 755 /etc/init.d/lava-logs
-COPY scripts/lava-master /etc/init.d/
-RUN chmod 755 /etc/init.d/lava-master
-COPY scripts/lava-slave /etc/init.d/
-RUN chmod 755 /etc/init.d/lava-slave
-COPY scripts/lava-server-gunicorn /etc/init.d/
-RUN chmod 755 /etc/init.d/lava-server-gunicorn
-
-RUN dpkg -l | grep lava
-RUN dpkg -l | grep lava | sed 's,[[:space:]][[:space:]]*, ,g' | cut -d' ' -f3 | tr '+~' _
-
-EXPOSE 80 3079 5555 5556
-
-CMD /start.sh && while [ true ];do sleep 365d; done
diff --git a/lava-master-base/scripts/lava-logs b/lava-master-base/scripts/lava-logs
deleted file mode 100644
index 469679b..0000000
--- a/lava-master-base/scripts/lava-logs
+++ /dev/null
@@ -1,97 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: lava-logs
-# Required-Start: $time
-# Required-Stop: $time
-# X-Stop-After: sendsigs
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: lava-logs
-# Description: lava-logs
-### 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-logs"
-NAME=lava-logs
-LOGLEVEL=DEBUG
-
-DAEMON=/usr/bin/lava-server
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# 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-server/$NAME ] && . /etc/lava-server/$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 --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- manage lava-logs --level $LOGLEVEL $SOCKET $MASTER_SOCKET $IPV6 $ENCRYPT $MASTER_CERT $SLAVES_CERTS
-}
-
-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-master-base/scripts/lava-master b/lava-master-base/scripts/lava-master
deleted file mode 100644
index 3bd75aa..0000000
--- a/lava-master-base/scripts/lava-master
+++ /dev/null
@@ -1,97 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: lava-master
-# Required-Start: $time
-# Required-Stop: $time
-# X-Stop-After: sendsigs
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: lava-master
-# Description: lava-master
-### 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-master"
-NAME=lava-master
-LOGLEVEL=DEBUG
-
-DAEMON=/usr/bin/lava-server
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# 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-server/$NAME ] && . /etc/lava-server/$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 -- manage lava-master --level $LOGLEVEL $SOCKET $MASTER_SOCKET $IPV6 $ENCRYPT $MASTER_CERT $SLAVES_CERTS
-}
-
-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-master-base/scripts/lava-server-gunicorn b/lava-master-base/scripts/lava-server-gunicorn
deleted file mode 100644
index e8f1a52..0000000
--- a/lava-master-base/scripts/lava-server-gunicorn
+++ /dev/null
@@ -1,99 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: lava-server-gunicorn
-# Required-Start: $time
-# Required-Stop: $time
-# X-Stop-After: sendsigs
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: lava-server-gunicorn
-# Description: lava-server-gunicorn
-### 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-server-gunicorn"
-NAME=lava-server-gunicorn
-LOGLEVEL=DEBUG
-WORKERS=4
-LOGFILE=/var/log/lava-server/gunicorn.log
-RELOAD=
-DAEMON=/usr/bin/gunicorn3
-PIDFILE=/var/run/$NAME.pid
-SCRIPTNAME=/etc/init.d/$NAME
-
-# 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-server/$NAME ] && . /etc/lava-server/$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 --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- lava_server.wsgi --log-level $LOGLEVEL --log-file $LOGFILE -u lavaserver -g lavaserver --workers $WORKERS $RELOAD
-}
-
-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-master-base/scripts/lava-slave b/lava-master-base/scripts/lava-slave
deleted file mode 100644
index 3ba00f7..0000000
--- a/lava-master-base/scripts/lava-slave
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /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-master-base/scripts/start.sh b/lava-master-base/scripts/start.sh
deleted file mode 100755
index c34fe34..0000000
--- a/lava-master-base/scripts/start.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-postgres-ready () {
- echo "Waiting for lavaserver database to be active"
- while (( $(ps -ef | grep -v grep | grep postgres | grep lavaserver | wc -l) == 0 ))
- do
- echo -n "."
- sleep 1
- done
- echo
- echo "[ ok ] LAVA server ready"
-}
-
-start () {
- echo "Starting $1"
- if (( $(ps -ef | grep -v grep | grep -v add_device | grep -v dispatcher-config | grep "$1" | wc -l) > 0 ))
- then
- echo "$1 appears to be running"
- else
- service "$1" start
- fi
-}
-
-#remove lava-pid files incase the image is stored without first stopping the services
-rm -f /var/run/lava-*.pid 2> /dev/null
-
-/etc/init.d/postgresql start
-
-/setup.sh || exit $?
-
-start apache2 || exit $?
-start lava-logs || exit $?
-start lava-master || exit $?
-start lava-coordinator || exit $?
-start lava-slave || exit $?
-start lava-server-gunicorn || exit $?
-start tftpd-hpa || exit $?
-
-postgres-ready
-service apache2 reload #added after the website not running a few times on boot
diff --git a/lava-master-base/scripts/stop.sh b/lava-master-base/scripts/stop.sh
deleted file mode 100755
index 35d503f..0000000
--- a/lava-master-base/scripts/stop.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-service lava-master stop
-service lava-slave stop
-service lava-logs stop
-service lava-coordinator stop
-service lava-server-gunicorn stop
-service apache2 stop
-/etc/init.d/postgresql stop
-service tftpd-hpa stop
diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile
index 80da8fb..625ebf1 100644
--- a/lava-master/Dockerfile
+++ b/lava-master/Dockerfile
@@ -1,4 +1,6 @@
-FROM baylibre/lava-master-base:2019.03_stretch
+FROM lavasoftware/lava-server:2019.07
+
+RUN apt-get update && apt-get -y install sudo lava-coordinator git
COPY backup /root/backup/
@@ -15,8 +17,7 @@ COPY device-types/ /root/device-types/
COPY users/ /root/lava-users/
COPY groups/ /root/lava-groups/
COPY tokens/ /root/lava-callback-tokens/
-COPY scripts/setup.sh /
-COPY scripts/start.sh /
+COPY entrypoint.d/*sh /root/entrypoint.d/
COPY settings.conf /etc/lava-server/
@@ -33,9 +34,18 @@ COPY zmq_auth/ /etc/lava-dispatcher/certificates.d/
COPY lava_http_fqdn /root/
COPY env/ /etc/lava-server/dispatcher.d/
+RUN chown -R lavaserver:lavaserver /etc/lava-server/dispatcher.d/
COPY apache2/ /etc/apache2/
+# Fixes 'postgresql ERROR: invalid locale name: "en_US.UTF-8"' when restoring a backup
+RUN echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8
+
+# TODO: send this fix to upstream
+RUN sed -i 's,find /root/entrypoint.d/ -type f,find /root/entrypoint.d/ -type f | sort,' /root/entrypoint.sh
+# TODO: send this fix to upstream
+RUN sed -i 's,pidfile =.*,pidfile = "/run/lava-coordinator/lava-coordinator.pid",' /usr/bin/lava-coordinator
+
EXPOSE 3079 5555 5556
-CMD /start.sh && while [ true ];do sleep 365d; done
+CMD /root/entrypoint.sh && while [ true ];do sleep 365d; done
diff --git a/lava-master/scripts/setup.sh b/lava-master/entrypoint.d/01_setup.sh
index 489dd51..be950b7 100755
--- a/lava-master/scripts/setup.sh
+++ b/lava-master/entrypoint.d/01_setup.sh
@@ -156,6 +156,7 @@ if [ -e /root/device-types ];then
diff -u "/etc/lava-server/dispatcher-config/device-types/$(basename $i)" $i
fi
cp $i /etc/lava-server/dispatcher-config/device-types/
+ chown lavaserver:lavaserver /etc/lava-server/dispatcher-config/device-types/$(basename $i)
devicetype=$(basename $i |sed 's,.jinja2,,')
lava-server manage device-types list | grep -q "[[:space:]]$devicetype[[:space:]]"
if [ $? -eq 0 ];then
diff --git a/lava-master/scripts/start.sh b/lava-master/scripts/start.sh
deleted file mode 100755
index ce94c39..0000000
--- a/lava-master/scripts/start.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-postgres-ready () {
- echo "Waiting for lavaserver database to be active"
- while (( $(ps -ef | grep -v grep | grep postgres | grep lavaserver | wc -l) == 0 ))
- do
- echo -n "."
- sleep 1
- done
- echo
- echo "[ ok ] LAVA server ready"
-}
-
-start () {
- echo "Starting $1"
- if (( $(ps -ef | grep -v grep | grep -v add_device | grep -v dispatcher-config | grep "$1" | wc -l) > 0 ))
- then
- echo "$1 appears to be running"
- else
- service "$1" start
- fi
-}
-
-#remove lava-pid files incase the image is stored without first stopping the services
-rm -f /var/run/lava-*.pid 2> /dev/null
-
-/etc/init.d/postgresql start
-
-/setup.sh || exit $?
-
-start apache2 || exit $?
-start lava-logs || exit $?
-start lava-master || exit $?
-start lava-coordinator || exit $?
-start lava-server-gunicorn || exit $?
-
-postgres-ready
-service apache2 reload #added after the website not running a few times on boot
diff --git a/lava-slave-base/99-stretch-backports b/lava-slave-base/99-stretch-backports
deleted file mode 100644
index 652f4a0..0000000
--- a/lava-slave-base/99-stretch-backports
+++ /dev/null
@@ -1,23 +0,0 @@
-Package: python3-requests
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: python3-chardet
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: python3-urllib3
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-common
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lava-dispatcher
-Pin: release n=stretch-backports
-Pin-Priority: 500
-
-Package: lavacli
-Pin: release n=stretch-backports
-Pin-Priority: 500
diff --git a/lava-slave-base/Dockerfile b/lava-slave-base/Dockerfile
deleted file mode 100644
index d7852a7..0000000
--- a/lava-slave-base/Dockerfile
+++ /dev/null
@@ -1,50 +0,0 @@
-FROM bitnami/minideb:stretch
-
-RUN echo "APT::Install-Recommends false;" > /etc/apt/apt.conf.d/01norecommands
-
-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 \
- letsencrypt \
- apt-transport-https \
- 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 https://apt.lavasoftware.org/lavasoftware.key.asc \
- && apt-key add lavasoftware.key.asc \
- && echo 'deb https://apt.lavasoftware.org/release stretch-backports main' > /etc/apt/sources.list.d/lava.list \
- && echo "deb http://deb.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list \
- && apt-get clean && apt-get update
-COPY 99-stretch-backports /etc/apt/preferences.d/
-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
deleted file mode 100644
index 3ba00f7..0000000
--- a/lava-slave-base/scripts/lava-slave
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /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/stop.sh b/lava-slave-base/scripts/stop.sh
deleted file mode 100755
index 0f18456..0000000
--- a/lava-slave-base/scripts/stop.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-service tftpd-hpa stop
-service lava-slave stop
diff --git a/lava-slave/Dockerfile b/lava-slave/Dockerfile
index 5fdae2f..b93e310 100644
--- a/lava-slave/Dockerfile
+++ b/lava-slave/Dockerfile
@@ -1,4 +1,4 @@
-FROM baylibre/lava-slave-base:2019.03_stretch
+FROM lavasoftware/lava-dispatcher:2019.07
RUN apt-get update
@@ -61,6 +61,7 @@ RUN mkdir -p /root/.config
COPY devices/ /root/devices/
COPY tags/ /root/tags/
+COPY aliases/ /root/aliases/
COPY deviceinfo/ /root/deviceinfo/
RUN if [ -x /usr/local/bin/extra_actions ] ; then /usr/local/bin/extra_actions ; fi
@@ -74,4 +75,4 @@ COPY zmq_auth/ /etc/lava-dispatcher/certificates.d/
EXPOSE 69/udp 80
-CMD /start.sh
+CMD /usr/local/bin/start.sh
diff --git a/lava-slave/aliases/.empty b/lava-slave/aliases/.empty
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lava-slave/aliases/.empty
diff --git a/lava-slave/scripts/setup.sh b/lava-slave/scripts/setup.sh
index 1fb0bb3..4bf2f67 100755
--- a/lava-slave/scripts/setup.sh
+++ b/lava-slave/scripts/setup.sh
@@ -143,6 +143,22 @@ do
done
done
+for devicetype in $(ls /root/aliases/)
+do
+ lavacli $LAVACLIOPTS device-types aliases list $devicetype > /tmp/device-types-aliases-$devicetype.list
+ while read alias
+ do
+ grep -q " $alias$" /tmp/device-types-aliases-$devicetype.list
+ if [ $? -eq 0 ];then
+ echo "DEBUG: $alias for $devicetype already present"
+ continue
+ fi
+ echo "DEBUG: Add alias $alias to $devicetype"
+ lavacli $LAVACLIOPTS device-types aliases add $devicetype $alias || exit $?
+ echo " $alias" >> /tmp/device-types-aliases-$devicetype.list
+ done < /root/aliases/$devicetype
+done
+
if [ -e /etc/lava-dispatcher/certificates.d/$(hostname).key ];then
echo "INFO: Enabling encryption"
sed -i 's,.*ENCRYPT=.*,ENCRYPT="--encrypt",' /etc/lava-dispatcher/lava-slave
diff --git a/lava-slave-base/scripts/start.sh b/lava-slave/scripts/start.sh
index 21b6903..f88b816 100755
--- a/lava-slave-base/scripts/start.sh
+++ b/lava-slave/scripts/start.sh
@@ -7,6 +7,8 @@ if [[ -n "$LAVA_MASTER" ]]; then
sed -i -e "s/{LAVA_MASTER}/$LAVA_MASTER/g" /etc/lava-dispatcher/lava-slave
fi
+echo "LOGFILE=/var/log/lava-dispatcher/lava-slave.log" >> /etc/lava-dispatcher/lava-slave
+
service tftpd-hpa start || exit 4
if [ -s /etc/ser2net.conf ];then
service ser2net start || exit 7
@@ -41,6 +43,9 @@ fi
# FIXME lava-slave does not run if old pid is present
rm -f /var/run/lava-slave.pid
-service lava-slave start || exit 5
+#service lava-slave start || exit 5
+#/etc/init.d/lava-slave start
+
+/root/entrypoint.sh
sleep 3650d
diff --git a/lavalab-gen.py b/lavalab-gen.py
index b3f096a..c2c5347 100755
--- a/lavalab-gen.py
+++ b/lavalab-gen.py
@@ -94,7 +94,7 @@ def usage():
def main():
need_zmq_auth_gen = False
fp = open(boards_yaml, "r")
- workers = yaml.load(fp)
+ workers = yaml.safe_load(fp)
fp.close()
os.mkdir("output")
@@ -128,8 +128,6 @@ def main():
dockcomp["services"][name]["volumes"] = [ "/boot:/boot", "/lib/modules:/lib/modules" ]
dockcomp["services"][name]["build"] = {}
dockcomp["services"][name]["build"]["context"] = name
- if "lava-coordinator" in master and master["lava-coordinator"]:
- dockcomp["services"][name]["ports"].append('3079:3079')
persistent_db = False
if "persistent_db" in master:
persistent_db = master["persistent_db"]
@@ -140,8 +138,6 @@ def main():
dockcomp["volumes"] = {}
dockcomp["volumes"][pg_volume_name] = {}
dockcomp["volumes"]["lava_job_output"] = {}
- with open(dockcomposeymlpath, 'w') as f:
- yaml.dump(dockcomp, f)
shutil.copytree("lava-master", workerdir)
os.mkdir("%s/devices" % workerdir)
@@ -151,6 +147,18 @@ def main():
groupdir = "%s/groups" % workerdir
os.mkdir(groupdir)
worker = master
+ if "lava-coordinator" in master and master["lava-coordinator"]:
+ dockcomp["services"][name]["ports"].append('3079:3079')
+ f_entrypoint = open("%s/entrypoint.d/02_lava-coordinator.sh" % workerdir, 'w')
+ f_entrypoint.write("#!/bin/sh\n")
+ f_entrypoint.write("echo 'Start lava-coordinator'\n")
+ f_entrypoint.write("mkdir /run/lava-coordinator && chown lavaserver /run/lava-coordinator\n")
+ f_entrypoint.write("start-stop-daemon --start --chuid lavaserver --background --exec /usr/bin/lava-coordinator -- --logfile=/var/log/lava-server/lava-coordinator.log\n")
+ f_entrypoint.write("exit $?\n")
+ f_entrypoint.close()
+ os.chmod("%s/entrypoint.d/02_lava-coordinator.sh" % workerdir, 0o755)
+ with open(dockcomposeymlpath, 'w') as f:
+ yaml.dump(dockcomp, f)
if "healthcheck_url" in master:
f_hc = open("%s/health-checks/healthcheck_url" % workerdir, 'w')
f_hc.write(master["healthcheck_url"])
@@ -321,7 +329,7 @@ def main():
else:
#master exists
fp = open(dockcomposeymlpath, "r")
- dockcomp = yaml.load(fp)
+ dockcomp = yaml.safe_load(fp)
fp.close()
dockcomp["services"][name] = {}
dockcomp["services"][name]["hostname"] = name
@@ -516,7 +524,7 @@ def main():
workerdir = "output/%s/%s" % (host, worker_name)
dockcomposeymlpath = "output/%s/docker-compose.yml" % host
fp = open(dockcomposeymlpath, "r")
- dockcomp = yaml.load(fp)
+ dockcomp = yaml.safe_load(fp)
fp.close()
device_path = "%s/devices/" % workerdir
devices_path = "%s/devices/%s" % (workerdir, worker_name)
@@ -618,6 +626,12 @@ def main():
for tag in board["tags"]:
ftag.write("%s\n" % tag)
ftag.close()
+ if "aliases" in board:
+ aliases_dir = "%s/aliases/" % workerdir
+ falias = open("%s/%s" % (aliases_dir, board["type"]), 'a')
+ for alias in board["aliases"]:
+ falias.write("%s\n" % alias)
+ falias.close()
if "user" in board:
deviceinfo = open("%s/deviceinfo/%s" % (workerdir, board_name), 'w')
deviceinfo.write("DEVICE_USER=%s\n" % board["user"])
@@ -666,7 +680,7 @@ def main():
print("Add ser2net ports for %s (%s) %s-%s" % (slave_name, host, ser2net_port_start, ser2net_ports[slave_name]))
dockcomposeymlpath = "output/%s/docker-compose.yml" % host
fp = open(dockcomposeymlpath, "r")
- dockcomp = yaml.load(fp)
+ dockcomp = yaml.safe_load(fp)
fp.close()
ser2net_port_max = ser2net_ports[slave_name] - 1
dockcomp["services"][slave_name]["ports"].append("%s-%s:%s-%s" % (ser2net_port_start, ser2net_port_max, ser2net_port_start, ser2net_port_max))