#!/bin/sh
# postinst script for cassandra

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)
        if ! getent group cassandra >/dev/null; then
            addgroup --system cassandra
        fi

        if ! getent passwd cassandra >/dev/null; then
            adduser --quiet \
                --system \
                --ingroup cassandra \
                --quiet \
                --disabled-login \
                --disabled-password \
                --home /var/lib/cassandra \
                --no-create-home \
                -gecos "Cassandra database" \
                cassandra
        fi

        if [ -z "$2" ]; then
            chown -R cassandra: /var/lib/cassandra
            chown -R cassandra: /var/log/cassandra
        fi
        if ! sysctl -p /etc/sysctl.d/cassandra.conf; then
            echo >&2
            echo "Warning: unable to set vm.max_map_count; is this an OpenVZ" >&2
            echo "instance? If so, it is highly recommended that you set" >&2
            echo "vm.max_map_count to 1048575 in the host." >&2
            echo >&2
            echo "Deleting the local sysctl.d/cassandra.conf." >&2
            rm -vf /etc/sysctl.d/cassandra.conf
        fi
    ;;

    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#
