[ceph-osd] Liveness probe success in preboot state with noup flag

OSDs fail the liveness probe if they can't make it to the 'active'
state. The noup flag keeps OSDs in the 'preboot' state, which
prevents the liveness probe from succeeding. This change adds an
additional check in the liveness probe to allow it to succeed if
the noup flag is set and OSDs are in the 'preboot' state.

Change-Id: I8df5954f7bc4ef4374e19344b6e0a9130764d60c
This commit is contained in:
Taylor, Stephen (st053q) 2020-06-25 15:40:12 -06:00 committed by Chinasubbareddy Mallavarapu
parent 7cb3ef69ae
commit 153c9ec6f0

View File

@ -26,11 +26,14 @@ for sock in $SOCKDIR/$SBASE.*.$SSUFFIX; do
if [ -S $sock ]; then if [ -S $sock ]; then
OSD_ID=$(echo $sock | awk -F. '{print $2}') OSD_ID=$(echo $sock | awk -F. '{print $2}')
OSD_STATE=$(ceph -f json-pretty --connect-timeout 1 --admin-daemon "${sock}" status|grep state|sed 's/.*://;s/[^a-z]//g') OSD_STATE=$(ceph -f json-pretty --connect-timeout 1 --admin-daemon "${sock}" status|grep state|sed 's/.*://;s/[^a-z]//g')
NOUP_FLAG=$(ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring status | awk '/flags/{print $2}' | grep noup)
echo "OSD ${OSD_ID} ${OSD_STATE}"; echo "OSD ${OSD_ID} ${OSD_STATE}";
# this might be a stricter check than we actually want. what are the # this might be a stricter check than we actually want. what are the
# other values for the "state" field? # other values for the "state" field?
if [ "x${OSD_STATE}x" = 'xactivex' ]; then if [ "x${OSD_STATE}x" = 'xactivex' ]; then
cond=0 cond=0
elif [ "${NOUP_FLAG}" ] && [ "x${OSD_STATE}x" = 'xprebootx' ]; then
cond=0
else else
# one's not ready, so the whole pod's not ready. # one's not ready, so the whole pod's not ready.
exit 1 exit 1