#! /bin/sh
# ex: set tabstop=4 expandtab shiftwidth=4:
#
# Copyright (c) Likewise Corporation 2006
# Author: Gerald Carter <jerry@likewise.com>
#
#LWI_STARTUP_TYPE_REDHAT###
#LWI_STARTUP_TYPE_REDHAT# chkconfig: 35 17 9
#LWI_STARTUP_TYPE_REDHAT# description: Start and Stop Likewise Service Manager
#LWI_STARTUP_TYPE_REDHAT###
#LWI_STARTUP_TYPE_REDHAT#
#LWI_STARTUP_TYPE_SUSE### BEGIN INIT INFO
#LWI_STARTUP_TYPE_SUSE# Provides: lwsmd
#LWI_STARTUP_TYPE_SUSE# Required-Start:
#LWI_STARTUP_TYPE_SUSE# Required-Stop:
#LWI_STARTUP_TYPE_SUSE# Default-Start: 3 5
#LWI_STARTUP_TYPE_SUSE# Default-Stop: 0 1 2 6
#LWI_STARTUP_TYPE_SUSE# Description: Start and Stop Likewise Service Manager
#LWI_STARTUP_TYPE_SUSE### END INIT INFO
#LWI_STARTUP_TYPE_ESX###
#LWI_STARTUP_TYPE_ESX# chkconfig: - 35 90
#LWI_STARTUP_TYPE_ESX# description: Start and Stop Likewise Service Manager
#LWI_STARTUP_TYPE_ESX###

PLATFORM=""
if [ "`uname -s`" = "VMkernel" ]; then
    PLATFORM="ESXI"
fi

PROG_DESC="Likewise Service Manager"
PROG_BIN=/opt/likewise/sbin/lwsmd
PROG_ARGS="--start-as-daemon --syslog"
PIDFILE=/var/run/lwsmd.pid
SCRIPTNAME="lwsmd"

if [ "$PLATFORM" = "ESXI" ]; then
   PROG_SCHED_PARAM="++group=likewise"
   # using watchdog, no need for --start-as-daemon
   PROG_ARGS="--syslog"
   PROG_ERR=/var/lib/likewise/lwsmd/lwsmd.err
   STARTHOOK="fix_locale"
   POSTSTARTHOOK="start_lsass"
   POSTSTOPHOOK="refresh_hostd"
fi

fix_locale()
{
    export LC_ALL="en_US.utf8"
    export LC_CTYPE="en_US.utf8"
}

start_lsass()
{
    sleep 1
    echo -n " [starting lsass service] "
    /usr/lib/vmware/likewise/bin/lwsm start lsass
    sleep 1
    /usr/lib/vmware/likewise/bin/lw-lsa get-status 2>&1 > /dev/null
    if [ $? -ne 0 ]; then
        failure=1
        if [ `/usr/lib/vmware/likewise/bin/lwsm list | grep lsass | awk '{print $2}'` != "running" ]; then
            echo -n " [retrying start of lsass service] "
            /usr/lib/vmware/likewise/bin/lwsm start lsass
        fi
        i=1
        while [ $failure -ne 0 -a $i -le 8 ]; do
            sleep $i
            i=$(($i*2))
            /usr/lib/vmware/likewise/bin/lw-lsa get-status 2>&1 > /dev/null
            failure=$?
        done
        if [ $failure -ne 0 ]; then
            echo -n " [lsass service startup failure] "
            return 1
        else
            /bin/vim-cmd hostsvc/refresh_services
        fi
    else
        /bin/vim-cmd hostsvc/refresh_services
    fi
}

refresh_hostd()
{
    sleep 1
    /bin/vim-cmd hostsvc/refresh_services
}

. /opt/likewise/bin/init-base.sh
