diff options
| author | Vu Tran <vu.tran@windriver.com> | 2014-05-23 22:10:37 -0400 |
|---|---|---|
| committer | Bruce Ashfield <bruce.ashfield@windriver.com> | 2014-05-26 11:30:08 -0400 |
| commit | 7ac076bc61edce7788442e4750d3b5b5545a29c1 (patch) | |
| tree | 0d452dbb71379cba1d3219bd1410884dc4c01fcf /meta-openstack-controller-test-config/recipes-devtools | |
| parent | 0f728e306634535cbef82aad2024d5044d4fc032 (diff) | |
| download | meta-cloud-services-7ac076bc61edce7788442e4750d3b5b5545a29c1.tar.gz | |
neutron controller test config
Tempest requires a shared network to exist prior
to start the tempest test. Change neutron settings
to first search for an existing a shared network, if
there is none then prepare a simple real flat network
that is based on openvswith.
Signed-off-by: Vu Tran <vu.tran@windriver.com>
Diffstat (limited to 'meta-openstack-controller-test-config/recipes-devtools')
2 files changed, 162 insertions, 0 deletions
diff --git a/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron/neutron-test-config.init b/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron/neutron-test-config.init new file mode 100644 index 0000000..976bf76 --- /dev/null +++ b/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron/neutron-test-config.init | |||
| @@ -0,0 +1,142 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | ### BEGIN INIT INFO | ||
| 4 | # Provides: | ||
| 5 | # Required-Start: $remote_fs $network $syslog | ||
| 6 | # Required-Stop: $remote_fs $syslog | ||
| 7 | # Default-Start: 2 3 4 5 | ||
| 8 | # Default-Stop: 0 1 6 | ||
| 9 | # Short-Description: Neutron Test Config | ||
| 10 | # Description: OpenStack Neutron Test Config | ||
| 11 | ### END INIT INFO | ||
| 12 | |||
| 13 | |||
| 14 | TEMPEST_CONF_FILE=/etc/tempest/tempest.conf | ||
| 15 | OVS_NEUTRON_PLUGIN=/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini | ||
| 16 | temp_file="/tmp/do_note_delete_me.temp" | ||
| 17 | temp_file_1="/tmp/do_note_delete_me_1.temp" | ||
| 18 | |||
| 19 | |||
| 20 | function get_field() { | ||
| 21 | while read data; do | ||
| 22 | if [ "$1" -lt 0 ]; then | ||
| 23 | field="(\$(NF$1))" | ||
| 24 | else | ||
| 25 | field="\$$(($1 + 1))" | ||
| 26 | fi | ||
| 27 | echo "$data" | awk -F'[ \t]*\\|[ \t]*' "{print $field}" | ||
| 28 | done | ||
| 29 | } | ||
| 30 | |||
| 31 | function setup_default_flat_net() { | ||
| 32 | local tempest_net_name="TEMPEST_NET" | ||
| 33 | local eth_dev="%NEUTRON_CONF_EXT_ETH_IF%" | ||
| 34 | local ip="%CONTROLLER_IP%" | ||
| 35 | local ip_subnet="`echo $ip | cut -d '.' -f 1`.`echo $ip | cut -d '.' -f 2`.`echo $ip | cut -d '.' -f 3`" | ||
| 36 | if [ -z "$gate_way" ]; then | ||
| 37 | local gate_way="${ip_subnet}.1" | ||
| 38 | fi | ||
| 39 | |||
| 40 | sed -i "s/^# Example: network_vlan_ranges = physnet1:1000:2999/network_vlan_ranges = ph-eth0:1:1/" $OVS_NEUTRON_PLUGIN | ||
| 41 | sed -i "s/^network_vlan_ranges = .*/network_vlan_ranges = ph-eth0:1:1/" $OVS_NEUTRON_PLUGIN | ||
| 42 | sed -i "s/^# Example: bridge_mappings = physnet1:br-eth1/bridge_mappings = ph-eth0:br-eth0/" $OVS_NEUTRON_PLUGIN | ||
| 43 | sed -i "s/^bridge_mappings = .*/bridge_mappings = ph-eth0:br-eth0/" $OVS_NEUTRON_PLUGIN | ||
| 44 | sed -i "s/^local_ip = .*/local_ip = ${ip}/" $OVS_NEUTRON_PLUGIN | ||
| 45 | |||
| 46 | # Setup host OVS | ||
| 47 | ovs-vsctl add-br br-${eth_dev} | ||
| 48 | ovs-vsctl add-port br-${eth_dev} ${eth_dev} | ||
| 49 | ifconfig ${eth_dev} 0.0.0.0 | ||
| 50 | ifconfig br-${eth_dev} ${ip}/16 | ||
| 51 | route add default gw $gate_way | ||
| 52 | |||
| 53 | /etc/init.d/neutron-openvswitch-agent stop | ||
| 54 | /etc/init.d/neutron-dhcp-agent stop | ||
| 55 | /etc/init.d/neutron-server reload | ||
| 56 | /etc/init.d/neutron-dhcp-agent start | ||
| 57 | /etc/init.d/neutron-openvswitch-agent start | ||
| 58 | sleep 5 | ||
| 59 | |||
| 60 | EXTERNAL_NET_ID=`neutron net-create ${tempest_net_name} --provider:physical_network=ph-eth0 --provider:network_type=flat --router:external=True | grep " id " | get_field 2` | ||
| 61 | neutron subnet-create ${tempest_net_name} ${ip_subnet}.0/24 \ | ||
| 62 | --name ${tempest_net_name}_SUBNET --no-gateway \ | ||
| 63 | --host-route destination=0.0.0.0/0,nexthop=$gate_way | ||
| 64 | EXT_TO_INT_ROUTER_ID=`neutron router-create ext-to-int | grep " id " | get_field 2` | ||
| 65 | neutron router-gateway-set $EXT_TO_INT_ROUTER_ID $EXTERNAL_NET_ID | ||
| 66 | } | ||
| 67 | |||
| 68 | start() | ||
| 69 | { | ||
| 70 | if [ -e $TEMPEST_CONF_FILE ]; then | ||
| 71 | sleep 5 | ||
| 72 | source /etc/nova/openrc | ||
| 73 | neutron net-list > $temp_file 2>&1 | ||
| 74 | if [ "$?" != "0" ]; then | ||
| 75 | echo "Neutron service is not running" | ||
| 76 | exit 1 | ||
| 77 | fi | ||
| 78 | shared_net_found=0 | ||
| 79 | while read line; do | ||
| 80 | net_id=`echo $line | get_field 1` | ||
| 81 | neutron net-show $net_id > $temp_file_1 2>&1 | ||
| 82 | if [ "$?" == "0" ]; then | ||
| 83 | is_external=`grep -F '| router:external' $temp_file_1 | get_field 2` | ||
| 84 | is_shared=`grep -F '| shared' $temp_file_1 | get_field 2` | ||
| 85 | if [ "$is_external" == "True" ] && [ "$is_shared" == "False" ] ; then | ||
| 86 | shared_net_found=1 | ||
| 87 | break | ||
| 88 | fi | ||
| 89 | fi | ||
| 90 | done < $temp_file | ||
| 91 | |||
| 92 | if [ "$shared_net_found" == "0" ]; then | ||
| 93 | echo "Cannot find shared network, create default one" | ||
| 94 | setup_default_flat_net | ||
| 95 | fi | ||
| 96 | |||
| 97 | neutron net-list > $temp_file 2>&1 | ||
| 98 | while read line; do | ||
| 99 | net_id=`echo $line | get_field 1` | ||
| 100 | neutron net-show $net_id > $temp_file_1 2>&1 | ||
| 101 | if [ "$?" == "0" ]; then | ||
| 102 | is_external=`grep -F '| router:external' $temp_file_1 | get_field 2` | ||
| 103 | is_shared=`grep -F '| shared' $temp_file_1 | get_field 2` | ||
| 104 | shared_net_name=`grep -F '| name' $temp_file_1 | get_field 2` | ||
| 105 | if [ "$is_external" == "True" ] && [ "$is_shared" == "False" ] ; then | ||
| 106 | sed -i "s/^public_network_id = .*/public_network_id = ${net_id}/" $TEMPEST_CONF_FILE | ||
| 107 | sed -i "s/^fixed_network_name = .*/fixed_network_name = ${shared_net_name}/" $TEMPEST_CONF_FILE | ||
| 108 | break | ||
| 109 | fi | ||
| 110 | fi | ||
| 111 | done < $temp_file | ||
| 112 | |||
| 113 | neutron router-list > $temp_file 2>&1 | ||
| 114 | while read line; do | ||
| 115 | router_id=`echo $line | get_field 1` | ||
| 116 | neutron router-show $router_id > $temp_file_1 2>&1 | ||
| 117 | res=`grep -F "$net_id" $temp_file_1` | ||
| 118 | if [ ! -z "$res" ]; then | ||
| 119 | sed -i "s/^public_router_id = .*/public_router_id = ${router_id}/" $TEMPEST_CONF_FILE | ||
| 120 | break | ||
| 121 | fi | ||
| 122 | done < $temp_file | ||
| 123 | |||
| 124 | rm -f $temp_file > /dev/null 2>&1 | ||
| 125 | rm -f $temp_file_1 > /dev/null 2>&1 | ||
| 126 | fi | ||
| 127 | } | ||
| 128 | |||
| 129 | case "$1" in | ||
| 130 | start) | ||
| 131 | start | ||
| 132 | ;; | ||
| 133 | stop|force-reload|restart|reload|status) | ||
| 134 | echo "WARNING: command $1 is not supported" | ||
| 135 | ;; | ||
| 136 | *) | ||
| 137 | echo "Usage: $0 {start|stop|force-reload|restart|reload|status}" | ||
| 138 | exit 1 | ||
| 139 | ;; | ||
| 140 | esac | ||
| 141 | |||
| 142 | exit 0 | ||
diff --git a/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron_git.bbappend b/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron_git.bbappend new file mode 100644 index 0000000..2276456 --- /dev/null +++ b/meta-openstack-controller-test-config/recipes-devtools/python/python-neutron_git.bbappend | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" | ||
| 2 | |||
| 3 | SRC_URI += " file://neutron-test-config.init" | ||
| 4 | |||
| 5 | NEUTRON_CONF_EXT_ETH_IF ?= "eth0" | ||
| 6 | |||
| 7 | do_install_append() { | ||
| 8 | sed -e "s:%NEUTRON_CONF_EXT_ETH_IF%:${NEUTRON_CONF_EXT_ETH_IF}:g" -i ${WORKDIR}/neutron-test-config.init | ||
| 9 | sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/neutron-test-config.init | ||
| 10 | install -m 0755 ${WORKDIR}/neutron-test-config.init ${D}${sysconfdir}/init.d/neutron-test-config | ||
| 11 | } | ||
| 12 | |||
| 13 | PACKAGES += " ${SRCNAME}-test-config" | ||
| 14 | FILES_${SRCNAME}-test-config = "${sysconfdir}/init.d/neutron-test-config" | ||
| 15 | |||
| 16 | RDEPENDS_${SRCNAME}-tests += " ${SRCNAME}-test-config" | ||
| 17 | |||
| 18 | INITSCRIPT_PACKAGES += " ${SRCNAME}-test-config" | ||
| 19 | INITSCRIPT_NAME_${SRCNAME}-test-config = "neutron-test-config" | ||
| 20 | INITSCRIPT_PARAMS_${SRCNAME}-test-config = "defaults 95 10" | ||
