blob: 83f9f476d01962fe79219130c2d8ef3ab534497b (
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/bash
#
# Simple script to check the basic OpenStack clients
#
# Author:
# jose.lausuch@ericsson.com
#
declare -A service_cmd_array
service_cmd_array['nova']='openstack server list'
service_cmd_array['neutron']='openstack network list'
service_cmd_array['keystone']='openstack endpoint list'
service_cmd_array['cinder']='openstack volume list'
service_cmd_array['glance']='openstack image list'
MANDATORY_SERVICES='nova neutron keystone glance'
OPTIONAL_SERVICES='cinder'
verify_connectivity() {
for i in $(seq 0 9); do
if echo "test" | nc -v -w 10 $1 $2 &>/dev/null; then
return 0
fi
sleep 1
done
return 1
}
verify_SSL_connectivity() {
openssl s_client -connect $1:$2 &>/dev/null
return $?
}
check_service() {
local service cmd
service=$1
cmd=${service_cmd_array[$service]}
if [ -z "$2" ]; then
required='false'
else
required=$2
fi
echo ">>Checking ${service} service..."
if ! openstack service list | grep -i ${service} > /dev/null; then
if [ "$required" == 'false' ]; then
echo "WARN: Optional Service ${service} is not enabled!"
return
else
echo "ERROR: Required Service ${service} is not enabled!"
exit 1
fi
fi
$cmd &>/dev/null
result=$?
if [ $result -ne 0 ]; then
echo "ERROR: Failed execution $cmd. The $service does not seem to be working."
exit 1
else
echo " ...OK"
fi
}
if [ -z $OS_AUTH_URL ];then
echo "ERROR: OS_AUTH_URL environment variable missing... Have you sourced the OpenStack credentials?"
exit 1
fi
echo "Checking OpenStack endpoints:"
publicURL=$(openstack catalog show identity |awk '/public/ {print $4}')
publicIP=$(echo $publicURL|sed 's/^.*http.*\:\/\///'|sed 's/.[^:]*$//')
publicPort=$(echo $publicURL|grep -Po '(?<=:)\d+')
https_enabled=$(echo $publicURL | grep 'https')
if [[ -n $https_enabled ]]; then
echo ">>Verifying SSL connectivity to the public endpoint $publicIP:$publicPort..."
verify_SSL_connectivity $publicIP $publicPort
else
echo ">>Verifying connectivity to the public endpoint $publicIP:$publicPort..."
verify_connectivity $publicIP $publicPort
fi
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "ERROR: Cannot talk to the public endpoint $publicIP:$publicPort ."
echo "OS_AUTH_URL=$OS_AUTH_URL"
exit 1
fi
echo " ...OK"
adminURL=$(openstack catalog show identity |awk '/admin/ {print $4}')
if [ -z ${adminURL} ]; then
echo "ERROR: Cannot determine the admin URL."
openstack catalog show identity
exit 1
fi
adminIP=$(echo $adminURL|sed 's/^.*http.*\:\/\///'|sed 's/.[^:]*$//')
adminPort=$(echo $adminURL|grep -Po '(?<=:)\d+')
https_enabled=$(echo $adminURL | grep 'https')
if [[ -n $https_enabled ]]; then
echo ">>Verifying SSL connectivity to the admin endpoint $adminIP:$adminPort..."
verify_SSL_connectivity $adminIP $adminPort
else
echo ">>Verifying connectivity to the admin endpoint $adminIP:$adminPort..."
verify_connectivity $adminIP $adminPort
fi
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "ERROR: Cannot talk to the admin endpoint $adminIP:$adminPort ."
echo "$adminURL"
exit 1
fi
echo " ...OK"
echo "Checking Required OpenStack services:"
for service in $MANDATORY_SERVICES; do
check_service $service "true"
done
echo "Required OpenStack services are OK."
echo "Checking Optional OpenStack services:"
for service in $OPTIONAL_SERVICES; do
check_service $service
done
echo "Checking External network..."
networks=($(neutron net-list -F id | tail -n +4 | head -n -1 | awk '{print $2}'))
is_external=False
for net in "${networks[@]}"
do
is_external=$(neutron net-show $net|grep "router:external"|awk '{print $4}')
if [ $is_external == "True" ]; then
echo "External network found: $net"
break
fi
done
if [ $is_external == "False" ]; then
echo "ERROR: There are no external networks in the deployment."
exit 1
fi
exit 0
|