Modifies check_os.sh to check services and cinder is optional
authorTim Rozet <trozet@redhat.com>
Fri, 17 Feb 2017 16:19:37 +0000 (11:19 -0500)
committerTim Rozet <trozet@redhat.com>
Fri, 17 Feb 2017 16:19:37 +0000 (11:19 -0500)
This patch adds being able to detect if the service is enabled on the
target openstack system prior to checking if the corresponding openstack
command for that service works.  It also makes cinder optional, and
warns if that service is not up.  We don't need cinder for every
deployment type, for example: CSIT.

Change-Id: I9556acabbd16f3b13f74b496812a5742b9000153
Signed-off-by: Tim Rozet <trozet@redhat.com>
functest/ci/check_os.sh

index b875a17..2c5c021 100755 (executable)
@@ -6,6 +6,16 @@
 #    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
@@ -16,6 +26,34 @@ verify_connectivity() {
     return 1
 }
 
+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?"
@@ -56,25 +94,16 @@ fi
 echo "  ...OK"
 
 
-echo "Checking OpenStack basic services:"
-commands=('openstack endpoint list' 'openstack server list' 'openstack network list' \
-            'openstack image list' 'openstack volume list')
-for cmd in "${commands[@]}"
-do
-    service=$(echo $cmd | awk '{print $1, $2}')
-    echo ">>Checking $service service..."
-    $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
+echo "Checking Required OpenStack services:"
+for service in $MANDATORY_SERVICES; do
+    check_service $service "true"
 done
+echo "Required OpenStack services are OK."
 
-echo "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}'))