summaryrefslogtreecommitdiffstats
path: root/lava-slave
diff options
context:
space:
mode:
Diffstat (limited to 'lava-slave')
-rw-r--r--lava-slave/Dockerfile68
-rw-r--r--lava-slave/configs/lava-slave15
-rw-r--r--lava-slave/configs/tftpd-hpa6
-rw-r--r--lava-slave/lavapdu.conf19
-rwxr-xr-xlava-slave/scripts/cu-loop11
-rwxr-xr-xlava-slave/scripts/start.sh34
-rwxr-xr-xlava-slave/scripts/stop.sh3
7 files changed, 156 insertions, 0 deletions
diff --git a/lava-slave/Dockerfile b/lava-slave/Dockerfile
new file mode 100644
index 0000000..5e0f3cb
--- /dev/null
+++ b/lava-slave/Dockerfile
@@ -0,0 +1,68 @@
+FROM bitnami/minideb:stretch
+
+RUN apt-get update
+
+# Add services helper utilities to start and stop LAVA
+COPY scripts/stop.sh .
+COPY scripts/start.sh .
+
+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 \
+ lava-dispatcher \
+ lava-dev \
+ git \
+ vim \
+ sudo \
+ cu \
+ conmux \
+ python-setproctitle \
+ tftpd-hpa \
+ u-boot-tools \
+ device-tree-compiler \
+ qemu-system \
+ qemu-system-arm \
+ qemu-system-i386 \
+ qemu-kvm \
+ xnbd-server \
+ e2fsprogs
+
+RUN wget http://images.validation.linaro.org/production-repo/production-repo.key.asc \
+ && apt-key add production-repo.key.asc \
+ && echo 'deb http://images.validation.linaro.org/production-repo/ stretch-backports main' > /etc/apt/sources.list.d/lava.list \
+ && apt-get clean && apt-get update
+
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install lava-dispatcher
+
+#RUN \
+# git clone https://github.com/kernelci/lava-server.git -b release /root/lava-server && \
+# git clone https://github.com/kernelci/lava-dispatcher.git -b master /root/lava-dispatcher && \
+# cd /root/lava-dispatcher && \
+# git checkout release && \
+# git config --global user.name "Docker Build" && \
+# git config --global user.email "info@kernelci.org" && \
+# echo "cd \${DIR} && dpkg -i *.deb" >> /root/lava-server/share/debian-dev-build.sh && \
+# sleep 2 && \
+# /root/lava-server/share/debian-dev-build.sh -p lava-dispatcher
+
+COPY configs/lava-slave /etc/lava-dispatcher/lava-slave
+
+COPY configs/tftpd-hpa /etc/default/tftpd-hpa
+
+COPY scripts/cu-loop /usr/local/bin/
+COPY conmux/* /etc/conmux/
+
+#install pdudaemon
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install postgresql
+RUN service postgresql start && DEBIAN_FRONTEND=noninteractive apt-get -y install lavapdu-daemon lavapdu-client && service postgresql stop
+COPY lavapdu.conf /etc/lavapdu/
+
+#TODO made this customizable, 1000 ports by default is too much
+RUN sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=55950,' /usr/lib/python2.7/dist-packages/lava_dispatcher/pipeline/utils/constants.py
+
+EXPOSE 69/udp 80
+
+CMD /start.sh
diff --git a/lava-slave/configs/lava-slave b/lava-slave/configs/lava-slave
new file mode 100644
index 0000000..6b991ad
--- /dev/null
+++ b/lava-slave/configs/lava-slave
@@ -0,0 +1,15 @@
+# Configuration for lava-slave daemon
+
+# URL to the master and the logger
+MASTER_URL="tcp://{LAVA_MASTER}:5556"
+LOGGER_URL="tcp://{LAVA_MASTER}:5555"
+
+# Logging level should be uppercase (DEBUG, INFO, WARNING, ERROR)
+# LOGLEVEL="DEBUG"
+
+# Encryption
+# If set, will activate encryption using the master public and the slave
+# private keys
+# ENCRYPT="--encrypt"
+# MASTER_CERT="--master-cert /etc/lava-dispatcher/certificates.d/<master.key>"
+# SLAVE_CERT="--slave-cert /etc/lava-dispatcher/certificates.d/<slave.key_secret>"
diff --git a/lava-slave/configs/tftpd-hpa b/lava-slave/configs/tftpd-hpa
new file mode 100644
index 0000000..bb6f079
--- /dev/null
+++ b/lava-slave/configs/tftpd-hpa
@@ -0,0 +1,6 @@
+# /etc/default/tftpd-hpa
+
+TFTP_USERNAME="tftp"
+TFTP_DIRECTORY="/var/lib/lava/dispatcher/tmp/"
+TFTP_ADDRESS="0.0.0.0:69"
+TFTP_OPTIONS="--secure"
diff --git a/lava-slave/lavapdu.conf b/lava-slave/lavapdu.conf
new file mode 100644
index 0000000..720c22b
--- /dev/null
+++ b/lava-slave/lavapdu.conf
@@ -0,0 +1,19 @@
+{
+ "daemon": {
+ "hostname": "0.0.0.0",
+ "port": 16421,
+ "dbhost": "127.0.0.1",
+ "dbuser": "pdudaemon",
+ "dbpass": "pdudaemon",
+ "dbname": "lavapdu",
+ "retries": 5,
+ "logging_level": "INFO"
+ },
+ "pdus": {
+ "acme-0": {
+ "driver": "localcmdline",
+ "cmd_on": "/usr/local/bin/acme-cli -s 192.168.66.2 switch_on %d",
+ "cmd_off": "/usr/local/bin/acme-cli -s 192.168.66.2 switch_off %d"
+ }
+ }
+}
diff --git a/lava-slave/scripts/cu-loop b/lava-slave/scripts/cu-loop
new file mode 100755
index 0000000..fbe5777
--- /dev/null
+++ b/lava-slave/scripts/cu-loop
@@ -0,0 +1,11 @@
+#!/bin/sh
+DEV=$1
+BAUD=${2:-115200}
+
+while true; do
+ # NOTE: needs cu >= 1.07-24
+ # c.f. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=336996
+ test -e $DEV && cu -l $DEV -s $BAUD --parity=none --nostop --nortscts dir
+ sleep 0.2
+done
+
diff --git a/lava-slave/scripts/start.sh b/lava-slave/scripts/start.sh
new file mode 100755
index 0000000..c9645b3
--- /dev/null
+++ b/lava-slave/scripts/start.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+# 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
+
+# FIXME lava-slave does not run if old pid is present
+rm -f /var/run/lava-slave.pid
+service lava-slave start || exit 5
+
+if [ -e /etc/lavapdu ];then
+ /etc/init.d/postgresql start || exit 6
+
+ echo "== Start lavapdu listen =="
+ /etc/init.d/lavapdu-listen start || exit 7
+ # lava listen create the database, let it some time
+ sleep 5
+ echo "== Start lavapdu runner =="
+ /etc/init.d/lavapdu-runner start || exit 8
+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"
+ /usr/sbin/conmux $item &
+done
+
+# start an http file server for boot/transfer_overlay support
+(cd /var/lib/lava/dispatcher; python -m SimpleHTTPServer 80)
diff --git a/lava-slave/scripts/stop.sh b/lava-slave/scripts/stop.sh
new file mode 100755
index 0000000..0f18456
--- /dev/null
+++ b/lava-slave/scripts/stop.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+service tftpd-hpa stop
+service lava-slave stop