7 if [ "$OS_VERSION" == 'master' ]; then
10 FULL_OS_VER="stable/${OS_VERSION}"
13 if [ "$ODL_BRANCH" == 'master' ]; then
16 ODL_STREAM=${ODL_BRANCH#"stable/"}
19 echo "ODL Stream set: ${ODL_STREAM} and OS Version is ${FULL_OS_VER}"
22 git clone https://gerrit.opnfv.org/gerrit/releng.git
23 REL_PATH='releng/jjb/cperf'
25 # NOTE: sourcing overcloudrc unsets any variable with OS_ prefix
26 source ${WORKSPACE}/overcloudrc
27 # note SDN_CONTROLLER_IP is set in overcloudrc, which is the VIP
28 # for admin/public network (since we are running single network deployment)
30 NUM_CONTROL_NODES=$(python ${REL_PATH}/parse-node-yaml.py num_nodes --file $NODE_FILE_PATH)
31 NUM_COMPUTE_NODES=$(python ${REL_PATH}/parse-node-yaml.py num_nodes --node-type compute --file $NODE_FILE_PATH)
33 echo "Number of Control nodes found: ${NUM_CONTROL_NODES}"
34 echo "Number of Compute nodes found: ${NUM_COMPUTE_NODES}"
36 if [ "$NUM_COMPUTE_NODES" -eq 0 ]; then
37 OPENSTACK_TOPO="${NUM_CONTROL_NODES}cmb-0ctl-0cmp"
39 OPENSTACK_TOPO="0cmb-${NUM_CONTROL_NODES}ctl-${NUM_COMPUTE_NODES}cmp"
44 for idx in `seq 1 $NUM_CONTROL_NODES`; do
45 CONTROLLER_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-number ${idx} --file $NODE_FILE_PATH)
46 EXTRA_ROBOT_ARGS+=" -v ODL_SYSTEM_${idx}_IP:${CONTROLLER_IP} \
47 -v OS_CONTROL_NODE_${idx}_IP:${CONTROLLER_IP} \
48 -v ODL_SYSTEM_${idx}_IP:${CONTROLLER_IP} \
49 -v HA_PROXY_${idx}_IP:${SDN_CONTROLLER_IP}"
53 for idx in `seq 1 $NUM_COMPUTE_NODES`; do
54 COMPUTE_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-type compute --node-number ${idx} --file $NODE_FILE_PATH)
55 EXTRA_ROBOT_ARGS+=" -v OS_COMPUTE_${idx}_IP:${COMPUTE_IP}"
58 CONTROLLER_1_IP=$(python ${REL_PATH}/parse-node-yaml.py get_value -k address --node-number 1 --file $NODE_FILE_PATH)
60 if [ "$ODL_CONTAINERIZED" == 'false' ]; then
61 EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:'ps axf | grep org.apache.karaf | grep -v grep | wc -l || echo 0' \
62 -v NODE_START_COMMAND:'sudo systemctl start opendaylight_api' \
63 -v NODE_KILL_COMMAND:'sudo systemctl stop opendaylight_api' \
64 -v NODE_STOP_COMMAND:'sudo systemctl stop opendaylight_api' \
65 -v NODE_FREEZE_COMMAND:'sudo systemctl stop opendaylight_api' "
67 EXTRA_ROBOT_ARGS+=" -v NODE_KARAF_COUNT_COMMAND:'sudo docker ps | grep opendaylight_api | wc -l || echo 0' \
68 -v NODE_START_COMMAND:'sudo docker start opendaylight_api' \
69 -v NODE_KILL_COMMAND:'sudo docker stop opendaylight_api' \
70 -v NODE_STOP_COMMAND:'sudo docker stop opendaylight_api' \
71 -v NODE_FREEZE_COMMAND:'sudo docker stop opendaylight_api' "
74 # FIXME(trozet) remove this once it is fixed in csit
75 # Upload glance image into openstack
76 wget -O ${WORKSPACE}/cirros-0.3.5-x86_64-disk.img http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
77 export ANSIBLE_HOST_KEY_CHECKING=False
78 ansible-playbook -i ${CONTROLLER_1_IP}, -u heat-admin --key-file ${WORKSPACE}/id_rsa ${REL_PATH}/cirros-upload.yaml.ansible -vvv
80 LOGS_LOCATION=/tmp/robot_results
83 --removekeywords wuks \
84 --xunit robotxunit.xml \
87 -v BUNDLEFOLDER:/opt/opendaylight \
88 -v CONTROLLER_USER:heat-admin \
89 -v DEFAULT_LINUX_PROMPT:\$ \
90 -v DEFAULT_LINUX_PROMPT_STRICT:]\$ \
91 -v DEFAULT_USER:heat-admin \
92 -v DEVSTACK_DEPLOY_PATH:/tmp \
93 -v EXTERNAL_GATEWAY:$CONTROLLER_1_IP \
94 -v EXTERNAL_PNF:$CONTROLLER_1_IP \
95 -v EXTERNAL_SUBNET:192.0.2.0/24 \
96 -v EXTERNAL_SUBNET_ALLOCATION_POOL:start=192.0.2.100,end=192.0.2.200 \
97 -v EXTERNAL_INTERNET_ADDR:$CONTROLLER_1_IP \
98 -v HA_PROXY_IP:$SDN_CONTROLLER_IP \
99 -v NUM_ODL_SYSTEM:$NUM_CONTROL_NODES \
100 -v NUM_OS_SYSTEM:$(($NUM_CONTROL_NODES + $NUM_COMPUTE_NODES)) \
101 -v NUM_TOOLS_SYSTEM:0 \
102 -v ODL_SNAT_MODE:conntrack \
103 -v ODL_STREAM:$ODL_STREAM \
104 -v ODL_SYSTEM_IP:$CONTROLLER_1_IP \
105 -v OS_CONTROL_NODE_IP:$CONTROLLER_1_IP \
106 -v OPENSTACK_BRANCH:$FULL_OS_VER \
107 -v OPENSTACK_TOPO:$OPENSTACK_TOPO \
108 -v OS_USER:heat-admin \
109 -v ODL_ENABLE_L3_FWD:yes \
110 -v ODL_SYSTEM_USER:heat-admin \
111 -v ODL_SYSTEM_PROMPT:\$ \
112 -v PRE_CLEAN_OPENSTACK_ALL:True \
113 -v PUBLIC_PHYSICAL_NETWORK:datacentre \
114 -v RESTCONFPORT:8081 \
115 -v ODL_RESTCONF_USER:admin \
116 -v ODL_RESTCONF_PASSWORD:$SDN_CONTROLLER_PASSWORD \
117 -v KARAF_PROMPT_LOGIN:'opendaylight-user' \
118 -v KARAF_PROMPT:'opendaylight-user.*root.*>' \
119 -v SECURITY_GROUP_MODE:stateful \
121 -v USER_HOME:\$HOME \
122 -v TOOLS_SYSTEM_IP:'' \
123 -v NODE_ROLE_INDEX_START:0 \
128 SUITE_HOME='/home/opnfv/repos/odl_test/csit/suites'
132 # ${SUITE_HOME}/openstack/connectivity/live_migration.robot
133 # Live migration will not work unless we use a shared storage backend like
134 # Ceph which we do not currently use with CSIT images
137 suites="${SUITE_HOME}/openstack/connectivity/l2.robot \
138 ${SUITE_HOME}/openstack/connectivity/l3.robot \
139 ${SUITE_HOME}/openstack/connectivity/external_network.robot \
140 ${SUITE_HOME}/openstack/connectivity/security_group.robot \
141 ${SUITE_HOME}/openstack/securitygroup/neutron_security_group.robot \
142 ${SUITE_HOME}/openstack/securitygroup/security_group_l3bcast.robot \
143 ${SUITE_HOME}/netvirt/vpnservice/vpn_basic.robot \
144 ${SUITE_HOME}/netvirt/vpnservice/vpn_basic_ipv6.robot \
145 ${SUITE_HOME}/netvirt/elan/elan.robot \
146 ${SUITE_HOME}/netvirt/vpnservice/arp_learning.robot \
147 ${SUITE_HOME}/netvirt/l2l3_gatewaymac_arp.robot \
148 ${SUITE_HOME}/integration/Create_JVM_Plots.robot"
150 echo "Robot command set: ${robot_cmd}"
151 echo "Running robot..."
152 docker run -i --net=host \
153 -v ${LOGS_LOCATION}:${LOGS_LOCATION} \
154 -v ${WORKSPACE}/id_rsa:/tmp/id_rsa \
155 -v ${WORKSPACE}/overcloudrc:/tmp/overcloudrc \
156 opnfv/cperf:$DOCKER_TAG \
157 /bin/bash -c "source /tmp/overcloudrc; mkdir -p \$HOME/.ssh; cp /tmp/id_rsa \$HOME/.ssh; \
158 cd /home/opnfv/repos/odl_test/ && git pull origin master; \
159 ${robot_cmd} ${suites};"