summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorentin LABBE <clabbe@baylibre.com>2018-10-16 16:08:31 +0200
committerCorentin LABBE <clabbe@baylibre.com>2018-10-17 16:27:02 +0200
commit033ceaa64ad89cdedb45f3fc3b6269063402b1bd (patch)
tree96bdfc33a050f2a8477ee524a0c39c577252dc39
parent296bc5fbc5d08ed91771a39f47f02ae90164aa6b (diff)
Permit to create groups
This patch adds support for creating groups
-rw-r--r--README.md5
-rw-r--r--lava-master/Dockerfile1
-rwxr-xr-xlava-master/scripts/setup.sh24
-rwxr-xr-xlavalab-gen.py25
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: