Last active
September 15, 2022 16:12
-
-
Save parth-gr/2bbcab242531ff70e70d696602b7f52f to your computer and use it in GitHub Desktop.
uninstall_ODF
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 | |
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