remove_image_retry() is to be called on images that may still have
a watcher (i.e. considered to be open), in which case either of "rbd
snap purge" and "rbd rm" commands can fail.
This unbreaks "TEST: delete images during bootstrap".
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
local cluster=$1
local pool=$2
local image=$3
+ local runner=${4:-"run_cmd"}
- run_cmd "rbd --cluster=${cluster} snap purge ${pool}/${image}"
- run_cmd "rbd --cluster=${cluster} rm ${pool}/${image}"
+ "$runner" "rbd --cluster=${cluster} snap purge ${pool}/${image}"
+ "$runner" "rbd --cluster=${cluster} rm ${pool}/${image}"
}
image_remove()
run_cmd "rbd --cluster=${cluster} rm ${image_spec}"
}
-#TODO why does this need to retry - maybe waiting for purge to complete?
remove_image_retry()
{
local cluster=$1
for s in 0 1 2 4 8 16 32; do
sleep ${s}
- remove_image ${cluster} ${pool} ${image} && return 0
+ remove_image ${cluster} ${pool} ${image} "try_cmd" && return 0
done
return 1
}