diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | lava-slave/Dockerfile | 13 | ||||
-rwxr-xr-x | lava-slave/scripts/setup.sh | 29 | ||||
-rwxr-xr-x | lavalab-gen.py | 4 |
4 files changed, 27 insertions, 20 deletions
@@ -279,6 +279,7 @@ slaves: remote_user: the user used for connecting to the master remote_user_token: The remote_user's token. This option is necessary only if no master node exists in boards.yaml. Otherwise lavalab-gen.py will get from it. remote_proto: http(default) or https + lava_worker_token: token to authenticate worker to master/scheduler (LAVA 2020.09+) default_slave: Does this slave is the default slave where to add boards (default: lab-slave-0) bind_dev: Bind /dev from host to slave. This is needed when using some HID PDU use_tftp: Does LAVA need a TFTP server (default True) diff --git a/lava-slave/Dockerfile b/lava-slave/Dockerfile index bb59174..8412fcf 100644 --- a/lava-slave/Dockerfile +++ b/lava-slave/Dockerfile @@ -19,22 +19,9 @@ COPY conmux/ /etc/conmux/ RUN find /usr/lib/python3/dist-packages/ -iname constants.py | xargs sed -i 's,XNBD_PORT_RANGE_MIN.*,XNBD_PORT_RANGE_MIN=61950,' RUN find /usr/lib/python3/dist-packages/ -iname constants.py | xargs sed -i 's,XNBD_PORT_RANGE_MAX.*,XNBD_PORT_RANGE_MAX=62000,' -#conmux need cu >= 1.07-24 See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=336996 -RUN echo "deb http://deb.debian.org/debian/ testing main" >> /etc/apt/sources.list.d/testing.list -RUN apt-get update -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install cu -RUN rm /etc/apt/sources.list.d/testing.list - RUN apt-get -y install ser2net COPY ser2net.conf /etc -# ser2net > 3.2 is only availlable from sid -RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list.d/sid.list -RUN apt-get update -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install ser2net -RUN rm /etc/apt/sources.list.d/sid.list -RUN apt-get update - RUN apt-get -y install lavacli # PXE stuff diff --git a/lava-slave/scripts/setup.sh b/lava-slave/scripts/setup.sh index 9873a91..7c31441 100755 --- a/lava-slave/scripts/setup.sh +++ b/lava-slave/scripts/setup.sh @@ -72,15 +72,32 @@ do fi grep -q "TOKEN" /root/entrypoint.sh if [ $? -eq 0 ];then + # This is 2020.09+ echo "DEBUG: Worker need a TOKEN" - # TODO use token from env - WTOKEN=$(getworkertoken.py $LAVA_MASTER_URI $worker) - if [ $? -eq 0 ];then - sed -i "s,.*TOKEN.*,TOKEN=\"--token $WTOKEN\"," /etc/lava-dispatcher/lava-worker || exit $? + if [ -z "$LAVA_WORKER_TOKEN" ];then + echo "DEBUG: get token dynamicly" + # Does not work on 2020.09, since token was not added yet in RPC2 + WTOKEN=$(getworkertoken.py $LAVA_MASTER_URI $worker) + if [ $? -ne 0 ];then + echo "ERROR: cannot get WORKER TOKEN" + exit 1 + fi + if [ -z "$WTOKEN" ];then + echo "ERROR: got an empty token" + exit 1 + fi else - echo "ERROR: cannot get WORKER TOKEN" - exit 1 + echo "DEBUG: got token from env" + WTOKEN=$LAVA_WORKER_TOKEN fi + echo "DEBUG: write token in /var/lib/lava/dispatcher/worker/" + mkdir -p /var/lib/lava/dispatcher/worker/ + echo "$WTOKEN" > /var/lib/lava/dispatcher/worker/token + # lava worker ran under root + chown root:root /var/lib/lava/dispatcher/worker/token + chmod 640 /var/lib/lava/dispatcher/worker/token + sed -i "s,.*TOKEN.*,TOKEN=\"--token-file /var/lib/lava/dispatcher/worker/token\"," /etc/lava-dispatcher/lava-worker || exit $? + echo "DEBUG: set master URL to $LAVA_MASTER_URL" sed -i "s,^# URL.*,URL=\"$LAVA_MASTER_URL\"," /etc/lava-dispatcher/lava-worker || exit $? cat /etc/lava-dispatcher/lava-worker diff --git a/lavalab-gen.py b/lavalab-gen.py index e4b3487..e901eb7 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -407,7 +407,7 @@ def main(): "devices", "dispatcher_ip", "default_slave", "extra_actions", "export_ser2net", "expose_ser2net", "expose_ports", "env", "host", "host_healthcheck", - "loglevel", "lava-coordinator", + "loglevel", "lava-coordinator", "lava_worker_token", "name", "remote_user", "remote_master", "remote_address", "remote_rpc_port", "remote_proto", "remote_user_token", "tags", @@ -493,6 +493,8 @@ def main(): else: remote_rpc_port = worker["remote_rpc_port"] dockcomp["services"][worker_name]["environment"]["LAVA_MASTER"] = remote_address + if "lava_worker_token" in worker: + dockcomp["services"][worker_name]["environment"]["LAVA_WORKER_TOKEN"] = worker["lava_worker_token"] remote_user = worker["remote_user"] # find master remote_token = "BAD" |