titan-iac/scripts/longhorn_volume_usage.fish

26 lines
937 B
Fish
Executable File

#!/usr/bin/env fish
function pvc-usage --description "Show Longhorn PVC usage (human-readable) mapped to namespace/name"
begin
kubectl -n longhorn-system get volumes.longhorn.io -o json \
| jq -r '.items[] | "\(.metadata.name)\t\(.status.actualSize)\t\(.spec.size)"' \
| sed 's/^/V\t/'
kubectl get pvc -A -o json \
| jq -r '.items[] | "\(.spec.volumeName)\t\(.metadata.namespace)/\(.metadata.name)"' \
| sed 's/^/P\t/'
end \
| awk 'BEGIN{FS="\t"}
$1=="V"{vol=$2; vu[vol]=$3; vs[vol]=$4}
$1=="P"{vol=$2; name=$3; map[vol]=name}
END{
for (v in vu){
used=vu[v]+0; size=vs[v]+0; pct=(size>0?used/size*100:0);
cmd="numfmt --to=iec --suffix=B " used; cmd|getline hu; close(cmd);
cmd="numfmt --to=iec --suffix=B " size; cmd|getline hs; close(cmd);
n=(v in map?map[v]:v);
printf "%-40s %-10s / %-10s (%5.1f%%)\n", n, hu, hs, pct
}
}' | sort
end