summaryrefslogtreecommitdiffstats
path: root/utils/get_sdn_type.sh
blob: c331da8a60cd1d7de393ecf8138dd4d5deeb12be (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
#!/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