summaryrefslogtreecommitdiffstats
path: root/debian/bcfg2.init
blob: 76adf0ad47835b91a31841569b7a89878ac13ea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/sh
#
# bcfg2 - bcfg2 configuration client
#
# chkconfig: 2345 19 81
# description: bcfg2 client for configuration requests
#
### BEGIN INIT INFO
# Provides:          bcfg2
# Required-Start:    $network $remote_fs $named
# Required-Stop:     $network $remote_fs $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Configuration management client
# Description:       Bcfg2 is a configuration management system that builds
#                    installs configuration files served by bcfg2-server
#                    This is a client that installs the server provided
#                    Configuration.
### END INIT INFO

# This might need some better logic
BCFG2=/usr/sbin/bcfg2

# Set default options
#    You can set script specific options with BCFG2_OPTIONS_INIT
#    You can set agent-mode specific options with BCFG2_OPTIONS_AGENT
BCFG2_OPTIONS="-q"

# Disabled per default
BCFG2_ENABLED=0
BCFG2_INIT=0
BCFG2_AGENT=0

# Include default startup configuration if exists
test -f "/etc/default/bcfg2" && . /etc/default/bcfg2

[ "$BCFG2_ENABLED" -eq 0 ] && exit 0
[ "$BCFG2_AGENT" -eq 0  -a "$BCFG2_INIT" -eq 0 ] && exit 0

# Exit if bcfg2 doesn't exist and is not executable
test -x $BCFG2 || exit 5

# Agent mode daemon capability
PIDFILE=/var/run/bcfg2-agent.pid
# Internal variables
BINARY=$(basename $BCFG2)

AGENT_EXTRA_OPTS="-A -i ${PIDFILE}"

# Include lsb functions
. /lib/lsb/init-functions

start () {
    echo -n "Running configuration management client: "
    if [ "$BCFG2_AGENT" -eq 1 ]
    then
      start_daemon ${BCFG2} ${AGENT_EXTRA_OPTS} ${BCFG2_OPTIONS} ${BCFG2_OPTIONS_AGENT}
      STATUS=$?
    fi

    if [ "$BCFG2_INIT" -eq 1 ]; then
      ${BCFG2} ${BCFG2_OPTIONS} ${BCFG2_OPTIONS_INIT}
      STATUS=$?
    fi

    if [ "$STATUS" -eq 0 ]
    then
      log_success_msg "bcfg2"
      if [ "$BCFG2_AGENT" -eq 1 ]; then
          test -d /var/lock/subsys && touch /var/lock/subsys/bcfg2-agent
      fi
    else
      log_failure_msg "bcfg2"
    fi
    return $STATUS
}

status () {
    if [ "$BCFG2_AGENT" -eq 1 ]
    then
        PID=$(pidof -x $BINARY)
        if [ -n "$PID" ] ; then
            log_success_msg "$BINARY (pid $PID) is running..."
            return 0
        fi
        if [ -f $PIDFILE ]; then
            if [ -n "$PID" ]; then
                log_failure_msg "$BINARY dead but pid file exists..."
                return 1
            fi
        fi
    else
        return 0
    fi
}

stop () {
    if [ "$BCFG2_AGENT" -eq 1 ]
    then
      echo -n "Stopping configuration management client daemon: "
      killproc -p $PIDFILE ${BINARY}
      STATUS=$?
      if [ "$STATUS" -eq 0 ]
      then
        log_success_msg "bcfg2"
        if [ "$BCFG2_AGENT" -eq 1 ]; then
            test -d /var/lock/subsys && rm -f /var/lock/subsys/bcfg2-agent
        fi
      else
        log_failure_msg "bcfg2"
      fi
      return $STATUS
    else
      return 0
    fi
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    status)
        status
    ;;
    restart|reload|force-reload)
        if [ "$BCFG2_AGENT" -eq 1 ]
        then
            stop
            sleep 5
            start
        fi
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
    exit 1
esac

exit 0