X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=jjb%2Fapex%2Fapex-snapshot-deploy.sh;h=dd69df3fcc2f9588ec3d08dacce8a5963aae46e4;hb=3970f5ffe03148df980f6e1518dcb105799a53d7;hp=3bb65a0b3270e1de692abb2737db0f38fe9d6e34;hpb=acfcb609e3473eda5e86b4b7b16400f25898f1a3;p=releng.git diff --git a/jjb/apex/apex-snapshot-deploy.sh b/jjb/apex/apex-snapshot-deploy.sh index 3bb65a0b3..dd69df3fc 100644 --- a/jjb/apex/apex-snapshot-deploy.sh +++ b/jjb/apex/apex-snapshot-deploy.sh @@ -20,46 +20,65 @@ echo "Deploying Apex snapshot..." echo "--------------------------" echo +if [ -z "$SNAP_TYPE" ]; then + echo "ERROR: SNAP_TYPE not provided...exiting" + exit 1 +fi + echo "Cleaning server" -git clone https://gerrit.opnfv.org/gerrit/apex.git -pushd apex/ci > /dev/null -sudo CONFIG=../build/ LIB=../lib ./clean.sh +pushd ci > /dev/null +sudo opnfv-clean popd > /dev/null +full_snap_url="gs://${GS_URL}/${OS_VERSION}/${TOPOLOGY}" + echo "Downloading latest snapshot properties file" -if ! wget -O $WORKSPACE/opnfv.properties http://$GS_URL/snapshot.properties; then - echo "ERROR: Unable to find snapshot.properties at ${GS_URL}...exiting" +if ! gsutil cp ${full_snap_url}/snapshot.properties $WORKSPACE/opnfv.properties; then + echo "ERROR: Unable to find snapshot.properties at ${full_snap_url}...exiting" exit 1 fi +echo "Properties contents:" +cat ${WORKSPACE}/opnfv.properties + # find latest check sum -latest_snap_checksum=$(cat opnfv.properties | grep OPNFV_SNAP_SHA512SUM | awk -F "=" '{print $2}') +latest_snap_checksum=$(cat ${WORKSPACE}/opnfv.properties | grep ${SNAP_TYPE}_SNAP_SHA512SUM | awk -F "=" '{print $2}') if [ -z "$latest_snap_checksum" ]; then echo "ERROR: checksum of latest snapshot from snapshot.properties is null!" exit 1 fi local_snap_checksum="" +SNAP_CACHE=${SNAP_CACHE}/${OS_VERSION}/${TOPOLOGY} # check snap cache directory exists +# if snapshot cache exists, find the checksum if [ -d "$SNAP_CACHE" ]; then - latest_snap=$(ls -Art | grep tar.gz | tail -n 1) + latest_snap=$(ls ${SNAP_CACHE} | grep tar.gz | grep $SNAP_TYPE | tail -n 1) if [ -n "$latest_snap" ]; then - local_snap_checksum=$(sha512sum ${latest_snap} | cut -d' ' -f1) + local_snap_checksum=$(sha512sum ${SNAP_CACHE}/${latest_snap} | cut -d' ' -f1) + echo "Local snap checksum is: ${local_snap_checksum}" fi else mkdir -p ${SNAP_CACHE} fi # compare check sum and download latest snap if not up to date -if [ "$local_snap_checksum" -ne "$latest_snap_checksum" ]; then - snap_url=$(cat opnfv.properties | grep OPNFV_SNAP_URL | awk -F "=" '{print $2}') +if [ "$local_snap_checksum" != "$latest_snap_checksum" ]; then + snap_url=$(cat opnfv.properties | grep ${SNAP_TYPE}_SNAP_URL | awk -F "=" '{print $2}') + # TODO(trozet): Remove this once OPNFV url is deprecated + if [[ -z "$snap_url" && "$SNAP_TYPE" == 'csit' ]]; then + echo "WARN: Unable to find snap url for ${SNAP_TYPE}, attempting to use OPNFV" + snap_url=$(cat opnfv.properties | grep OPNFV_SNAP_URL | awk -F "=" '{print $2}') + fi if [ -z "$snap_url" ]; then echo "ERROR: Snap URL from snapshot.properties is null!" exit 1 fi echo "INFO: SHA mismatch, will download latest snapshot" - wget --directory-prefix=${SNAP_CACHE}/ ${snap_url} + # wipe cache + rm -rf ${SNAP_CACHE}/* + gsutil cp "gs://${snap_url}" ${SNAP_CACHE}/ snap_tar=$(basename ${snap_url}) else snap_tar=${latest_snap} @@ -67,9 +86,8 @@ fi echo "INFO: Snapshot to be used is ${snap_tar}" -# create tmp directory and unpack snap -mkdir -p ./tmp -pushd ./tmp > /dev/null +# move to snap cache dir and unpack +pushd ${SNAP_CACHE} > /dev/null tar xvf ${snap_tar} # create each network @@ -80,6 +98,12 @@ if [ -z "$virsh_networks" ]; then exit 1 fi +echo "Checking overcloudrc" +if ! stat overcloudrc; then + echo "ERROR: overcloudrc does not exist in snap unpack" + exit 1 +fi + for network_def in ${virsh_networks}; do sudo virsh net-create ${network_def} network=$(echo ${network_def} | awk -F '.' '{print $1}') @@ -87,22 +111,32 @@ for network_def in ${virsh_networks}; do sudo virsh net-start ${network} fi echo "Checking if OVS bridge is missing for network: ${network}" - if ! ovs-vsctl show | grep "br-${network}"; then - ovs-vsctl add-br br-${network} + if ! sudo ovs-vsctl show | grep "br-${network}"; then + sudo ovs-vsctl add-br br-${network} echo "OVS Bridge created: br-${network}" if [ "br-${network}" == 'br-admin' ]; then echo "Configuring IP 192.0.2.99 on br-admin" sudo ip addr add 192.0.2.99/24 dev br-admin sudo ip link set up dev br-admin elif [ "br-${network}" == 'br-external' ]; then - echo "Configuring IP 192.168.37.99 on br-external" - sudo ip addr add 192.168.37.99/24 dev br-external + echo "Configuring IP 192.168.37.1 on br-external" + sudo ip addr add 192.168.37.1/24 dev br-external sudo ip link set up dev br-external + # Routes for admin network + # The overcloud controller is multi-homed and will fail to respond + # to traffic from the functest container due to reverse-path-filtering + # This route allows reverse traffic, by forcing admin network destined + # traffic through the external network for controller IPs only. + # Compute nodes have no ip on external interfaces. + controller_ips=$(cat overcloudrc | grep -Eo "192.0.2.[0-9]+") + for ip in $controller_ips; do + sudo ip route add ${ip}/32 dev br-external + done fi fi done -echo "Virsh networks up: $(virsh net-list)" +echo "Virsh networks up: $(sudo virsh net-list)" echo "Bringing up Overcloud VMs..." virsh_vm_defs=$(ls baremetal*.xml) @@ -112,6 +146,7 @@ if [ -z "$virsh_vm_defs" ]; then fi for node_def in ${virsh_vm_defs}; do + sed -ri "s/machine='[^\s]+'/machine='pc'/" ${node_def} sudo virsh define ${node_def} node=$(echo ${node_def} | awk -F '.' '{print $1}') sudo cp -f ${node}.qcow2 /var/lib/libvirt/images/ @@ -119,32 +154,27 @@ for node_def in ${virsh_vm_defs}; do echo "Node: ${node} started" done -echo "Checking overcloudrc" -if ! stat overcloudrc; then - echo "ERROR: overcloudrc does not exist in snap unpack" - exit 1 -fi - # copy overcloudrc for functest mkdir -p $HOME/cloner-info cp -f overcloudrc $HOME/cloner-info/ -admin_controller_ip=$(cat overcloudrc | grep -Eo "192.0.2.[0-9]+") +admin_controller_ip=$(cat overcloudrc | grep -Eo -m 1 "192.0.2.[0-9]+" | head -1) netvirt_url="http://${admin_controller_ip}:8081/restconf/operational/network-topology:network-topology/topology/netvirt:1" source overcloudrc counter=1 while [ "$counter" -le 10 ]; do - if curl --fail ${admin_controller_ip}:80; then - echo "Overcloud Horizon is up...Checking if OpenDaylight NetVirt is up..." - if curl --fail ${netvirt_url} > /dev/null; then + echo "Checking if OpenStack is up" + if nc -z ${admin_controller_ip} 9696 > /dev/null; then + echo "Overcloud Neutron is up...Checking if OpenDaylight NetVirt is up..." + if curl --fail --silent -u admin:${SDN_CONTROLLER_PASSWORD} ${netvirt_url} > /dev/null; then echo "OpenDaylight is up. Overcloud deployment complete" exit 0 else echo "OpenDaylight not yet up, try ${counter}" fi else - echo "Horizon/Apache not yet up, try ${counter}" + echo "Neutron not yet up, try ${counter}" fi counter=$((counter+1)) sleep 60