aboutsummaryrefslogtreecommitdiffstats
path: root/tools/README
blob: 9477c89884c400ecfda57cc5a3497fe8ce9985d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
##############################################################################
# Copyright (c) 2015 Ericsson AB and others.
#
# 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
##############################################################################

This directory contains various utilities needed in the yardstick environment.

yardstick-img-modify is a generic script (but ubuntu cloud image specific) that
takes a another script as an argument. This second script does the actual
modifications of the image. sudo is required since the base image is mounted
using qemu's network block device support.

Usage example:

$ sudo yardstick-img-modify $HOME/yardstick/tools/ubuntu-server-cloudimg-modify.sh
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#!/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