summaryrefslogtreecommitdiffstats
path: root/utils/env_prepare/config_prepare.sh
blob: b13b5a021b653aae325b89641d5ae4cd4b94a27f (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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
##############################################################################
# Copyright (c) 2017 Huawei Technologies Co.,Ltd 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 file is to prepare the openstack certs and pod description that required
# for Bottlenecks tests.
usage="Script to prepare the configurations before testing.

usage:
    bash $(basename "$0") [-h|--help] [-i <installer>] [--debug]

where:
    -h|--help         show the help text
    -i|--installer    input the name of the installer
      <installer>         one of the following:
                              (apex, compass, fuel, joid)
    --debug
                      debug option switch
examples:
    $(basename "$0") -i compass"

# Debug option
redirect="/dev/null"

# Process input variables
while [[ $# > 0 ]]
    do
    key="$1"
    case $key in
        -h|--help)
            echo "$usage"
            exit 0
            shift
        ;;
        -i|--installer)
            INSTALLER_TYPE="$2"
            shift
        ;;
        --debug)
            redirect="/dev/stdout"
            shift
        ;;
        *)
            echo "unkown option $1 $2"
            exit 1
        ;;
    esac
    shift
done

# Define alias for log printing
info () {
    logger -s -t "BOTTLENECKS INFO" "$*"
}

error () {
    logger -s -t "BOTTLENECKS ERROR" "$*"
    exit 1
}

# Repo and configs
RELENG_REPO="/home/releng"
BOTTLENECKS_CONFIG=/tmp
OPENRC=${BOTTLENECKS_CONFIG}/admin_rc.sh
OS_CACERT=${BOTTLENECKS_CONFIG}/os_cacert


##############################################################################
# Preparing scripts for openstack and pod configs for OPNFV Installers
##############################################################################
# Define Variables
info "Downloading Releng fetch_os_creds script for openstack/pod configs of OPNFV installers"

[ -d ${RELENG_REPO} ] && rm -rf ${RELENG_REPO}
git clone https://gerrit.opnfv.org/gerrit/releng ${RELENG_REPO} >${redirect}

info "Downloading Yardstick for pod configs of OPNFV installers"
YARDSTICK_REPO="/home/yardstick"
[ -d ${YARDSTICK_REPO} ] && rm -rf ${YARDSTICK_REPO}
git clone https://gerrit.opnfv.org/gerrit/yardstick ${YARDSTICK_REPO} >${redirect}

# Preparing configuration files for testing
if [[ ${INSTALLER_TYPE} != "" ]]; then
    # Preparing OpenStack RC and Cacert files
    info "fetching os credentials from $INSTALLER_TYPE"
    if [[ $INSTALLER_TYPE == 'compass' ]]; then
        export BRANCH="master"
        INSTALLER_IP=192.168.200.2
        if [[ ${BRANCH} == 'master' ]]; then
            ${RELENG_REPO}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} -o ${OS_CACERT} >${redirect}
        else
            ${RELENG_REPO}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP}  >${redirect}
        fi
    elif [[ $INSTALLER_TYPE == 'apex' ]]; then
        INSTALLER_IP=$(sudo virsh domifaddr undercloud | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
        ${RELENG_REPO}/utils/fetch_os_creds.sh -d ${OPENRC} -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} -o ${OS_CACERT} >${redirect}
        echo ${cmd}
        ${cmd}
    else
        error "The installer is not specified"
        exit 1
    fi

    # Finding and crearting POD description files from different deployments
    if [[ ${INSTALLER_TYPE} == 'compass' ]]; then
        cmd="sudo cp ${YARDSTICK_REPO}/etc/yardstick/nodes/compass_sclab_virtual/pod.yaml \
        ${BOTTLENECKS_CONFIG}"
        info ${cmd}
        ${cmd}
    elif [[ ${INSTALLER_TYPE} == 'apex' ]]; then
        sudo pip install virtualenv

        sudo virtualenv venv
        source venv/bin/activate
        sudo pip install -e ${RELENG_REPO}/modules/ >/dev/null
        sudo pip install netaddr

        options="-u stack -k /root/.ssh/id_rsa"
        cmd="sudo python ${RELENG_REPO}/utils/create_pod_file.py -t ${INSTALLER_TYPE} \
         -i ${INSTALLER_IP} ${options} -f ${BOTTLENECKS_CONFIG}/pod.yaml"
        info ${cmd}
        ${cmd}

        ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
        cmd="sudo scp $ssh_options stack@${INSTALLER_IP}:~/.ssh/id_rsa ${BOTTLENECKS_CONFIG}/id_rsa"
        info ${cmd}
        ${cmd}

        deactivate
    fi


    ##############################################################################
    # Check the existence of the output configs for OPNFV Installers
    ##############################################################################
    # Checking the pod decription file
    if [ -f ${BOTTLENECKS_CONFIG}/pod.yaml ]; then
        info "FILE - ${BOTTLENECKS_CONFIG}/pod.yaml:"
        cat ${BOTTLENECKS_CONFIG}/pod.yaml
    else
        error "Cannot find file ${BOTTLENECKS_CONFIG}/pod.yaml. Please check if it is existing."
        sudo ls -al ${BOTTLENECKS_CONFIG}
    fi

    # Checking the openstack rc and os_cacert file
    if [[ -f ${OPENRC} ]]; then
        info "Opentack credentials path is ${OPENRC}"
        if [[ -f ${OS_CACERT} ]]; then
            info "Writing ${OS_CACERT} to ${OPENRC}"
            echo "export OS_CACERT=${OS_CACERT}" >> ${OPENRC}
            cat ${OPENRC}
        else
           error "Couldn't find openstack cacert file: ${OS_CACERT}, please check if the it's been properly provided."
       fi
    else
        error "Couldn't find openstack rc file: ${OPENRC}, please check if the it's been properly provided."
        exit 1
    fi

    # Checking ssh key id_rsa
    if [[ -f "/tmp/id_rsa" ]]; then
        info "Path of ssh key file for openstack nodes is /tmp/id_rsa"
    else
        error "Couldn't find the ssh key file for openstack nodes. If you are using user/pwd in pod.yaml, please ignore."
    fi
fi