Add ganeti-master-role.ocf example file
[ganeti-local] / doc / examples / basic-oob
1 #!/bin/bash
2 #
3
4 # Copyright (C) 2011 Google Inc.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 # 02110-1301, USA.
20
21 SSH_USER='root'
22 SSH_FLAGS='-q -oStrictHostKeyChecking=no'
23
24 EXIT_SUCCESS=0
25 EXIT_FAILURE=1
26 EXIT_UNKNOWN=2
27
28 _run_ssh() {
29   local host="$1"
30   local command="$2"
31
32   ssh $SSH_FLAGS "$SSH_USER@$host" "$command" 1>&2
33   return $?
34 }
35
36 _power_on() {
37   echo 'power-on not supported in this script' >&2
38   exit $EXIT_FAILURE
39 }
40
41 _power_off() {
42   local host="$1"
43
44   if ! _run_ssh "$host" 'shutdown -h now'; then
45     echo "Failure during ssh to $host" >&2
46     exit $EXIT_FAILURE
47   fi
48 }
49
50 _power_cycle() {
51   local host="$1"
52
53   if ! _run_ssh "$host" 'shutdown -r now'; then
54     echo "Failure during ssh to $host" >&2
55     exit $EXIT_FAILURE
56   fi
57 }
58
59 _power_status() {
60   local host="$1"
61
62   if fping -q "$host" > /dev/null 2>&1; then
63     echo '{ "powered": true }'
64   else
65     echo '{ "powered": false }'
66   fi
67 }
68
69 _health() {
70   echo 'health not supported in this script' >&2
71   exit $EXIT_FAILURE
72 }
73
74 _action() {
75   local command="$1"
76   local host="$2"
77
78   case "$command" in
79     power-on)
80       _power_on "$host"
81       ;;
82     power-off)
83       _power_off "$host"
84       ;;
85     power-cycle)
86       _power_cycle "$host"
87       ;;
88     power-status)
89       _power_status "$host"
90       ;;
91     health)
92       _health "$host"
93       ;;
94     *)
95       echo "Unsupported command '$command'" >&2
96       exit $EXIT_FAILURE
97       ;;
98   esac
99 }
100
101 main() {
102   if [[ $# != 2 ]]; then
103     echo "Wrong argument count, got $#, expected 2" >&2
104     exit $EXIT_FAILURE
105   fi
106
107   _action "$@"
108
109   exit $EXIT_SUCCESS
110 }
111
112 main "$@"