summaryrefslogtreecommitdiffstats
path: root/scripts/disaster/gluster_endpoints/check_pv.sh
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2025-12-09 16:14:26 +0000
committerSuren A. Chilingaryan <csa@suren.me>2025-12-09 16:14:26 +0000
commit77aa9c433f9255d713394e3b25987fa2b4a03a1a (patch)
treeddc5d87bf838bd589f36b43b53955ad8207796a2 /scripts/disaster/gluster_endpoints/check_pv.sh
parentd35216ee0cbf9f1a84a6d4151daf870b1ff00395 (diff)
downloadands-master.tar.gz
ands-master.tar.bz2
ands-master.tar.xz
ands-master.zip
Finalize storage failure on ipekatrin1: scripts & logsHEADmaster
Diffstat (limited to 'scripts/disaster/gluster_endpoints/check_pv.sh')
-rw-r--r--scripts/disaster/gluster_endpoints/check_pv.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/disaster/gluster_endpoints/check_pv.sh b/scripts/disaster/gluster_endpoints/check_pv.sh
new file mode 100644
index 0000000..1f2a7e4
--- /dev/null
+++ b/scripts/disaster/gluster_endpoints/check_pv.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+pvs=$(oc get pv -o json | jq -r '
+ .items[]
+ | select(.spec.glusterfs?)
+ | select(.spec.glusterfs.endpoints != "gfs")
+ | "\(.metadata.name) → endpoints=\(.spec.glusterfs.endpoints // "NONE")"')
+
+
+echo "PV usage:"
+echo
+
+#pvs=$(oc get pv --no-headers | awk '{print $1}')
+
+for pv in $pvs; do
+ # Extract PVC and namespace bound to PV
+ pvc=$(oc get pv "$pv" -o jsonpath='{.spec.claimRef.name}' 2>/dev/null)
+ ns=$(oc get pv "$pv" -o jsonpath='{.spec.claimRef.namespace}' 2>/dev/null)
+
+ if [[ -z "$pvc" || -z "$ns" ]]; then
+ echo "$pv → UNUSED"
+ echo
+ continue
+ fi
+
+ echo "$pv → PVC: $ns/$pvc"
+
+ # Grep instead of JSONPath filter — much safer
+ pods=$(oc get pods -n "$ns" -o name \
+ | while read -r pod; do
+ oc get "$pod" -n "$ns" -o json \
+ | jq -r --arg pvc "$pvc" '
+ . as $pod |
+ .spec.volumes[]?
+ | select(.persistentVolumeClaim? and .persistentVolumeClaim.claimName == $pvc)
+ | $pod.metadata.name
+ ' 2>/dev/null
+ done \
+ | sort -u
+ )
+
+ if [[ -z "$pods" ]]; then
+ echo " → PVC bound but no running Pod is using it"
+ else
+ echo " → Pods:"
+ echo "$pods" | sed 's/^/ - /'
+ fi
+
+ echo
+done