root / debian / genscript.py @ c5faeefb
History | View | Annotate | Download (1.8 kB)
1 |
#!/usr/bin/python
|
---|---|
2 |
|
3 |
# Generate postinst/postrm for ganeti using doc/users/*
|
4 |
|
5 |
import os |
6 |
import sys |
7 |
|
8 |
|
9 |
def read_list(fname): |
10 |
with open(fname, "r") as f: |
11 |
return [ l.strip() for l in f ] |
12 |
|
13 |
def read_pairs(fname): |
14 |
with open(fname, "r") as f: |
15 |
return [ l.strip().split(None, 1) for l in f ] |
16 |
|
17 |
if len(sys.argv) != 3 or sys.argv[1] not in ('postinst', 'postrm'): |
18 |
sys.stderr.write("Usage: %s postinst|postrm DIR\n" % sys.argv[0]) |
19 |
sys.exit(1)
|
20 |
|
21 |
root = os.path.join(sys.argv[2], 'doc/users') |
22 |
debian_root = os.path.dirname(__file__) |
23 |
|
24 |
out = ""
|
25 |
if sys.argv[1] == "postinst": |
26 |
out += "\t# Groups\n"
|
27 |
for group in read_list(os.path.join(root, "groups")): |
28 |
out += "\taddgroup --quiet --system \"%s\"\n" % group
|
29 |
out += "\n"
|
30 |
|
31 |
out += "\t# Users\n"
|
32 |
for user, group in read_pairs(os.path.join(root, "users")): |
33 |
out += "\tadduser --quiet --system --ingroup \"%s\" --no-create-home" \
|
34 |
" --disabled-password --disabled-login" \
|
35 |
" --home /var/lib/ganeti \"%s\"\n" % (group, user)
|
36 |
out += "\n"
|
37 |
|
38 |
out += "\t# Group memberships\n"
|
39 |
for user, group in read_pairs(os.path.join(root, "groupmemberships")): |
40 |
out += "\tadduser --quiet \"%s\" \"%s\"\n" % (user, group)
|
41 |
|
42 |
elif sys.argv[1] == "postrm": |
43 |
out += "\t# Users\n"
|
44 |
for user, _ in read_pairs(os.path.join(root, "users")): |
45 |
out += "\tdeluser --quiet --system \"%s\" || true\n" % user
|
46 |
out += "\n"
|
47 |
|
48 |
out += "\t# Groups\n"
|
49 |
for group in read_list(os.path.join(root, "groups")): |
50 |
out += "\tdelgroup --quiet --system \"%s\" || true\n" % group
|
51 |
out += "\n"
|
52 |
|
53 |
|
54 |
with open(os.path.join(debian_root, "ganeti.%s.in" % sys.argv[1])) as script: |
55 |
done = False
|
56 |
for line in script: |
57 |
if line.strip() == "#GANETI_USERS#" and not done: |
58 |
sys.stdout.write(out) |
59 |
done = True
|
60 |
else:
|
61 |
sys.stdout.write(line) |