b47d217ca7
Adding more tests for graceful shutdown: - shutdown the destination compute and see how live and cold migration progress - start build instance and ocne comoute start building instance then shutdown the comoute service and see if build instance finish or not. - revert resize server Partial implement blueprint nova-services-graceful-shutdown-part1 Change-Id: I57132fb7b7fa614dfc138508581ff5a67aaed906 Signed-off-by: Ghanshyam Maan <gmaan.os14@gmail.com>
89 lines
2.8 KiB
Bash
Executable File
89 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
source /opt/stack/devstack/openrc admin
|
|
set -x
|
|
set -e
|
|
|
|
timeout=196
|
|
|
|
image_id=$(openstack image list -f value -c ID | awk 'NR==1{print $1}')
|
|
flavor_id=$(openstack flavor list -f value -c ID | awk 'NR==1{print $1}')
|
|
network_id=$(openstack network list --no-share -f value -c ID | awk 'NR==1{print $1}')
|
|
|
|
echo "Creating test server on subnode for graceful shutdown revert resize test"
|
|
openstack --os-compute-api-version 2.74 server create --image ${image_id} --flavor ${flavor_id} \
|
|
--nic net-id=${network_id} --host ${SUBNODE_HOSTNAME} --wait server-rr
|
|
|
|
echo "Migrate server-rr to ${CONTROLLER_HOSTNAME}"
|
|
openstack --os-compute-api-version 2.56 server migrate \
|
|
--host ${CONTROLLER_HOSTNAME} server-rr
|
|
|
|
# Wait for the migrate to complete
|
|
count=0
|
|
while true; do
|
|
status=$(openstack server show server-rr -f value -c status)
|
|
if [ "${status}" == "VERIFY_RESIZE" ]; then
|
|
echo "Migration completed, server is in VERIFY_RESIZE state"
|
|
break
|
|
fi
|
|
if [ "${status}" == "ERROR" ]; then
|
|
echo "Server went to ERROR status during cold migration"
|
|
exit 2
|
|
fi
|
|
sleep 5
|
|
count=$((count+1))
|
|
if [ ${count} -eq 20 ]; then
|
|
echo "Timed out waiting for server-rr to reach VERIFY_RESIZE"
|
|
exit 2
|
|
fi
|
|
done
|
|
|
|
# Start and wait for the revert resize to be in progress.
|
|
count=0
|
|
revert_started=False
|
|
revert_completed=False
|
|
|
|
status=$(openstack server show server-rr -f value -c status)
|
|
if [ "${status}" == "VERIFY_RESIZE" ]; then
|
|
echo "Starting revert resize of server-rr"
|
|
openstack server resize revert server-rr
|
|
else
|
|
echo "Revert resize skipped"
|
|
exit 2
|
|
fi
|
|
|
|
while true; do
|
|
task_state=$(openstack server show server-rr -f value -c OS-EXT-STS:task_state)
|
|
status=$(openstack server show server-rr -f value -c status)
|
|
|
|
if [ "${revert_started}" != "True" ] && [ "${revert_completed}" != "True" ]; then
|
|
if [ "${task_state}" == "resize_reverting" ]; then
|
|
echo "Revert resize is in progress"
|
|
# task_state is set by the API before it send the revert_resize RPC call
|
|
# to compute. We can try to sleep here for 2 sec and see if compute start
|
|
# the revert_resize and shutdown can be initiated before it finish. This
|
|
# is best try but no guarantee for that timing.
|
|
sleep 2
|
|
revert_started=True
|
|
fi
|
|
if [ "${status}" == "ACTIVE" ]; then
|
|
echo "Revert resize appears to have already completed"
|
|
revert_completed=True
|
|
fi
|
|
fi
|
|
|
|
if [ "${revert_started}" == "True" ]; then
|
|
break
|
|
fi
|
|
|
|
if [ "${revert_completed}" == "True" ]; then
|
|
echo "Revert resize completed before SIGTERM was sent"
|
|
exit 2
|
|
fi
|
|
|
|
count=$((count+1))
|
|
if [ ${count} -eq ${timeout} ]; then
|
|
echo "Timed out waiting for revert resize to start"
|
|
exit 2
|
|
fi
|
|
done
|