#!/bin/bash

#Author: <mihai-radu.dumitru.ext@unify.com>
#
# Daemon for starting inventory server
# To be used as RA in HA
#
#HOC:
# 2015.04.08 - initial creation
# 2015.04.20 - mihai
#   - changed start and stop to return 0 in case already started or stopped
# 2015.05.14 - mihai
#   - restart inventory client daemon on local node to cover simplex case because it is checking if server is running

# /etc/init.d/inventoryserverd
#
### BEGIN INIT INFO
# Provides: inventoryserverd
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Inventory Server Daemon
### END INIT INFO

INVENTORY_SERVER_PIDFILE=/var/run/inventory-server.pid
SERVER=/opt/inventory/inventory-server.pl

. /etc/profile
. /etc/rc.status

rc_reset
case "$1" in
    start)
        if checkproc -p $INVENTORY_SERVER_PIDFILE /usr/bin/perl; then
            echo -n "Service Inventory Server already running "
            true
            rc_status -v
        else
            echo -n "Starting Inventory Server daemon "
            0</dev/null >/dev/null 2>&1 startproc -f -p $INVENTORY_SERVER_PIDFILE /usr/bin/perl $SERVER
            rc_status -v
			/opt/inventory/inventory-server-net-helper.sh start
			/opt/inventory/inventory-client-updater.sh start
            # make sure the SNMP config files exist to avoid errors in the SG
            mkdir -p /var/opt/soco2/SNMP/
            touch /var/opt/soco2/SNMP/snmp.xml.epoch
            touch /var/opt/soco2/SNMP/snmp.xml
            #register callback interface script for SNMP configuration replication to Appliances
            /opt/inventory/inventory register_notification_callback GET_SNMP_CONFIG_BLOB /opt/inventory/get_snmp_config_blob.sh
            #register callback interface script for MEK replication to Appliances
            /opt/inventory/inventory register_notification_callback GET_MEK_BLOB /opt/inventory/get_mek_blob.sh
            #register callback interface script for Syslog Forward replication to Appliances
            /opt/inventory/inventory register_notification_callback GET_SYSLOG_FORWARD_CONFIG /opt/inventory/get_syslog_forward_config.sh
            #restart inventory client daemon on local node to cover simplex case because it is checking if server is running
            ( /etc/init.d/inventoryd stop ; sleep 0.2 ; /etc/init.d/inventoryd start ) &
        fi
        ;;
    stop)
        if checkproc -p $INVENTORY_SERVER_PIDFILE /usr/bin/perl; then
            echo -n "Shutting down Inventory Server daemon "
			/opt/inventory/inventory-server-net-helper.sh stop
			/opt/inventory/inventory-client-updater.sh stop
            killproc -p $INVENTORY_SERVER_PIDFILE /usr/bin/perl
            rc_status -v
        else
            echo -n "Service Inventory Server not running "
            true
            rc_status -v
        fi
        ;;
    restart|reload|force-reload)
        $0 stop
        $0 start
        rc_status
        ;;
    status)
        echo -n "Checking for Inventory Server daemon "
        checkproc -p $INVENTORY_SERVER_PIDFILE /usr/bin/perl
        rc_status -v
		/opt/inventory/inventory-server-net-helper.sh reload
		/opt/inventory/inventory-client-updater.sh reload
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
        exit 2
        ;;
esac
rc_exit
