Skip to content

Instantly share code, notes, and snippets.

@parth-gr
Last active September 15, 2022 16:12
Show Gist options
  • Save parth-gr/2bbcab242531ff70e70d696602b7f52f to your computer and use it in GitHub Desktop.
Save parth-gr/2bbcab242531ff70e70d696602b7f52f to your computer and use it in GitHub Desktop.
uninstall_ODF
#!/bin/bash
config_file="/opt/cal/cipe/output/node.json"
wipefs_opts="--all --force"
function get_odf_disks() {
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null core@$1 " \
for i in $(echo $2); do \
LANG=C; \
sudo fdisk -lu \"\$i\" | tr '\n' ' ' | grep 'Disk ' |grep -v 'Disklabel type:' | grep -o \"\$i\"; \
done;"
}
function control_compute_disk_cleanup() {
node_ips=$(jq .[].hostIP4? ${config_file} | tr -d '"')
[ -z "$node_ips" ] && {
echo "Unable to get the control/compute node IPs from CIPE file node.json, exiting.."
exit 1
}
IFS=''
rc1=0
for node in ${node_ips}; do
rc2=0
node_all_disk="$(ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null core@${node} sudo lsblk -o NAME -p | grep ^/dev | grep -v ^/dev/loop)"
node_odf_disk=$(get_odf_disks "$node" "$node_all_disk")
rc2+=$?
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null core@${node} " \
for disk in $(echo ${node_odf_disk}); do \
echo \"Processing \${disk} on node ${node}\";
sudo sudo sgdisk --zap-all \${disk}; \
sudo sudo dd if=/dev/zero of="\${disk}" bs=1M count=1000 oflag=direct,dsync; \
sudo sudo blkdiscard \${disk}; \
sudo sudo partprobe \${disk}; \
done; \
[ $rc2 -ne 0 ] && \
echo \"[WARN] One or more wipefs command was failed for node ${node} ODF disk, continueing anyway.\" "
rc2=0
rc2+=$?
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null core@${node} " \
for disk in $(echo ${node_all_disk}); do \
echo \"Processing \${disk} on node ${node}\";
sudo sudo sgdisk --zap-all \${disk}; \
sudo sudo dd if=/dev/zero of="\${disk}" bs=1M count=100 oflag=direct,dsync; \
sudo sudo blkdiscard \${disk}; \
sudo sudo partprobe \${disk}; \
done; \
[ $rc2 -ne 0 ] && \
echo \"[WARN] One or more wipefs command was failed for node ${node}, continueing anyway.\" "
rc1+=${rc2}
done
[ $rc1 -ne 0 ] && \
echo "[WARN] wipefs command execution had one or more error, check the previous execution log trace for more information."
}
function provnode_disk_cleanup() {
rc=0
provnode_disk=$(sudo lsblk -o NAME -p | grep ^/dev | grep -v ^/dev/loop)
for disk in ${provnode_disk}; do
sudo wipefs ${wipefs_opts} ${disk}
rc+=$?
done
[ $rc -ne 0 ] && echo "[WARN] One or more wipefs command was failed on provnode, continueing anyway."
}
disk_cleanupfunc() {
case $1 in
--control_compute_disk_cleanup) control_compute_disk_cleanup ;;
--provnode_disk_cleanup) provnode_disk_cleanup ;;
*)
echo "$0 <--control_compute_disk_cleanup|--provnode_disk_cleanup>"
exit 1
;;
esac
}
####MAIN####
disk_cleanupfunc $@
echo "Disk cleanup script execution done"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment