openstack-helm/nova/templates/bin/_cell-setup-init.sh.tpl
Huy Tran 1d7f880c42 Add check for number of computes in cell-setup-init script
This PS further enhances [1] to handle case where present
computes are up, but the number of present computes is not
equal to total number of expected computes.

[1] https://review.opendev.org/c/openstack/openstack-helm/+/815086

Change-Id: Idb2a7aeb202fe29fc528ba0dde987e7e0ee65a95
2021-11-03 11:09:02 -05:00

72 lines
2.1 KiB
Smarty

#!/bin/bash
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}
set -ex
{{- if .Values.jobs.cell_setup.extended_wait.enabled }}
iteration={{ .Values.jobs.cell_setup.extended_wait.iteration }}
duration={{ .Values.jobs.cell_setup.extended_wait.duration }}
extra_wait=true
# Init for case wait_for_computes is not enabled. It'll have
# the same effect as the original code that checks for at
# least one compute is registered
expected_computes=1
if [[ -f /tmp/compute_nodes.txt ]]
then
expected_computes=$(cat /tmp/compute_nodes.txt | wc -w)
fi
while [[ "$extra_wait" == true ]]
do
nova_computes=$(openstack compute service list --service nova-compute -f value -c State)
if [[ -z "$(echo $nova_computes | grep down)" ]]
then
# No more down. Although all present computes are up,
# the number of present computes may not be the total
# expected number of computes as some of the remaining
# computes may take a bit longer to register/join.
actual_computes=$(echo $nova_computes | wc -w)
if [[ "$actual_computes" -ge "$expected_computes" ]]
then
# All expected nodes are up
extra_wait=false
fi
fi
if [[ "$extra_wait" == true ]]
then
sleep "$duration"
if [[ "$iteration" -gt 1 ]]
then
((iteration=iteration-1))
else
extra_wait=false
# List out the info to see whether any nodes is still down
openstack compute service list --service nova-compute
fi
fi
done
{{- end }}
until openstack compute service list --service nova-compute -f value -c State | grep -q "^up$" ;do
echo "Waiting for Nova Compute processes to register"
sleep 10
done