Last active
October 11, 2022 15:29
-
-
Save johnsimcall/c395646703418b541b7a8a20a0d750ce to your computer and use it in GitHub Desktop.
a Bash script to retrieve RBD snapshot info for OpenShift Data Foundation Regional Disaster Recovery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
if [ $# != 4 ]; then | |
echo "Usage: ceph-snap-info.sh <namespace> <pvc_name> <primary_context> <dr_context>" | |
echo "e.g. : ceph-snap-info.sh pacman mongo-storage west east" | |
exit 1; | |
fi | |
if [ ! $(oc whoami) ]; then | |
echo "Error, not logged in" | |
exit 1; | |
fi | |
NAMESPACE=$1 | |
PVC=$2 | |
PRIMARY_CONTEXT=$3 | |
DR_CONTEXT=$4 | |
PV=$(oc get pvc ${PVC} -n $NAMESPACE -o jsonpath='{.spec.volumeName}' --context $PRIMARY_CONTEXT) | |
RBD=$(oc get pv ${PV} -o jsonpath='{.spec.csi.volumeAttributes.imageName}' --context $PRIMARY_CONTEXT) | |
# this block works if you've already installed rook-ceph via Krew | |
#ORIGINAL_CONTEXT=$(oc config current-context) | |
#oc config use-context $1 | |
#oc rook-ceph -n openshift-storage rbd -p ocs-storagecluster-cephblockpool snap ls --all ${RBD} | |
#oc config use-context $ORIGINAL_CONTEXT | |
# this block works with raw oc commands | |
#oc exec -it -n openshift-storage $(oc get pod -o name -l app=rook-ceph-operator -n openshift-storage) -- /bin/bash -c 'export CEPH_CONF=/var/lib/rook/openshift-storage/openshift-storage.config; rbd -p ocs-storagecluster-cephblockpool du' | |
PRIMARY_OPERATOR_POD=$(oc get pod -o name -l app=rook-ceph-operator -n openshift-storage --context $DR_CONTEXT) | |
PRIMARY_OC_CMD="oc exec --context $DR_CONTEXT -it -n openshift-storage " | |
PRIMARY_OC_CMD+=${PRIMARY_OPERATOR_POD} | |
PRIMARY_OC_CMD+=$' -- /bin/bash -c \'export CEPH_CONF=/var/lib/rook/openshift-storage/openshift-storage.config; ' | |
PRIMARY_OC_CMD+="rbd -p ocs-storagecluster-cephblockpool snap ls --all " | |
PRIMARY_OC_CMD+=${RBD} | |
PRIMARY_OC_CMD+="'" | |
DR_OPERATOR_POD=$(oc get pod -o name -l app=rook-ceph-operator -n openshift-storage --context $DR_CONTEXT) | |
DR_OC_CMD="oc exec --context $DR_CONTEXT -it -n openshift-storage " | |
DR_OC_CMD+=${DR_OPERATOR_POD} | |
DR_OC_CMD+=$' -- /bin/bash -c \'export CEPH_CONF=/var/lib/rook/openshift-storage/openshift-storage.config; ' | |
DR_OC_CMD+="rbd -p ocs-storagecluster-cephblockpool snap ls --all " | |
DR_OC_CMD+=${RBD} | |
DR_OC_CMD+="'" | |
echo | |
echo "Current time/date is $(date -u)" | |
echo "NAMESPACE=${NAMESPACE}" | |
echo "PERSISTENTVOLUMECLAIM=${PVC}" | |
echo "PERSISTENTVOLUME=${PV}" | |
echo | |
echo "PRIMARY CEPH RBD IMAGES (${PRIMARY_CONTEXT})" | |
eval ${PRIMARY_OC_CMD} | |
echo ; echo | |
echo "BACKUP/DR RBD IMAGES (${DR_CONTEXT})" | |
eval ${DR_OC_CMD} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I should improve this to avoid hard-coding the PVC name and assuming that a KUBECONFIG exists with multiple contexts