scale-catalog/functions/misc.sh

234 lines
7.2 KiB
Bash
Raw Normal View History

2022-07-25 02:29:58 +00:00
#!/bin/bash
sync(){
2022-07-31 18:56:50 +00:00
echo_sync+=("🅂 🅈 🄽 🄲")
2022-07-26 23:43:06 +00:00
cli -c 'app catalog sync_all' &> /dev/null && echo_sync+=("Catalog sync complete")
2022-07-26 06:32:37 +00:00
#Dump the echo_array, ensures all output is in a neat order.
for i in "${echo_sync[@]}"
do
echo -e "$i"
done
2022-07-31 18:56:50 +00:00
echo
echo
2022-07-25 02:29:58 +00:00
}
export -f sync
2022-08-26 04:39:26 +00:00
2022-07-25 02:29:58 +00:00
prune(){
2022-07-31 19:06:00 +00:00
echo -e "🄿 🅁 🅄 🄽 🄴"
2022-12-15 07:24:59 +00:00
version="$(cli -c 'system version' | awk -F '-' '{print $3}' | awk -F '.' '{print $1 $2}' | tr -d " \t\r\.")"
if (( "$version" >= 2212 )); then
2022-12-15 07:04:18 +00:00
if ! cli -c 'app container config prune prune_options={"remove_unused_images": true, "remove_stopped_containers": true}' | head -n -4; then
echo "Failed to Prune Docker Images"
fi
else
if ! docker image prune -af | grep "^Total"; then
echo "Failed to Prune Docker Images"
fi
2022-12-14 18:40:26 +00:00
fi
2022-07-25 02:29:58 +00:00
}
export -f prune
2022-08-26 04:39:26 +00:00
2022-07-25 02:29:58 +00:00
title(){
echo ' _ _ _____ _ _ '
echo '| | | | / ___| (_) | | '
echo '| |_| | ___ __ ___ ___ _\ `--. ___ _ __ _ _ __ | |_'
echo "| _ |/ _ \/ _\` \ \ / / | | |\`--. \/ __| '__| | '_ \| __|"
echo '| | | | __/ (_| |\ V /| |_| /\__/ / (__| | | | |_) | |_ '
echo '\_| |_/\___|\__,_| \_/ \__, \____/ \___|_| |_| .__/ \__|'
echo ' __/ | | | '
echo ' |___/ |_| '
echo "$hs_version"
2022-07-25 02:29:58 +00:00
echo
}
export -f title
2022-08-26 04:39:26 +00:00
2022-07-25 02:29:58 +00:00
help(){
[[ $help == "true" ]] && clear -x
2022-07-27 02:34:18 +00:00
echo "Access the HeavyScript Menu"
echo "---------------------------"
echo "bash heavy_script.sh"
echo
2022-08-01 01:01:16 +00:00
echo "Utilities"
echo "---------"
2022-07-25 02:29:58 +00:00
echo "--mount | Initiates mounting feature, choose between unmounting and mounting PVC data"
echo "--restore | Opens a menu to restore a \"heavy_script\" backup that was taken on your \"ix-applications\" dataset"
echo "--delete-backup | Opens a menu to delete backups on your system"
echo "--dns | list all of your applications DNS names and their web ports"
2022-08-17 02:08:03 +00:00
echo "--cmd | Open a shell for one of your applications"
2022-07-25 02:29:58 +00:00
echo
2022-08-01 01:01:16 +00:00
echo "Update Types"
2022-08-01 01:05:06 +00:00
echo "------------"
2022-07-27 02:38:18 +00:00
echo "-U | Update all applications, ignores versions"
echo "-U 5 | Same as above, but updates 5 applications at one time"
echo "-u | Update all applications, does not update Major releases"
echo "-u 5 | Same as above, but updates 5 applications at one time"
2022-07-27 02:31:44 +00:00
echo
2022-08-01 01:01:16 +00:00
echo "Update Options"
echo "--------------"
2022-07-27 02:38:18 +00:00
echo "-r | Roll-back applications if they fail to update"
2022-08-01 01:01:16 +00:00
echo "-i | Add application to ignore list, one by one, see example below."
2022-07-27 02:38:18 +00:00
echo "-S | Shutdown applications prior to updating"
echo "-v | verbose output"
2022-09-04 00:45:53 +00:00
echo "-t 500| The amount of time HS will wait for an application to be ACTIVE. Defaults to 500 seconds"
2022-08-01 01:01:16 +00:00
echo
echo "Additional Options"
echo "------------------"
echo "-b 14 | Back-up your ix-applications dataset, specify a number after -b"
2022-07-27 02:38:18 +00:00
echo "-s | sync catalog"
echo "-p | Prune unused/old docker images"
echo "--ignore-img | Ignore container image updates"
2022-08-01 01:01:16 +00:00
echo "--self-update | Updates HeavyScript prior to running any other commands"
2022-07-25 02:29:58 +00:00
echo
echo "Examples"
2022-07-27 02:34:18 +00:00
echo "--------"
2022-07-27 02:38:18 +00:00
echo "bash heavy_script.sh"
2022-08-01 01:01:16 +00:00
echo "bash heavy_script.sh -b 14 -i portainer -i arch -i sonarr -t 600 -vrsUp --self-update"
echo "bash heavy_script.sh -b 14 -i portainer -i arch -i sonarr -t 600 -vrsp -U 10 --self-update"
2022-07-25 02:29:58 +00:00
echo "bash /mnt/tank/scripts/heavy_script.sh -t 150 --mount"
echo "bash /mnt/tank/scripts/heavy_script.sh --dns"
echo "bash heavy_script.sh --restore"
echo "bash /mnt/tank/scripts/heavy_script.sh --delete-backup"
echo
exit
}
2022-12-15 07:10:21 +00:00
export -f help
2022-12-18 20:26:56 +00:00
patch_2212_backups(){
clear -x
#Check TrueNAS version, skip if not 22.12.0
if ! [ "$(cli -m csv -c 'system version' | awk -F '-' '{print $3}')" == "22.12.0" ]; then
echo "This patch does not apply to your version of TrueNAS"
return
fi
#Description
echo "This patch will fix the issue with backups not restoring properly"
echo "Due to Ix-Systems not saving PVC in backups, this patch will fix that"
echo "Otherwise backups will not restore properly"
echo "You only need to run this patch once, it will not run again"
echo
#Download patch
echo "Downloading Backup Patch"
if ! wget -q https://github.com/truecharts/truetool/raw/main/hotpatch/2212/HP1.patch; then
echo "Failed to download Backup Patch"
exit
else
echo "Downloaded Backup Patch"
fi
echo
# Apply patch
echo "Applying Backup Patch"
if patch -N --reject-file=/dev/null -s -p0 -d /usr/lib/python3/dist-packages/middlewared/ < HP1.patch &>/dev/null; then
echo "Backup Patch applied"
rm -rf HP1.patch
else
echo "Backup Patch already applied"
rm -rf HP1.patch
exit
fi
echo
#Restart middlewared
while true
do
echo "We need to restart middlewared to finish the patch"
2022-12-18 20:31:25 +00:00
echo "This will cause a short downtime for some minor services approximately 10-30 seconds"
echo "Applications should not be affected"
2022-12-18 20:26:56 +00:00
read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
case $yesno in
[Yy] | [Yy][Ee][Ss])
echo "Restarting middlewared"
service middlewared restart &
wait $!
2022-12-18 20:28:52 +00:00
echo "Restarted middlewared"
echo "You are set, there is no need to run this patch again"
2022-12-18 20:26:56 +00:00
break
;;
[Nn] | [Nn][Oo])
echo "Exiting"
echo "Please restart middlewared manually"
echo "You can do: service middlewared restart"
exit
;;
*)
echo "That was not an option, try again"
sleep 3
continue
;;
esac
done
}
2022-12-26 21:36:35 +00:00
patch_2212_backups2(){
clear -x
#Check TrueNAS version, skip if not 22.12.0
if ! [ "$(cli -m csv -c 'system version' | awk -F '-' '{print $3}')" == "22.12.0" ]; then
echo "This patch does not apply to your version of TrueNAS"
return
fi
#Description
echo "This patch will fix the issue certain applicattions breaking backups"
echo "You only need to run this patch once, it will not run again"
echo
# Apply patch
echo "Applying Backup Patch"
2022-12-26 21:47:33 +00:00
if patch -N --reject-file=/dev/null -s -p0 /usr/lib/python3/dist-packages/middlewared/plugins/kubernetes_linux/backup.py < patches/backups.patch &>/dev/null; then
2022-12-26 21:36:35 +00:00
echo "Backup Patch applied"
else
echo "Backup Patch already applied"
exit
fi
echo
#Restart middlewared
while true
do
echo "We need to restart middlewared to finish the patch"
echo "This will cause a short downtime for some minor services approximately 10-30 seconds"
echo "Applications should not be affected"
read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
case $yesno in
[Yy] | [Yy][Ee][Ss])
echo "Restarting middlewared"
service middlewared restart &
wait $!
echo "Restarted middlewared"
echo "You are set, there is no need to run this patch again"
break
;;
[Nn] | [Nn][Oo])
echo "Exiting"
echo "Please restart middlewared manually"
echo "You can do: service middlewared restart"
exit
;;
*)
echo "That was not an option, try again"
sleep 3
continue
;;
esac
done
}