/
cluster_info.sh
206 lines (162 loc) · 4.95 KB
/
cluster_info.sh
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#!/bin/bash
. ./textfileops.sh
list_clusters() {
printf "\n\nClusters\n========\n\n"
local files=$(ls -1 /home/clustermgr/storm-linode/)
while read f
do
if [ ! -d "/home/clustermgr/storm-linode/$f" ]; then
continue
fi
if [ ! -f "/home/clustermgr/storm-linode/$f/$f.conf" ]; then
continue
fi
local stfile
stfile=$(ls /home/clustermgr/storm-linode/$f/*.info 2>/dev/null)
if [ $? -ne 0 ]; then
continue
fi
grep -q 'nimbus' "$stfile"
if [ $? -eq 0 ]; then
printf "$f\t\t[Storm cluster]\n"
else
grep -q 'myids' "$stfile"
if [ $? -eq 0 ]; then
printf "$f\t\t[Zookeeper cluster]\n"
fi
fi
done <<< "$files"
printf "\n\n"
return 0
}
# $1 : The directory basename of a storm cluster directory.
print_cluster_info() {
if [ ! -d "/home/clustermgr/storm-linode/$1" ]; then
echo "Error: $1 is not a Storm cluster directory"
return 1
fi
if [ ! -f "/home/clustermgr/storm-linode/$1/$1.conf" ]; then
echo "Error: $1 is not a Storm cluster directory"
return 1
fi
local stfile
stfile=$(ls /home/clustermgr/storm-linode/$1/*.info)
if [ $? -ne 0 ]; then
echo "$1 is not yet created"
return 1
fi
grep -q 'nimbus' "$stfile"
if [ $? -eq 0 ]; then
print_storm_cluster_info "$stfile"
else
grep -q 'myids' "$stfile"
if [ $? -eq 0 ]; then
print_zk_cluster_info "$stfile"
fi
fi
return 0
}
# $1 : A storm cluster .info file.
print_storm_cluster_info() {
local stfile="$1"
printf "\nStatus: $(get_section $stfile "status" | cut -d ':' -f2)\n\n"
local nodes=$(get_section $stfile "nodes")
local hostnames=$(get_section $stfile "hostnames")
local ipaddrs=$(get_section $stfile "ipaddresses")
local nimbus_linode_id=$(echo "$nodes"|grep 'nimbus'|cut -d ':' -f1)
local nimbus_ipline=$(echo "$ipaddrs"|grep "$nimbus_linode_id")
local nimbus_iparr=($nimbus_ipline)
local nimbus_private_ip=${nimbus_iparr[1]}
local nimbus_public_ip=${nimbus_iparr[2]}
local nimbus_hostsline=$(echo "$hostnames"|grep "$nimbus_linode_id")
local nimbus_hostsarr=($nimbus_hostsline)
local nimbus_private_host=${nimbus_hostsarr[1]}
local nimbus_public_host=${nimbus_hostsarr[2]}
cat <<-ENDSTANZA
Nimbus:
Linode ID: $nimbus_linode_id
Private IP: $nimbus_private_ip
Private hostname: $nimbus_private_host
Public IP: $nimbus_public_ip
Public hostname: $nimbus_public_host
ENDSTANZA
local client_linode_id=$(echo "$nodes"|grep 'client'|cut -d ':' -f1)
local client_ipline=$(echo "$ipaddrs"|grep "$client_linode_id")
local client_iparr=($client_ipline)
local client_private_ip=${client_iparr[1]}
local client_public_ip=${client_iparr[2]}
local client_hostsline=$(echo "$hostnames"|grep "$client_linode_id")
local client_hostsarr=($client_hostsline)
local client_private_host=${client_hostsarr[1]}
local client_public_host=${client_hostsarr[2]}
cat <<-ENDSTANZA
Client:
Linode ID: $client_linode_id
Private IP: $client_private_ip
Private hostname: $client_private_host
Public IP: $client_public_ip
Public hostname: $client_public_host
ENDSTANZA
echo 'Supervisors:'
while read node;
do
local sup_linode_id=$(echo "$node"|cut -d ':' -f1)
local sup_ipline=$(echo "$ipaddrs"|grep "$sup_linode_id")
local sup_iparr=($sup_ipline)
local sup_private_ip=${sup_iparr[1]}
local sup_public_ip=${sup_iparr[2]}
local sup_hostsline=$(echo "$hostnames"|grep "$sup_linode_id")
local sup_hostsarr=($sup_hostsline)
local sup_private_host=${sup_hostsarr[1]}
local sup_public_host=${sup_hostsarr[2]}
cat <<-ENDSTANZA
Linode ID: $sup_linode_id
Private IP: $sup_private_ip
Private hostname: $sup_private_host
Public IP: $sup_public_ip
Public hostname: $sup_public_host
ENDSTANZA
done <<< "$(echo "$nodes" | grep 'supervisor')"
return 0
}
# $1 : A zookeeper cluster .info file.
print_zk_cluster_info() {
local stfile="$1"
printf "\nStatus: $(get_section $stfile "status" | cut -d ':' -f2)\n\n"
local nodes=$(get_section $stfile "nodes")
local hostnames=$(get_section $stfile "hostnames")
local ipaddrs=$(get_section $stfile "ipaddresses")
local zkids=$(get_section $stfile "myids")
while read node;
do
local zk_linode_id=$(echo "$node")
local zk_ipline=$(echo "$ipaddrs"|grep "$zk_linode_id")
local zk_iparr=($zk_ipline)
local zk_private_ip=${zk_iparr[1]}
local zk_public_ip=${zk_iparr[2]}
local zk_hostsline=$(echo "$hostnames"|grep "$zk_linode_id")
local zk_hostsarr=($zk_hostsline)
local zk_private_host=${zk_hostsarr[1]}
local zk_public_host=${zk_hostsarr[2]}
local zk_idline=$(echo "$zkids"|grep "$zk_linode_id")
local zk_idarr=($zk_idline)
local zk_id=${zk_idarr[1]}
cat <<-ENDSTANZA
Linode ID: $zk_linode_id
Private IP: $zk_private_ip
Private hostname: $zk_private_host
Public IP: $zk_public_ip
Public hostname: $zk_public_host
ZK ID: $zk_id
ENDSTANZA
done <<< "$(echo "$nodes")"
return 0
}
case $1 in
list)
list_clusters
;;
info)
print_cluster_info $2
;;
esac