From 033ceaa64ad89cdedb45f3fc3b6269063402b1bd Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Tue, 16 Oct 2018 16:08:31 +0200 Subject: Permit to create groups This patch adds support for creating groups --- README.md | 5 +++++ lava-master/Dockerfile | 1 + lava-master/scripts/setup.sh | 24 ++++++++++++++++++++++++ lavalab-gen.py | 25 +++++++++++++++++++++++-- 4 files changed, 53 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index df92777..07139d7 100644 --- a/README.md +++ b/README.md @@ -228,6 +228,11 @@ masters: email: email of the user (optional) superuser: yes/no (default no) staff: yes/no (default no) + groups: + - name: Name of the group this user should join + groups: + - name: LAVA group name + submitter: True/False Can this group can submit jobs tokens: - username: The LAVA user owning the token below. (This user should be created via users:) token: The token for this callback diff --git a/lava-master/Dockerfile b/lava-master/Dockerfile index d824135..cf47c39 100644 --- a/lava-master/Dockerfile +++ b/lava-master/Dockerfile @@ -11,6 +11,7 @@ COPY health-checks/* /etc/lava-server/dispatcher-config/health-checks/ COPY devices/ /root/devices/ 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 / diff --git a/lava-master/scripts/setup.sh b/lava-master/scripts/setup.sh index 426876f..b362d16 100755 --- a/lava-master/scripts/setup.sh +++ b/lava-master/scripts/setup.sh @@ -66,6 +66,30 @@ if [ -e /root/lava-users ];then done fi +if [ -e /root/lava-groups ];then + for group in $(ls /root/lava-groups/*group) + do + GROUPNAME="" + SUBMIT=0 + OPTION_SUBMIT="" + . $group + if [ $SUBMIT -eq 1 ];then + echo "DEBUG: $GROUPNAME can submit jobs" + OPTION_SUBMIT="--submitting" + fi + echo "DEBUG: Add group $GROUPNAME" + lava-server manage groups add $OPTION_SUBMIT $GROUPNAME || exit 1 + if [ -e ${group}.list ];then + echo "DEBUG: Found ${group}.list" + while read username + do + echo "DEBUG: Add user $username to group $GROUPNAME" + lava-server manage groups update --username $username $GROUPNAME || exit 1 + done < ${group}.list + fi + done +fi + if [ -e /root/lava-callback-tokens ];then for ct in $(ls /root/lava-callback-tokens) do diff --git a/lavalab-gen.py b/lavalab-gen.py index 12b4807..17eba31 100755 --- a/lavalab-gen.py +++ b/lavalab-gen.py @@ -90,7 +90,7 @@ def main(): else: masters = workers["masters"] for master in masters: - keywords_master = [ "name", "type", "host", "users", "tokens", "webadmin_https", "persistent_db", "zmq_auth", "zmq_auth_key", "zmq_auth_key_secret", "http_fqdn" ] + keywords_master = [ "name", "type", "host", "users", "groups", "tokens", "webadmin_https", "persistent_db", "zmq_auth", "zmq_auth_key", "zmq_auth_key_secret", "http_fqdn" ] for keyword in master: if not keyword in keywords_master: print("WARNING: unknown keyword %s" % keyword) @@ -131,6 +131,8 @@ def main(): # handle users / tokens userdir = "%s/users" % workerdir os.mkdir(userdir) + groupdir = "%s/groups" % workerdir + os.mkdir(groupdir) worker = master webadmin_https = False if "webadmin_https" in worker: @@ -163,7 +165,7 @@ def main(): need_zmq_auth_gen = True if "users" in worker: for user in worker["users"]: - keywords_users = [ "name", "staff", "superuser", "password", "token", "email" ] + keywords_users = [ "name", "staff", "superuser", "password", "token", "email", "groups" ] for keyword in user: if not keyword in keywords_users: print("WARNING: unknown keyword %s" % keyword) @@ -188,6 +190,25 @@ def main(): if value is True: ftok.write("SUPERUSER=1\n") ftok.close() + if "groups" in user: + for group in user["groups"]: + groupname = group["name"] + print("\tAdd user %s to %s" % (username, groupname)) + fgrp_userlist = open("%s/%s.group.list" % (groupdir, groupname), "a") + fgrp_userlist.write("%s\n" % username) + fgrp_userlist.close() + if "groups" in worker: + for group in worker["groups"]: + groupname = group["name"] + print("\tAdding group %s" % groupname) + fgrp = open("%s/%s.group" % (groupdir, groupname), "w") + fgrp.write("GROUPNAME=%s\n" % groupname) + submitter = False + if "submitter" in group: + submitter = group["submitter"] + if submitter: + fgrp.write("SUBMIT=1\n") + fgrp.close() tokendir = "%s/tokens" % workerdir os.mkdir(tokendir) if "tokens" in worker: -- cgit 1.2.3-korg