tripleo-upgrade/templates/check_service_reboot.sh.j2

52 lines
1.9 KiB
Django/Jinja

source {{ undercloud_rc }}
NODE_IP=$(openstack server show {{ node_name | splitext | first }} -f json | jq -r .addresses | grep -oP '[0-9.]+')
{% if controller_reboot %}
OVS_RUNNING=$(ssh -q -o StrictHostKeyChecking=no heat-admin@$NODE_IP 'sudo ovs-vsctl show' | grep ovs_version | awk -F \" {'print $2'} | awk -F "." '{print $1"."$2}')
OVS_INSTALLED=$(ssh -q -o StrictHostKeyChecking=no heat-admin@$NODE_IP 'sudo rpm --queryformat %{VERSION} -q openvswitch' | awk -F "." '{print $1"."$2}')
if [[ $OVS_RUNNING != $OVS_INSTALLED ]]; then
echo "Upgraded OVS detected"
fi
echo "Rebooting {{ node_name | splitext | first }}"
{% if force_reboot %}
NOVA_ID=$(openstack server list | grep {{ node_name | splitext | first }} | awk {'print $2'})
IRONIC_ID=$(ironic node-list | grep $NOVA_ID | awk {'print $2'})
ironic node-set-power-state $IRONIC_ID reboot
{% else %}
ssh -q -o StrictHostKeyChecking=no heat-admin@$NODE_IP 'sudo shutdown -r now'
{% endif %}
timeout_seconds={{ node_reboot_timeout }}
elapsed_seconds=0
while true; do
echo "Waiting for {{ node_name }} to go down ..."
NODE_DOWN=$(ping -c1 $NODE_IP)
if [ $? != 0 ]; then
break
fi
sleep 3
(( elapsed_seconds += 3 ))
if [ $elapsed_seconds -ge $timeout_seconds ]; then
echo "FAILURE: Node {{ node_name }} didn't reboot in time"
exit 1
fi
done
{% endif %}
## wait for node to get back online
timeout_seconds={{ node_reboot_timeout }}
elapsed_seconds=0
while true; do
echo "Waiting for {{ node_name }} to boot ..."
PCS_STATUS=$(ssh -q -o StrictHostKeyChecking=no heat-admin@$NODE_IP 'sudo pcs status' | grep ^Online)
if [[ $PCS_STATUS == *{{ node_name }}* ]]; then
break
fi
sleep 3
(( elapsed_seconds += 3 ))
if [ $elapsed_seconds -ge $timeout_seconds ]; then
echo "FAILURE: {{ node_name }} didn't come back up as part of the cluster"
exit 1
fi
done