diff options
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | lava-master-base/99-stretch-backports | 43 | ||||
-rw-r--r-- | lava-master-base/Dockerfile | 62 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-logs | 97 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-master | 97 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-server-gunicorn | 99 | ||||
-rw-r--r-- | lava-master-base/scripts/lava-slave | 98 | ||||
-rwxr-xr-x | lava-master-base/scripts/start.sh | 40 | ||||
-rwxr-xr-x | lava-master-base/scripts/stop.sh | 10 | ||||
-rw-r--r-- | lava-master/Dockerfile | 18 | ||||
-rwxr-xr-x | lava-master/entrypoint.d/01_setup.sh (renamed from lava-master/scripts/setup.sh) | 1 | ||||
-rwxr-xr-x | lava-master/scripts/start.sh | 38 | ||||
-rw-r--r-- | lava-slave-base/99-stretch-backports | 23 | ||||
-rw-r--r-- | lava-slave-base/Dockerfile | 50 | ||||
-rw-r--r-- | lava-slave-base/scripts/lava-slave | 98 | ||||
-rwxr-xr-x | lava-slave-base/scripts/stop.sh | 3 | ||||
-rw-r--r-- | lava-slave/Dockerfile | 5 | ||||
-rw-r--r-- | lava-slave/aliases/.empty | 0 | ||||
-rwxr-xr-x | lava-slave/scripts/setup.sh | 16 | ||||
-rwxr-xr-x | lava-slave/scripts/start.sh (renamed from lava-slave-base/scripts/start.sh) | 7 | ||||
-rwxr-xr-x | lavalab-gen.py | 30 |
21 files changed, 65 insertions, 773 deletions
@@ -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)) |