root / daemons / daemon-util.in @ 7e1fac25
History | View | Annotate | Download (2.7 kB)
1 | f154a7a3 | Michael Hanselmann | #!/bin/bash |
---|---|---|---|
2 | f154a7a3 | Michael Hanselmann | # |
3 | f154a7a3 | Michael Hanselmann | |
4 | f154a7a3 | Michael Hanselmann | # Copyright (C) 2009 Google Inc. |
5 | f154a7a3 | Michael Hanselmann | # |
6 | f154a7a3 | Michael Hanselmann | # This program is free software; you can redistribute it and/or modify |
7 | f154a7a3 | Michael Hanselmann | # it under the terms of the GNU General Public License as published by |
8 | f154a7a3 | Michael Hanselmann | # the Free Software Foundation; either version 2 of the License, or |
9 | f154a7a3 | Michael Hanselmann | # (at your option) any later version. |
10 | f154a7a3 | Michael Hanselmann | # |
11 | f154a7a3 | Michael Hanselmann | # This program is distributed in the hope that it will be useful, but |
12 | f154a7a3 | Michael Hanselmann | # WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | f154a7a3 | Michael Hanselmann | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 | f154a7a3 | Michael Hanselmann | # General Public License for more details. |
15 | f154a7a3 | Michael Hanselmann | # |
16 | f154a7a3 | Michael Hanselmann | # You should have received a copy of the GNU General Public License |
17 | f154a7a3 | Michael Hanselmann | # along with this program; if not, write to the Free Software |
18 | f154a7a3 | Michael Hanselmann | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
19 | f154a7a3 | Michael Hanselmann | # 02110-1301, USA. |
20 | f154a7a3 | Michael Hanselmann | |
21 | f154a7a3 | Michael Hanselmann | set -e |
22 | f154a7a3 | Michael Hanselmann | |
23 | f154a7a3 | Michael Hanselmann | defaults_file=@SYSCONFDIR@/default/ganeti |
24 | f154a7a3 | Michael Hanselmann | |
25 | f154a7a3 | Michael Hanselmann | NODED_ARGS= |
26 | f154a7a3 | Michael Hanselmann | MASTERD_ARGS= |
27 | f154a7a3 | Michael Hanselmann | CONFD_ARGS= |
28 | f154a7a3 | Michael Hanselmann | RAPI_ARGS= |
29 | f154a7a3 | Michael Hanselmann | |
30 | f154a7a3 | Michael Hanselmann | # Read defaults file if it exists |
31 | f154a7a3 | Michael Hanselmann | if [[ -s $defaults_file ]]; then |
32 | f154a7a3 | Michael Hanselmann | . $defaults_file |
33 | f154a7a3 | Michael Hanselmann | fi |
34 | f154a7a3 | Michael Hanselmann | |
35 | f154a7a3 | Michael Hanselmann | _daemon_pidfile() { |
36 | f154a7a3 | Michael Hanselmann | echo "@LOCALSTATEDIR@/run/ganeti/$1.pid" |
37 | f154a7a3 | Michael Hanselmann | } |
38 | f154a7a3 | Michael Hanselmann | |
39 | f154a7a3 | Michael Hanselmann | # Checks whether daemon is running |
40 | f154a7a3 | Michael Hanselmann | check() { |
41 | f154a7a3 | Michael Hanselmann | if [[ "$#" -lt 1 ]]; then |
42 | f154a7a3 | Michael Hanselmann | echo 'Missing daemon name.' >&2 |
43 | f154a7a3 | Michael Hanselmann | exit 1 |
44 | f154a7a3 | Michael Hanselmann | fi |
45 | f154a7a3 | Michael Hanselmann | |
46 | f154a7a3 | Michael Hanselmann | local name="$1"; shift |
47 | f154a7a3 | Michael Hanselmann | |
48 | f154a7a3 | Michael Hanselmann | start-stop-daemon --stop --signal 0 --quiet \ |
49 | f154a7a3 | Michael Hanselmann | --pidfile $(_daemon_pidfile $name) |
50 | f154a7a3 | Michael Hanselmann | } |
51 | f154a7a3 | Michael Hanselmann | |
52 | f154a7a3 | Michael Hanselmann | # Starts a daemon |
53 | f154a7a3 | Michael Hanselmann | start() { |
54 | f154a7a3 | Michael Hanselmann | if [[ "$#" -lt 1 ]]; then |
55 | f154a7a3 | Michael Hanselmann | echo 'Missing daemon name.' >&2 |
56 | f154a7a3 | Michael Hanselmann | exit 1 |
57 | f154a7a3 | Michael Hanselmann | fi |
58 | f154a7a3 | Michael Hanselmann | |
59 | f154a7a3 | Michael Hanselmann | local name="$1"; shift |
60 | f154a7a3 | Michael Hanselmann | |
61 | f154a7a3 | Michael Hanselmann | # Convert daemon name to uppercase after removing "ganeti-" prefix |
62 | f154a7a3 | Michael Hanselmann | local ucname=$(tr a-z A-Z <<< ${name#ganeti-}) |
63 | f154a7a3 | Michael Hanselmann | |
64 | f154a7a3 | Michael Hanselmann | # Read $<daemon>_ARGS and $EXTRA_<daemon>_ARGS |
65 | f154a7a3 | Michael Hanselmann | eval local args="\$${ucname}_ARGS \$EXTRA_${ucname}_ARGS" |
66 | f154a7a3 | Michael Hanselmann | |
67 | f154a7a3 | Michael Hanselmann | start-stop-daemon --start --quiet --oknodo \ |
68 | f154a7a3 | Michael Hanselmann | --pidfile $(_daemon_pidfile $name) \ |
69 | f154a7a3 | Michael Hanselmann | --startas "@PREFIX@/sbin/$name" \ |
70 | f154a7a3 | Michael Hanselmann | -- $args "$@" |
71 | f154a7a3 | Michael Hanselmann | } |
72 | f154a7a3 | Michael Hanselmann | |
73 | f154a7a3 | Michael Hanselmann | # Stops a daemon |
74 | f154a7a3 | Michael Hanselmann | stop() { |
75 | f154a7a3 | Michael Hanselmann | if [[ "$#" -lt 1 ]]; then |
76 | f154a7a3 | Michael Hanselmann | echo 'Missing daemon name.' >&2 |
77 | f154a7a3 | Michael Hanselmann | exit 1 |
78 | f154a7a3 | Michael Hanselmann | fi |
79 | f154a7a3 | Michael Hanselmann | |
80 | f154a7a3 | Michael Hanselmann | local name="$1"; shift |
81 | f154a7a3 | Michael Hanselmann | |
82 | f154a7a3 | Michael Hanselmann | start-stop-daemon --stop --quiet --oknodo --retry 30 \ |
83 | f154a7a3 | Michael Hanselmann | --pidfile $(_daemon_pidfile $name) |
84 | f154a7a3 | Michael Hanselmann | } |
85 | f154a7a3 | Michael Hanselmann | |
86 | f154a7a3 | Michael Hanselmann | # Starts a daemon if it's not yet running |
87 | f154a7a3 | Michael Hanselmann | check_and_start() { |
88 | f154a7a3 | Michael Hanselmann | local name="$1" |
89 | f154a7a3 | Michael Hanselmann | |
90 | f154a7a3 | Michael Hanselmann | if ! check $name; then |
91 | f154a7a3 | Michael Hanselmann | start $name |
92 | f154a7a3 | Michael Hanselmann | fi |
93 | f154a7a3 | Michael Hanselmann | } |
94 | f154a7a3 | Michael Hanselmann | |
95 | f154a7a3 | Michael Hanselmann | # Starts the master role |
96 | f154a7a3 | Michael Hanselmann | start_master() { |
97 | f154a7a3 | Michael Hanselmann | start ganeti-masterd |
98 | f154a7a3 | Michael Hanselmann | start ganeti-rapi |
99 | f154a7a3 | Michael Hanselmann | } |
100 | f154a7a3 | Michael Hanselmann | |
101 | f154a7a3 | Michael Hanselmann | # Stops the master role |
102 | f154a7a3 | Michael Hanselmann | stop_master() { |
103 | f154a7a3 | Michael Hanselmann | stop ganeti-rapi |
104 | f154a7a3 | Michael Hanselmann | stop ganeti-masterd |
105 | f154a7a3 | Michael Hanselmann | } |
106 | f154a7a3 | Michael Hanselmann | |
107 | 7e1fac25 | Michael Hanselmann | # Reloads the SSH keys |
108 | 7e1fac25 | Michael Hanselmann | reload_ssh_keys() { |
109 | 7e1fac25 | Michael Hanselmann | @RPL_SSH_INITD_SCRIPT@ restart |
110 | 7e1fac25 | Michael Hanselmann | } |
111 | 7e1fac25 | Michael Hanselmann | |
112 | f154a7a3 | Michael Hanselmann | if [[ "$#" -lt 1 ]]; then |
113 | f154a7a3 | Michael Hanselmann | echo "Usage: $0 <action>" >&2 |
114 | f154a7a3 | Michael Hanselmann | exit 1 |
115 | f154a7a3 | Michael Hanselmann | fi |
116 | f154a7a3 | Michael Hanselmann | |
117 | f154a7a3 | Michael Hanselmann | orig_action=$1; shift |
118 | f154a7a3 | Michael Hanselmann | |
119 | f154a7a3 | Michael Hanselmann | # Replace all dashes (-) with underlines (_) |
120 | f154a7a3 | Michael Hanselmann | action=${orig_action//-/_} |
121 | f154a7a3 | Michael Hanselmann | |
122 | f154a7a3 | Michael Hanselmann | # Is it a known function? |
123 | f154a7a3 | Michael Hanselmann | if ! declare -F "$action" >/dev/null 2>&1; then |
124 | f154a7a3 | Michael Hanselmann | echo "Unknown command: $orig_action" >&2 |
125 | f154a7a3 | Michael Hanselmann | exit 1 |
126 | f154a7a3 | Michael Hanselmann | fi |
127 | f154a7a3 | Michael Hanselmann | |
128 | f154a7a3 | Michael Hanselmann | # Call handler function |
129 | f154a7a3 | Michael Hanselmann | $action "$@" |