[Pkg-ganeti-devel] [ganeti] 08/15: Add postinst/postrm templates and generator script

Apollon Oikonomopoulos apoikos-guest at alioth.debian.org
Tue Oct 1 14:09:59 UTC 2013


This is an automated email from the git hooks/post-receive script.

apoikos-guest pushed a commit to branch master
in repository ganeti.

commit 9e52af5fe34170f850e4190b03145a9bbd8a745d
Author: Apollon Oikonomopoulos <apoikos at gmail.com>
Date:   Tue Sep 17 16:32:36 2013 +0300

    Add postinst/postrm templates and generator script
    
    debian/genscript.py is used to generate postinst/postrm from the relevant
    templates, to include the necessary user/group manipulation commands as found
    in $(CURDIR)/doc/users.
---
 debian/ganeti.postinst.in |   38 ++++++++++++++++++++++++++++
 debian/ganeti.postrm.in   |   40 +++++++++++++++++++++++++++++
 debian/genscript.py       |   61 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 139 insertions(+)

diff --git a/debian/ganeti.postinst.in b/debian/ganeti.postinst.in
new file mode 100644
index 0000000..49a5835
--- /dev/null
+++ b/debian/ganeti.postinst.in
@@ -0,0 +1,38 @@
+#!/bin/sh
+# postinst script for ganeti
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    configure)
+#GANETI_USERS#
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ganeti.postrm.in b/debian/ganeti.postrm.in
new file mode 100644
index 0000000..d882c32
--- /dev/null
+++ b/debian/ganeti.postrm.in
@@ -0,0 +1,40 @@
+#!/bin/sh
+# postrm script for ganeti
+#
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+	#GANETI_USERS#
+    ;;
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+~                                              
diff --git a/debian/genscript.py b/debian/genscript.py
new file mode 100755
index 0000000..42c9cb1
--- /dev/null
+++ b/debian/genscript.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+
+# Generate postinst/postrm for ganeti using doc/users/*
+
+import os
+import sys
+
+
+def read_list(fname):
+    with open(fname, "r") as f:
+        return [ l.strip() for l in f ]
+
+def read_pairs(fname):
+    with open(fname, "r") as f:
+        return [ l.strip().split(None, 1) for l in f ]
+
+if len(sys.argv) != 3 or sys.argv[1] not in ('postinst', 'postrm'):
+    sys.stderr.write("Usage: %s postinst|postrm DIR\n" % sys.argv[0])
+    sys.exit(1)
+
+root = os.path.join(sys.argv[2], 'doc/users')
+debian_root = os.path.dirname(__file__)
+
+out = ""
+if sys.argv[1] == "postinst":
+    out += "\t# Groups\n"
+    for group in read_list(os.path.join(root, "groups")):
+        out += "\taddgroup --quiet --system \"%s\"\n" % group
+    out += "\n"
+
+    out += "\t# Users\n"
+    for user, group in read_pairs(os.path.join(root, "users")):
+        out += "\tadduser --quiet --system --ingroup \"%s\" --no-create-home" \
+               " --disabled-password --disabled-login" \
+               " --home /var/lib/ganeti \"%s\"\n" % (group, user)
+    out += "\n"
+
+    out += "\t# Group memberships\n"
+    for user, group in read_pairs(os.path.join(root, "groupmemberships")):
+        out += "\tadduser --quiet \"%s\" \"%s\"\n" % (user, group)
+
+elif sys.argv[1] == "postrm":
+    out += "\t# Users\n"
+    for user, _ in read_pairs(os.path.join(root, "users")):
+        out += "\tdeluser --quiet --system \"%s\" || true\n" % user
+    out += "\n"
+
+    out += "\t# Groups\n"
+    for group in read_list(os.path.join(root, "groups")):
+        out += "\tdelgroup --quiet --system \"%s\" || true\n" % group
+    out += "\n"
+
+
+with open(os.path.join(debian_root, "ganeti.%s.in" % sys.argv[1])) as script:
+    done = False
+    for line in script:
+        if line.strip() == "#GANETI_USERS#" and not done:
+            sys.stdout.write(out)
+            done = True
+        else:
+            sys.stdout.write(line)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ganeti/ganeti.git



More information about the Pkg-ganeti-devel mailing list