~openstack-charm-testers/openstack-charm-testing/percona-split-net

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
#!/bin/bash

set -e

function upload_image {
    src=$1
    image_name=$2
    image_file=$3
    case "$src" in
        swift) http_root="http://$SWIFT_IP:80/swift/v1/images";;
        cloudimages) http_root="http://cloud-images.ubuntu.com/${image_name}/current";;
    esac
    [ -f ~/images/$image_file ] || {
        wget -O ~/images/$image_file ${http_root}/${image_file}
    }
    openstack image show $image_name || {
        openstack image create --container-format=bare --disk-format=qcow2 --file=${HOME}/images/$image_file  $image_name
    }
}

# Install dependencies and CLI tools
# See also requirements.txt in tempest (probably need to sudo pip install -r requirements.txt)
sudo apt-get install git testrepository subunit python-nose python-lxml python-boto \
    python-junitxml python-subunit python-testresources python-oslotest python-stevedore \
    python-cinderclient python-glanceclient python-heatclient python-keystoneclient \
    python-neutronclient python-novaclient python-swiftclient python-ceilometerclient \
    openvswitch-test openvswitch-common -y

# Set serverstack defaults, if not already set.
[[ -z "$GATEWAY" ]] && export GATEWAY="10.5.0.1"
[[ -z "$CIDR_EXT" ]] && export CIDR_EXT="10.5.0.0/16"
[[ -z "$FIP_RANGE" ]] && export FIP_RANGE="10.5.150.0:10.5.200.254"
[[ -z "$NAMESERVER" ]] && export NAMESERVER="10.245.160.2"
[[ -z "$CIDR_PRIV" ]] && export CIDR_PRIV="192.168.21.0/24"
[[ -z "$SWIFT_IP" ]] && export SWIFT_IP="10.245.161.162"

# Accept network type as first parameter, assume gre if unspecified
net_type=${1:-"gre"}

# If not on bare metal, add extra port to overcloud neutron-gateway and configure charm to use it
if [[ "${BARE_METAL^^}" != "TRUE" ]]; then
    unset OS_DEFAULT_DOMAIN OS_PROJECT_NAME OS_IDENTITY_API_VERSION OS_PROJECT_DOMAIN_NAME
	source novarc_unset_all
    source ~/novarc
    ./bin/post-deploy-config neutron-gateway
fi
# Configure neutron networking on overcloud
source novarcv3_domain
./bin/neutron-ext-net-ksv3 --project admin --network-type $net_type -g $GATEWAY -c $CIDR_EXT -f $FIP_RANGE ext_net
./bin/neutron-tenant-net-ksv3 --project admin --network-type $net_type -r provider-router -N $NAMESERVER private $CIDR_PRIV
ext_net=$(openstack network list | awk '/ext_net/ {print $2}')

# Create demo/testing users, tenants and flavor
openstack project show demo || openstack project create demo
openstack user show demo || openstack user create --project demo --password pass --enable --email demo@dev.null demo
openstack role show Member || openstack role create Member
openstack role add --user demo --project demo Member
openstack project show alt_demo || openstack project create alt_demo
openstack user show alt_demo || openstack user create --project alt_demo --password secret --enable --email alt_demo@dev.null alt_demo
openstack role add --user alt_demo --project alt_demo Member
access=$(openstack ec2 credentials create --user demo --project demo  | awk '/access/ {print $4}')
secret=$(openstack ec2 credentials show $access  | awk '/secret/ {print $4}')

source novarcv3_project 
# Download images if not already present
mkdir -vp ~/images
upload_image cloudimages xenial xenial-server-cloudimg-amd64-disk1.img
upload_image cloudimages wily wily-server-cloudimg-amd64-disk1.img
upload_image cloudimages trusty trusty-server-cloudimg-amd64-disk1.img
upload_image cloudimages precise precise-server-cloudimg-amd64-disk1.img
upload_image swift cirros cirros-0.3.4-x86_64-disk.img
image_id=$(openstack image list | awk '/cirros/ {print $2}')
image_alt_id=$(openstack image list | awk '/precise/ {print $2}')


echo "Flavors"
openstack flavor show m1.cirros || openstack flavor create --id 6 --ram 64 --disk 1 --vcpus 1 m1.cirros
openstack flavor show m1.tempest || openstack flavor create --id 7 --ram 256 --disk 5 --vcpus 1 m1.tempest
openstack flavor show m2.tempest || openstack flavor create --id 8 --ram 512 --disk 5 --vcpus 1 m2.tempest

echo "Tempest"
router=$(neutron --os-project-name admin router-list | grep provider-router | awk '{ print $2}')
# Gather vars for tempest template
keystone=$(juju-deployer -f keystone)
dashboard=$(juju-deployer -f openstack-dashboard)
ncc=$(juju-deployer -f nova-cloud-controller)
http=${OS_AUTH_PROTOCOL:-http}

# Insert vars into tempest conf
sed -e "s/__IMAGE_ID__/$image_id/g" -e "s/__IMAGE_ALT_ID__/$image_alt_id/g" \
    -e "s/__DASHBOARD__/$dashboard/g" -e "s/__KEYSTONE__/$keystone/g" \
    -e "s/__EXT_NET__/$ext_net/g" -e "s/__PROTO__/$http/g" \
    -e "s/__SWIFT__/$SWIFT_IP/g" \
    -e "s/__NAMESERVER__/$NAMESERVER/g" \
    -e "s/__CIDR_PRIV__/${CIDR_PRIV////\\/}/g" \
    -e "s/__NCC__/$ncc/g" -e "s/__SECRET__/$secret/g" -e "s/__ACCESS__/$access/g" \
    templates/tempest/tempest.conf.template > tempest.conf

# Git tempest, place the rendered tempest template
[ -d tempest ] || git clone https://github.com/openstack/tempest
cp tempest.conf tempest/etc