NS= POOL= # Filter by date to exclude volumes in the process of creation and deletion. RECENT_DATE=2023-11 WORK_FILE=/tmp/omapval PVS_FILE=/tmp/pvs OBJS_FILE=/tmp/objs kubectl get pv -o json | jq -r ".items[] | select(.metadata.creationTimestamp | contains(\"${RECENT_DATE}\") | not) | select(.spec.storageClassName | contains(\"ceph\")) | .metadata.name" > ${PVS_FILE} kubectl exec -n ${NS} deploy/rook-ceph-tools -- rados ls -p ${POOL} > ${OBJS_FILE} KEYS=$(kubectl exec -n ${NS} deploy/rook-ceph-tools -- rados listomapkeys csi.volumes.default -p ${POOL}) for KEY in ${KEYS}; do kubectl exec -n ${NS} deploy/rook-ceph-tools -- rados getomapval csi.volumes.default -p ${POOL} ${KEY} ${WORK_FILE} > /dev/null 2>&1 OBJ_SUB=$(kubectl exec -n ${NS} deploy/rook-ceph-tools -- cat ${WORK_FILE}) kubectl exec -n ${NS} deploy/rook-ceph-tools -- rm ${WORK_FILE} # Filter by date. using="false" for OBJ in $(cat ${OBJS_FILE} | grep ${OBJ_SUB}); do kubectl exec -n ${NS} deploy/rook-ceph-tools -- rados stat -p ${POOL} ${OBJ} | grep ${RECENT_DATE} > /dev/null if [ $? -eq 0 ]; then using="true" break fi done if [ ${using} = "true" ]; then continue fi # Looking for PV PV_NAME=$(echo $KEY | cut -d'.' -f3) pv_exists=false cat ${PVS_FILE} | grep ${PV_NAME} > /dev/null if [ $? -eq 0 ]; then pv_exists=true fi echo "PV:${PV_NAME} OBJ_SUB:${OBJ_SUB} exists?:${pv_exists}" done rm ${PVS_FILE} ${OBJS_FILE}