2 # Activate robotframework virtualenv
3 # ${ROBOT_VENV} comes from the integration-install-robotframework.sh
5 # shellcheck source=${ROBOT_VENV}/bin/activate disable=SC1091
6 source "${ROBOT_VENV}/bin/activate"
7 source /tmp/common-functions.sh "${BUNDLEFOLDER}"
8 # Ensure we fail the job if any steps fail.
15 configure_karaf_log_for_apex "$OPENSTACK_CONTROL_NODE_1_IP"
17 configure_odl_features_for_apex "$OPENSTACK_CONTROL_NODE_1_IP"
19 # Swap out the ODL distribution
20 DISTRO_UNDER_TEST=/tmp/odl.tar.gz
21 wget --progress=dot:mega "${ACTUAL_BUNDLE_URL}"
22 UNZIPPED_DIR=$(dirname "$(unzip -qql "${BUNDLE}" | head -n1 | tr -s ' ' | cut -d' ' -f5-)")
24 tar czf "${DISTRO_UNDER_TEST}" "${UNZIPPED_DIR}"
25 git clone https://gerrit.opnfv.org/gerrit/sdnvpn.git /tmp/sdnvpn
26 pushd /tmp/sdnvpn; git fetch https://gerrit.opnfv.org/gerrit/sdnvpn refs/changes/93/63293/1 && git checkout FETCH_HEAD; popd
27 /tmp/sdnvpn/odl-pipeline/lib/odl_reinstaller.sh --pod-config "${WORKSPACE}/node.yaml" --odl-artifact "${DISTRO_UNDER_TEST}" --ssh-key-file ~/.ssh/robot_id_rsa
29 cat > /tmp/extra_node_configs.sh << EOF
30 sudo jq -c '. + {"neutron::plugins::ovs::opendaylight::provider_mappings": ["datacentre:br-datacentre"]}' /etc/puppet/hieradata/config_step.json > tmp.$$.json && mv -f tmp.$$.json /etc/puppet/hieradata/config_step.json
31 sudo puppet apply -e 'include tripleo::profile::base::neutron::plugins::ovs::opendaylight' -v
32 sudo iptables -I INPUT -p udp -m multiport --dports 4789,9876,12345 -j ACCEPT
33 sudo iptables -I INPUT -p tcp --dport 12345 -j ACCEPT
34 sudo iptables --line-numbers -nvL
36 echo "cat extra_node_configs.sh"
37 cat /tmp/extra_node_configs.sh
39 scp /tmp/extra_node_configs.sh "$OPENSTACK_CONTROL_NODE_1_IP:/tmp"
40 ssh "$OPENSTACK_CONTROL_NODE_1_IP" "sudo bash /tmp/extra_node_configs.sh"
41 scp /tmp/extra_node_configs.sh "$OPENSTACK_COMPUTE_NODE_1_IP:/tmp"
42 ssh "$OPENSTACK_COMPUTE_NODE_1_IP" "sudo bash /tmp/extra_node_configs.sh"
43 scp /tmp/extra_node_configs.sh "$OPENSTACK_COMPUTE_NODE_2_IP:/tmp"
44 ssh "$OPENSTACK_COMPUTE_NODE_2_IP" "sudo bash /tmp/extra_node_configs.sh"
47 openstack object save OPNFV-APEX-SNAPSHOTS overcloudrc
50 openstack hypervisor list
52 # Extra Configs needed for CSIT:
53 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
54 export ANSIBLE_HOST_KEY_CHECKING=False
55 ansible-playbook -i "${OPENSTACK_CONTROL_NODE_1_IP}", -u heat-admin --key-file /tmp/id_rsa /tmp/opnfv_releng/jjb/cperf/cirros-upload.yaml.ansible -vvv
57 PHYSNET_WORK=datacentre
58 BR_WORK="br-${PHYSNET_WORK}"
59 # shellcheck disable=SC2029
60 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo ovs-vsctl --if-exists del-port br-int ${BR_WORK}"
61 # shellcheck disable=SC2029
62 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo ovs-vsctl --may-exist add-br ${BR_WORK} -- set bridge ${BR_WORK} other-config:disable-in-band=true other_config:hwaddr=f6:00:00:ff:01:01"
64 # shellcheck disable=SC2029
65 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "sudo ovs-vsctl --if-exists del-port br-int ${BR_WORK}"
66 # shellcheck disable=SC2029
67 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "sudo ovs-vsctl --may-exist add-br ${BR_WORK} -- set bridge ${BR_WORK} other-config:disable-in-band=true other_config:hwaddr=f6:00:00:ff:01:02"
69 # shellcheck disable=SC2029
70 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "sudo ovs-vsctl --if-exists del-port br-int ${BR_WORK}"
71 # shellcheck disable=SC2029
72 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "sudo ovs-vsctl --may-exist add-br ${BR_WORK} -- set bridge ${BR_WORK} other-config:disable-in-band=true other_config:hwaddr=f6:00:00:ff:01:03"
74 # shellcheck disable=SC2029
75 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "
76 sudo ovs-vsctl add-port ${BR_WORK} compute_1_vxlan -- set interface compute_1_vxlan type=vxlan options:local_ip=${OPENSTACK_CONTROL_NODE_1_IP} options:remote_ip=${OPENSTACK_COMPUTE_NODE_1_IP} options:dst_port=9876 options:key=flow
78 # shellcheck disable=SC2029
79 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "
80 sudo ovs-vsctl add-port ${BR_WORK} compute_2_vxlan -- set interface compute_2_vxlan type=vxlan options:local_ip=${OPENSTACK_CONTROL_NODE_1_IP} options:remote_ip=${OPENSTACK_COMPUTE_NODE_2_IP} options:dst_port=9876 options:key=flow
82 # shellcheck disable=SC2029
83 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "
84 sudo ovs-vsctl add-port ${BR_WORK} control_1_vxlan -- set interface control_1_vxlan type=vxlan options:local_ip=${OPENSTACK_COMPUTE_NODE_1_IP} options:remote_ip=${OPENSTACK_CONTROL_NODE_1_IP} options:dst_port=9876 options:key=flow
86 # shellcheck disable=SC2029
87 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "
88 sudo ovs-vsctl add-port ${BR_WORK} control_1_vxlan -- set interface control_1_vxlan type=vxlan options:local_ip=${OPENSTACK_COMPUTE_NODE_2_IP} options:remote_ip=${OPENSTACK_CONTROL_NODE_1_IP} options:dst_port=9876 options:key=flow
91 # Control Node - PUBLIC_BRIDGE will act as the external router
92 # Parameter values below are used in integration/test - changing them requires updates in intergration/test as well
93 EXTNET_GATEWAY_IP="10.10.10.250"
94 EXTNET_INTERNET_IP="10.9.9.9"
95 EXTNET_PNF_IP="10.10.10.253"
96 # shellcheck disable=SC2029
97 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo ifconfig ${PUBLIC_BRIDGE} up ${EXTNET_GATEWAY_IP}/24"
99 # Control Node - external net PNF simulation
100 # shellcheck disable=SC2029
101 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "
102 sudo ip netns add pnf_ns;
103 sudo ip link add pnf_veth0 type veth peer name pnf_veth1;
104 sudo ip link set pnf_veth1 netns pnf_ns;
105 sudo ip link set pnf_veth0 up;
106 sudo ip netns exec pnf_ns ifconfig pnf_veth1 up ${EXTNET_PNF_IP}/24;
107 sudo ovs-vsctl add-port ${PUBLIC_BRIDGE} pnf_veth0;
109 # Control Node - external net internet address simulation
110 # shellcheck disable=SC2029
111 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "
112 sudo ip tuntap add dev internet_tap mode tap;
113 sudo ifconfig internet_tap up ${EXTNET_INTERNET_IP}/24;
116 ssh "${OPENSTACK_CONTROL_NODE_1_IP}" "sudo ovs-vsctl show"
117 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "sudo ovs-vsctl show"
118 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "sudo ovs-vsctl show"
120 get_test_suites SUITES
122 echo "Starting Robot test suites ${SUITES} ..."
123 # please add robot -v arguments on a single line and alphabetized
125 for suite in ${SUITES}; do
126 # prepend an incremental counter to the suite name so that the full robot log combining all the suites as is done
127 # in the rebot step below will list all the suites in chronological order as rebot seems to alphabetize them
128 ((suite_num = suite_num + 1))
129 suite_index="$(printf %02d ${suite_num})"
130 suite_name="$(basename "${suite}" | cut -d. -f1)"
131 log_name="${suite_index}_${suite_name}"
132 robot -N "${log_name}" \
133 -c critical -e exclude -e "skip_if_${DISTROSTREAM}" -e NON_GATE \
134 --log "log_${log_name}.html" --report "report_${log_name}.html" --output "output_${log_name}.xml" \
135 --removekeywords wuks \
136 --removekeywords name:SetupUtils.Setup_Utils_For_Setup_And_Teardown \
137 --removekeywords name:SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing \
138 --removekeywords name:OpenStackOperations.Add_OVS_Logging_On_All_OpenStack_Nodes \
139 -v BUNDLEFOLDER:"${BUNDLEFOLDER}" \
140 -v BUNDLE_URL:"${ACTUAL_BUNDLE_URL}" \
141 -v CMP_INSTANCES_SHARED_PATH:/var/instances \
142 -v CONTROLLERFEATURES:"${CONTROLLERFEATURES}" \
143 -v CONTROLLER_USER:"${USER}" \
144 -v DEFAULT_LINUX_PROMPT:\$ \
145 -v DEFAULT_LINUX_PROMPT_STRICT:]\$ \
146 -v DEFAULT_USER:"${USER}" \
147 -v ENABLE_ITM_DIRECT_TUNNELS:"${ENABLE_ITM_DIRECT_TUNNELS}" \
148 -v HA_PROXY_IP:"$ODL_SYSTEM_IP" \
149 -v JDKVERSION:"${JDKVERSION}" \
150 -v JENKINS_WORKSPACE:"${WORKSPACE}" \
151 -v KARAF_LOG:/opt/opendaylight/data/log/karaf.log \
152 -v NEXUSURL_PREFIX:"${NEXUSURL_PREFIX}" \
153 -v NUM_ODL_SYSTEM:"${NUM_ODL_SYSTEM}" \
154 -v NUM_OS_SYSTEM:"${NUM_OPENSTACK_SYSTEM}" \
155 -v NUM_TOOLS_SYSTEM:"${NUM_TOOLS_SYSTEM}" \
156 -v ODL_RESTCONF_PASSWORD:"$SDN_CONTROLLER_PASSWORD" \
157 -v ODL_SNAT_MODE:"${ODL_SNAT_MODE}" \
158 -v ODL_STREAM:"${DISTROSTREAM}" \
159 -v ODL_SYSTEM_IP:"${ODL_SYSTEM_IP}" \
160 -v ODL_SYSTEM_1_IP:"${ODL_SYSTEM_1_IP}" \
161 -v OS_CONTROL_NODE_IP:"${OPENSTACK_CONTROL_NODE_1_IP}" \
162 -v OS_CONTROL_NODE_1_IP:"${OPENSTACK_CONTROL_NODE_1_IP}" \
163 -v OPENSTACK_BRANCH:"${OPENSTACK_BRANCH}" \
164 -v OS_COMPUTE_1_IP:"${OPENSTACK_COMPUTE_NODE_1_IP}" \
165 -v OS_COMPUTE_2_IP:"${OPENSTACK_COMPUTE_NODE_2_IP}" \
166 -v OPENSTACK_TOPO:"${OPENSTACK_TOPO}" \
167 -v OS_USER:"${USER}" \
168 -v PUBLIC_PHYSICAL_NETWORK:"${PHYSNET_WORK}" \
169 -v RESTCONFPORT:8081 \
170 -v SECURITY_GROUP_MODE:"${SECURITY_GROUP_MODE}" \
171 -v SSH_KEY:robot_id_rsa \
172 -v TOOLS_SYSTEM_IP: \
173 -v USER_HOME:"${HOME}" \
175 "${TESTOPTIONS}" "${suite}" || true
177 #rebot exit codes seem to be different
178 rebot --output "${WORKSPACE}/output.xml" --log log_full.html --report report.html -N openstack output_*.xml || true
180 echo "Collecting logs"
181 mkdir -p "${WORKSPACE}/archives"
183 ssh "${ODL_SYSTEM_IP}" "mkdir /tmp/controller_sos; sudo sosreport --all-logs --batch --build --tmp-dir /tmp/controller_sos/ --name controller_report -o networking,openstack_glance,openstack_neutron,openstack_nova,opendaylight,openvswitch"
184 ssh "${ODL_SYSTEM_IP}" "sudo chmod -R 0777 /tmp/controller_sos/; tar cvzf /tmp/controller_sos.tar.gz /tmp/controller_sos"
185 scp "${ODL_SYSTEM_IP}":/tmp/controller_sos.tar.gz "${WORKSPACE}/archives/controller_sos.tar.gz"
186 gunzip "${WORKSPACE}/archives/controller_sos.tar.gz"
187 tar -xvf "${WORKSPACE}/archives/controller_sos.tar" -C "${WORKSPACE}/archives/"
189 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "mkdir /tmp/compute_1_sos; sudo sosreport --all-logs --batch --build --tmp-dir /tmp/compute_1_sos/ --name compute_1_report -o networking,openstack_glance,openstack_neutron,openstack_nova,opendaylight,openvswitch"
190 ssh "${OPENSTACK_COMPUTE_NODE_1_IP}" "sudo chmod -R 0777 /tmp/compute_1_sos/; tar cvzf /tmp/compute_1_sos.tar.gz /tmp/compute_1_sos"
191 scp "${OPENSTACK_COMPUTE_NODE_1_IP}":/tmp/compute_1_sos.tar.gz "${WORKSPACE}/archives/compute_1_sos.tar.gz"
192 gunzip "${WORKSPACE}/archives/compute_1_sos.tar.gz"
193 tar -xvf "${WORKSPACE}/archives/compute_1_sos.tar" -C "${WORKSPACE}/archives/"
195 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "mkdir /tmp/compute_2_sos; sudo sosreport --all-logs --batch --build --tmp-dir /tmp/compute_2_sos/ --name compute_2_report -o networking,openstack_glance,openstack_neutron,openstack_nova,opendaylight,openvswitch"
196 ssh "${OPENSTACK_COMPUTE_NODE_2_IP}" "sudo chmod -R 0777 /tmp/compute_2_sos/; tar cvzf /tmp/compute_2_sos.tar.gz /tmp/compute_2_sos"
197 scp "${OPENSTACK_COMPUTE_NODE_2_IP}":/tmp/compute_2_sos.tar.gz "${WORKSPACE}/archives/compute_2_sos.tar.gz"
198 gunzip "${WORKSPACE}/archives/compute_2_sos.tar.gz"
199 tar -xvf "${WORKSPACE}/archives/compute_2_sos.tar" -C "${WORKSPACE}/archives/"
201 mv "${WORKSPACE}"/archives/tmp/* "${WORKSPACE}/archives/"
202 rm -rf "${WORKSPACE}/archives/tmp"
204 true # perhaps Jenkins is testing last exit code
205 # vim: ts=4 sw=4 sts=4 et ft=sh :