Script to get the type of SDN controller 99/2599/1
authorjose.lausuch <jose.lausuch@ericsson.com>
Fri, 16 Oct 2015 13:44:12 +0000 (15:44 +0200)
committerjose.lausuch <jose.lausuch@ericsson.com>
Fri, 16 Oct 2015 13:44:12 +0000 (15:44 +0200)
This script goes through all the OpenStack controllers checking if there is
Karaf container running, and if so, it will ask what type of SDN
controller it is running.

JIRA: FUNCTEST-49

Change-Id: I9fe800700b9458c1a0f05b9b6a6bbb2716d27954
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
utils/get_sdn_type.sh [new file with mode: 0644]

diff --git a/utils/get_sdn_type.sh b/utils/get_sdn_type.sh
new file mode 100644 (file)
index 0000000..c331da8
--- /dev/null
@@ -0,0 +1,125 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# jose.lausuch@ericsson.com
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+CMD_ODL="/opt/opendaylight/bin/client -u karaf info 2>/dev/null | grep -i opendaylight | wc -l"
+CMD_ONOS="/opt/opendaylight/bin/client -u karaf info 2>/dev/null | grep -i onos | wc -l"
+CMD_CONTRAIL="/opt/opendaylight/bin/client -u karaf info 2>/dev/null | grep -i contrail | wc -l"
+
+usage() {
+    echo "usage: $0 -i <installer_type> -a <installer_ip>" >&2
+}
+
+info ()  {
+    logger -s -t "get_sdn_type.info" "$*"
+}
+
+
+error () {
+    logger -s -t "get_sdn_type.error" "$*"
+    exit 1
+}
+
+
+verify_connectivity() {
+    local ip=$1
+    info "Verifying connectivity to $ip..."
+    for i in $(seq 0 10); do
+        if ping -c 1 -W 1 $ip > /dev/null; then
+            info "$ip is reachable!"
+            return 0
+        fi
+        sleep 1
+    done
+    error "Can not talk to $ip."
+}
+
+
+
+#Get options
+while getopts ":d:i:a:h:" optchar; do
+    case "${optchar}" in
+        i) installer_type=${OPTARG} ;;
+        a) installer_ip=${OPTARG} ;;
+        *) echo "Non-option argument: '-${OPTARG}'" >&2
+           usage
+           exit 2
+           ;;
+    esac
+done
+
+# set vars from env if not provided by user as options
+installer_type=${installer_type:-$INSTALLER_TYPE}
+installer_ip=${installer_ip:-$INSTALLER_IP}
+
+if [ -z $installer_type ] || [ -z $installer_ip ]; then
+    usage
+    exit 2
+fi
+
+
+ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
+# Start fetching the files
+if [ "$installer_type" == "fuel" ]; then
+    #ip_fuel="10.20.0.2"
+    verify_connectivity $installer_ip
+
+    # Check if controller is alive (online='True')
+    controller_ips=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+        'fuel node | grep controller | grep True | awk "{print \$10}"') &> /dev/null
+
+    if [ -z "$controller_ips" ]; then
+        error "Controller IPs not found. Please check that the POD is correctly deployed."
+    fi
+
+
+    info "Checking Karaf in each controller..."
+    for ip in $controller_ips;
+    do
+        info "Checking type of controller ${ip}.."
+        result=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+        "ssh ${ssh_options} ${ip} ${CMD_ODL}")
+        if [ $result -gt 0 ]; then
+            info "ODL controller found!"
+            exit 0
+        fi
+        result=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+        "ssh ${ssh_options} ${ip} ${CMD_ONOS}")
+        if [ $result -gt 0 ]; then
+            info "ONOS controller found!"
+            exit 0
+        fi
+        result=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+        "ssh ${ssh_options} ${ip} ${CMD_CONTRAIL}")
+        if [ $result -gt 0 ]; then
+            info "OpenContrail controller found!"
+            exit 0
+        fi
+    done
+    info "None of the 3 supported controllers has been found."
+
+elif [ "$installer_type" == "apex" ]; then
+    echo "not implemented"
+
+elif [ "$installer_type" == "compass" ]; then
+    echo "not implemented"
+
+elif [ "$installer_type" == "joid" ]; then
+    echo "not implemented"
+
+
+else
+    error "Installer $installer is not supported by this script"
+fi
+
+
+
+exit 0
\ No newline at end of file