From 31555bcb6555d080e7072fba2fc8ccda0fd59eaa Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Thu, 12 Apr 2018 11:59:07 +0200 Subject: Implement Multipleslave This patch implement multiple slave support. Instead of having a maximum of one master and one slave in one docker image, it is now possible to have multiple slave accross several docker host. For helping this change, a new boards.yaml format is introduced (See README.md for details) Note that tokens.yaml is also squashed in boards.yaml --- lava-master/Dockerfile | 2 +- lava-master/scripts/setup.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'lava-master') diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index a65fd9a..b475c8c 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -66,11 +66,11 @@ COPY devices/ /root/devices/ COPY device-types/ /root/device-types/ COPY users/ /root/lava-users/ COPY tokens/ /root/lava-callback-tokens/ -COPY slaves/* /etc/lava-server/dispatcher.d/ COPY scripts/setup.sh / RUN /start.sh && /setup.sh && /stop.sh #uncomment if you want to use squid +# warning the address used must be network accessible by all slave #RUN sed -i 's,^.*http_proxy:.*, http_proxy: http://squid:3128,' /etc/lava-server/env.yaml #comment this if you do HTTPS (For reenabling CSRF cookie) diff --git a/lava-master/scripts/setup.sh b/lava-master/scripts/setup.sh index 5b62c45..3ab2abd 100755 --- a/lava-master/scripts/setup.sh +++ b/lava-master/scripts/setup.sh @@ -45,7 +45,7 @@ if [ -e /root/lava-callback-tokens ];then exit 1 fi echo "Adding $USER ($DESCRIPTION) DEBUG($TOKEN)" - lava-server manage tokens add --user $USER --secret $TOKEN --description $DESCRIPTION || exit 1 + lava-server manage tokens add --user $USER --secret $TOKEN --description "$DESCRIPTION" || exit 1 done fi -- cgit 1.2.3-korg From 3588f8dc3fb68b3cc21178f3722e980dd9369d2a Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Mon, 21 May 2018 11:18:01 +0200 Subject: Upgrade to 2018.4 This patch upgrade lava-docker to LAVA 2018.4 --- common/build-lava | 76 +++++++++++------------- lava-master/Dockerfile | 22 +++++-- lava-master/scripts/lava-logs | 97 +++++++++++++++++++++++++++++++ lava-master/scripts/lava-master | 97 +++++++++++++++++++++++++++++++ lava-master/scripts/lava-server-gunicorn | 99 ++++++++++++++++++++++++++++++++ lava-master/scripts/lava-slave | 98 +++++++++++++++++++++++++++++++ lava-master/scripts/start.sh | 16 +++--- lava-master/scripts/stop.sh | 4 +- lava-slave/Dockerfile | 11 ++-- lava-slave/scripts/lava-slave | 98 +++++++++++++++++++++++++++++++ 10 files changed, 556 insertions(+), 62 deletions(-) create mode 100644 lava-master/scripts/lava-logs create mode 100644 lava-master/scripts/lava-master create mode 100644 lava-master/scripts/lava-server-gunicorn create mode 100644 lava-master/scripts/lava-slave create mode 100644 lava-slave/scripts/lava-slave (limited to 'lava-master') diff --git a/common/build-lava b/common/build-lava index e1a8e3b..3ddc696 100644 --- a/common/build-lava +++ b/common/build-lava @@ -24,7 +24,7 @@ lava-server) build-essential \ docbook-xsl \ xsltproc \ - gunicorn \ + gunicorn3 \ ntp \ nodejs \ node-uglify \ @@ -33,37 +33,26 @@ lava-server) libjs-jquery-watermark \ libjs-jquery-flot \ libjs-jquery-ui \ - python-django \ - python-json-schema-validator \ - python-configglue \ - python-twisted\ - python-guestfs \ - python-configobj \ - python-lzma \ - python-magic \ - python-netifaces \ - python-nose \ - python-pexpect \ - python-pyudev \ - python-requests \ - python-yaml \ - python-zmq \ + python3-django-restricted-resource \ + python3-django-auth-ldap \ + python3-django-tables2 \ + python3-django \ + python3-guestfs \ + python3-netifaces \ + python3-markdown \ + python3-nose \ + python3-pexpect \ + python3-psycopg2 \ + python3-requests \ + python3-simplejson \ + python3-yaml \ + python3-zmq \ python3-sphinx-bootstrap-theme \ pep8 \ python-pep8 \ - python-voluptuous \ - python-dateutil \ - python-django-auth-ldap \ - python-django-restricted-resource \ - python-django-tables2 \ - python-docutils \ - python-jinja2 \ - python-markdown \ - python-psycopg2 \ - python-voluptuous \ - python-sphinx \ - python-sphinx-bootstrap-theme \ - python-mocker \ + python3-voluptuous \ + python3-dateutil \ + python3-voluptuous \ systemd-sysv \ tftpd-hpa \ lxc \ @@ -75,24 +64,23 @@ lava-server) ;; lava-dispatcher) # build dependencies - DEBIAN_FRONTEND=noninteractive apt-get -y install python-setuptools || exit $? + DEBIAN_FRONTEND=noninteractive apt-get -y install python3-setuptools || exit $? # package dependencies - DEBIAN_FRONTEND=noninteractive apt-get -y install python-serial \ - python-daemon \ - python-guestfs \ + DEBIAN_FRONTEND=noninteractive apt-get -y install \ + python3-serial \ + python3-configobj \ + python3-pyudev \ + python3-setproctitle \ + python3-guestfs \ sudo \ telnet \ - python-configobj \ - python-lzma \ - python-magic \ - python-netifaces \ - python-nose \ - python-pexpect \ - python-pyudev \ - python-requests \ - python-tz \ - python-yaml \ - python-zmq || exit $? + systemd-sysv \ + python3-netifaces \ + python3-nose \ + python3-pexpect \ + python3-requests \ + python3-yaml \ + python3-zmq || exit $? ;; *) echo "Unknow compoments $1" diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index b475c8c..581999a 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -1,5 +1,7 @@ FROM bitnami/minideb:stretch +RUN echo "deb http://ftp.fr.debian.org/debian/ stretch-backports main" >> /etc/apt/sources.list + RUN apt-get update # Add services helper utilities to start and stop LAVA @@ -46,10 +48,10 @@ RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y in # Install latest COPY scripts/build-lava / -RUN bash /build-lava lava-dispatcher 2017.11 2017.11.post1-1 -RUN service postgresql start && \ - bash /build-lava lava-server 2017.11 2017.11.post1-1 && \ - /stop.sh +RUN bash /build-lava lava-dispatcher 2018.4 2018.4-1 +RUN /etc/init.d/postgresql start && \ + bash /build-lava lava-server 2018.4 2018.4-1 && \ + /etc/init.d/postgresql stop RUN a2enmod proxy \ && a2enmod proxy_http \ @@ -62,6 +64,18 @@ RUN git clone https://github.com/BayLibre/lava-healthchecks.git RUN cp lava-healthchecks/health-checks/* /etc/lava-server/dispatcher-config/health-checks/ COPY health-checks/* /etc/lava-server/dispatcher-config/health-checks/ +# 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 + COPY devices/ /root/devices/ COPY device-types/ /root/device-types/ COPY users/ /root/lava-users/ diff --git a/lava-master/scripts/lava-logs b/lava-master/scripts/lava-logs new file mode 100644 index 0000000..69b2f82 --- /dev/null +++ b/lava-master/scripts/lava-logs @@ -0,0 +1,97 @@ +#! /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 +# + +# 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 --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/scripts/lava-master b/lava-master/scripts/lava-master new file mode 100644 index 0000000..3bd75aa --- /dev/null +++ b/lava-master/scripts/lava-master @@ -0,0 +1,97 @@ +#! /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 +# + +# 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/scripts/lava-server-gunicorn b/lava-master/scripts/lava-server-gunicorn new file mode 100644 index 0000000..217ad57 --- /dev/null +++ b/lava-master/scripts/lava-server-gunicorn @@ -0,0 +1,99 @@ +#! /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 +# + +# 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 --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/scripts/lava-slave b/lava-master/scripts/lava-slave new file mode 100644 index 0000000..3ba00f7 --- /dev/null +++ b/lava-master/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 +# + +# 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/scripts/start.sh b/lava-master/scripts/start.sh index f4cc4eb..0e223b5 100755 --- a/lava-master/scripts/start.sh +++ b/lava-master/scripts/start.sh @@ -24,14 +24,14 @@ start () { #remove lava-pid files incase the image is stored without first stopping the services rm -f /var/run/lava-*.pid 2> /dev/null -start postgresql -start apache2 -start lava-server -start lava-master -start lava-coordinator -start lava-slave -start lava-server-gunicorn -start tftpd-hpa +/etc/init.d/postgresql start +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/scripts/stop.sh b/lava-master/scripts/stop.sh index ccf30fb..35d503f 100755 --- a/lava-master/scripts/stop.sh +++ b/lava-master/scripts/stop.sh @@ -2,9 +2,9 @@ service lava-master stop service lava-slave stop -service lava-server stop +service lava-logs stop service lava-coordinator stop service lava-server-gunicorn stop service apache2 stop -service postgresql stop +/etc/init.d/postgresql stop service tftpd-hpa stop diff --git a/lava-slave/Dockerfile b/lava-slave/Dockerfile index be2dbaa..b7252ef 100644 --- a/lava-slave/Dockerfile +++ b/lava-slave/Dockerfile @@ -34,7 +34,7 @@ RUN if [ "$(uname -m)" = "x86_64" -o "$(uname -m)" = "x86" ] ;then apt-get -y in #RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher COPY scripts/build-lava / -RUN sh /build-lava lava-dispatcher 2017.11 2017.11.post1-1 +RUN sh /build-lava lava-dispatcher 2018.4 2018.4-1 COPY configs/lava-slave /etc/lava-dispatcher/lava-slave @@ -44,8 +44,8 @@ COPY scripts/cu-loop /usr/local/bin/ COPY conmux/ /etc/conmux/ # Caution to not use any port between the Linux dynamic port range: 32768-60999 -RUN sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=61950,' /usr/lib/python2.7/dist-packages/lava_dispatcher/utils/constants.py -RUN sed -i 's,XNBD_PORT_RANGE_MAX.*,XNBD_PORT_RANGE_MAX=62000,' /usr/lib/python2.7/dist-packages/lava_dispatcher/utils/constants.py +RUN sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=61950,' /usr/lib/python3/dist-packages/lava_dispatcher/utils/constants.py +RUN sed -i 's,XNBD_PORT_RANGE_MAX.*,XNBD_PORT_RANGE_MAX=62000,' /usr/lib/python3/dist-packages/lava_dispatcher/utils/constants.py #conmux need cu >= 1.07-24 See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=336996 RUN echo "deb http://debian.proxad.net/debian/ testing main" >> /etc/apt/sources.list.d/testing.list @@ -53,13 +53,16 @@ RUN apt-get update RUN DEBIAN_FRONTEND=noninteractive apt-get -y install cu RUN rm /etc/apt/sources.list.d/testing.list +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 . # lava-cli dependencies RUN apt-get -y install python3-setuptools python3-dev python3-zmq -RUN git clone https://git.linaro.org/lava/lavacli.git /root/lavacli && cd /root/lavacli && git checkout v0.6 && python3 setup.py install +RUN git clone https://git.linaro.org/lava/lavacli.git /root/lavacli && cd /root/lavacli && git checkout v0.7 && python3 setup.py install COPY phyhostname /root/ COPY scripts/setup.sh . diff --git a/lava-slave/scripts/lava-slave b/lava-slave/scripts/lava-slave new file mode 100644 index 0000000..3ba00f7 --- /dev/null +++ b/lava-slave/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 +# + +# 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 + +: + -- cgit 1.2.3-korg From 6510f0c9d8b381240c81514cc2f2ce7e318cb7f0 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Fri, 1 Jun 2018 10:49:40 +0200 Subject: Allow to have device-types-patch --- lava-master/Dockerfile | 3 +++ lava-master/device-types-patch/.empty | 0 2 files changed, 3 insertions(+) create mode 100644 lava-master/device-types-patch/.empty (limited to 'lava-master') diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index 581999a..137a59a 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -90,6 +90,9 @@ RUN /start.sh && /setup.sh && /stop.sh #comment this if you do HTTPS (For reenabling CSRF cookie) COPY settings.conf /etc/lava-server/ +COPY device-types-patch/ /root/device-types-patch/ +RUN cd /etc/lava-server/dispatcher-config/device-types/ && for patch in $(ls /root/device-types-patch/*patch) ; do sed -i 's,lava_scheduler_app/tests/device-types/,,' $patch && patch < $patch ; done + EXPOSE 69/udp 80 3079 5555 5556 CMD /start.sh && while [ true ];do sleep 365d; done diff --git a/lava-master/device-types-patch/.empty b/lava-master/device-types-patch/.empty new file mode 100644 index 0000000..e69de29 -- cgit 1.2.3-korg From a22e4a89a06bda681ba329bf73e05a7d9196efe3 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Mon, 4 Jun 2018 15:02:00 +0200 Subject: Permit to access LAVA webadmin via https This patch permits to access LAVA webadmin via HTTPS. Resolve SPEC-1493 --- README.md | 1 + lava-master/settings.conf | 16 ---------------- lavalab-gen.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 16 deletions(-) delete mode 100644 lava-master/settings.conf (limited to 'lava-master') diff --git a/README.md b/README.md index 5580f06..2ea9773 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ This file describe how the DUTs are connected and powered. masters: - name: lava-master name of the master host: name name of the host running lava-master (default to "local") + webadmin_https: Does the LAVA webadmin is accessed via https users: - name: LAVA username token: The token of this user diff --git a/lava-master/settings.conf b/lava-master/settings.conf deleted file mode 100644 index c809e2c..0000000 --- a/lava-master/settings.conf +++ /dev/null @@ -1,16 +0,0 @@ -{ - "DEBUG": false, - "STATICFILES_DIRS": [ - ["lava-server", "/usr/share/pyshared/lava_server/htdocs/"] - ], - "MEDIA_ROOT": "/var/lib/lava-server/default/media", - "ARCHIVE_ROOT": "/var/lib/lava-server/default/archive", - "STATIC_ROOT": "/usr/share/lava-server/static", - "STATIC_URL": "/static/", - "MOUNT_POINT": "/", - "HTTPS_XML_RPC": false, - "LOGIN_URL": "/accounts/login/", - "LOGIN_REDIRECT_URL": "/", - "CSRF_COOKIE_SECURE": false, - "SESSION_COOKIE_SECURE": false -} diff --git a/lavalab-gen.py b/lavalab-gen.py index 7645d08..13677c8 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -43,6 +43,25 @@ template_udev_devpath = string.Template("""# SUBSYSTEM=="tty", ATTRS{idVendor}=="${idvendor}", ATTRS{idProduct}=="${idproduct}", ATTRS{devpath}=="${devpath}", MODE="0664", OWNER="uucp", SYMLINK+="${board}" """) +template_settings_conf = string.Template(""" +{ + "DEBUG": false, + "STATICFILES_DIRS": [ + ["lava-server", "/usr/share/pyshared/lava_server/htdocs/"] + ], + "MEDIA_ROOT": "/var/lib/lava-server/default/media", + "ARCHIVE_ROOT": "/var/lib/lava-server/default/archive", + "STATIC_ROOT": "/usr/share/lava-server/static", + "STATIC_URL": "/static/", + "MOUNT_POINT": "/", + "HTTPS_XML_RPC": false, + "LOGIN_URL": "/accounts/login/", + "LOGIN_REDIRECT_URL": "/", + "CSRF_COOKIE_SECURE": $cookie_secure, + "SESSION_COOKIE_SECURE": $session_cookie_secure +} +""") + def main(): fp = open(boards_yaml, "r") workers = yaml.load(fp) @@ -83,6 +102,18 @@ def main(): userdir = "%s/users" % workerdir os.mkdir(userdir) worker = master + webadmin_https = False + if "webadmin_https" in worker: + webadmin_https = worker["webadmin_https"] + if webadmin_https: + cookie_secure = "true" + session_cookie_secure = "true" + else: + cookie_secure = "false" + session_cookie_secure = "false" + fsettings = open("%s/settings.conf" % workerdir, 'w') + fsettings.write(template_settings_conf.substitute(cookie_secure=cookie_secure, session_cookie_secure=session_cookie_secure)) + fsettings.close() if "users" in worker: for user in worker["users"]: username = user["name"] -- cgit 1.2.3-korg