commit
1b11ce9348
@ -149,23 +149,35 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
# Get the date of system version and when it was updated
|
## Check to see if empty PVC data is present in any of the applications ##
|
||||||
current_version=$(cli -m csv -c 'system version' | awk -F '-' '{print $3}')
|
|
||||||
when_updated=$(cli -m csv -c 'system bootenv query created,realname' | grep "$current_version",\
|
|
||||||
| awk -F ',' '{print $2}' | sed 's/[T|-]/_/g' | sed 's/:/_/g' | awk -F '_' '{print $1 $2 $3 $4 $5}')
|
|
||||||
|
|
||||||
|
# Find all pv_info.json files two subfolders deep
|
||||||
|
pool=$(cli -c 'app kubernetes config' | grep -E "pool\s\|" | awk -F '|' '{print $3}' | tr -d " \t\n\r")
|
||||||
|
files=$(find "$(find /mnt/"$pool"/ix-applications/backups -maxdepth 0 )" -name pv_info.json | grep "$restore_point");
|
||||||
|
|
||||||
# Get the date of the chosen restore point
|
# Iterate over the list of files
|
||||||
restore_point_date=$(echo "$restore_point" | awk -F '_' '{print $2 $3 $4 $5 $6}' | tr -d "_")
|
for file in $files; do
|
||||||
|
# Check if the file only contains {} subfolders two deep
|
||||||
|
contents=$(cat $file)
|
||||||
|
if [[ "$contents" == '{}' ]]; then
|
||||||
|
# Print the file if it meets the criterion
|
||||||
|
file=$(echo "$file" | awk -F '/' '{print $7}')
|
||||||
|
borked_array+="$file\n"
|
||||||
|
borked=True
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# If there is empty PVC data, exit
|
||||||
# Compare the dates
|
if [[ $borked == True ]]; then
|
||||||
while (("$restore_point_date" < "$when_updated" ))
|
echo "Warning!:"
|
||||||
|
echo "The following applications have empty PVC data:"
|
||||||
|
for file in $borked_array; do
|
||||||
|
echo -e "$file"
|
||||||
|
done
|
||||||
|
echo "You need to ensure these applications are not supposed to have PVC data before proceeding"
|
||||||
|
while true
|
||||||
do
|
do
|
||||||
clear -x
|
read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }
|
||||||
echo "The restore point you have chosen is from an older version of Truenas Scale"
|
|
||||||
echo "This is not recommended, as it may cause issues with the system"
|
|
||||||
if read -rt 120 -p "Would you like to proceed? (y/N): " yesno || { echo -e "\nFailed to make a selection in time" ; exit; }; then
|
|
||||||
case $yesno in
|
case $yesno in
|
||||||
[Yy] | [Yy][Ee][Ss])
|
[Yy] | [Yy][Ee][Ss])
|
||||||
echo "Proceeding.."
|
echo "Proceeding.."
|
||||||
@ -182,7 +194,58 @@ do
|
|||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Check the restore point, and ensure it is the same version as the current system ##
|
||||||
|
# Boot Query
|
||||||
|
boot_query=$(cli -m csv -c 'system bootenv query created,realname')
|
||||||
|
|
||||||
|
# Get the date of system version and when it was updated
|
||||||
|
current_version=$(cli -m csv -c 'system version' | awk -F '-' '{print $3}')
|
||||||
|
when_updated=$(echo "$boot_query" | grep "$current_version",\
|
||||||
|
| awk -F ',' '{print $2}' | sed 's/[T|-]/_/g' | sed 's/:/_/g' | awk -F '_' '{print $1 $2 $3 $4 $5}')
|
||||||
|
|
||||||
|
# Get the date of the chosen restore point
|
||||||
|
restore_point_date=$(echo "$restore_point" | awk -F '_' '{print $2 $3 $4 $5 $6}' | tr -d "_")
|
||||||
|
|
||||||
|
# Grab previous version
|
||||||
|
previous_version=$(echo "$boot_query" | sort -nr | grep -A 1 "$current_version," | tail -n 1)
|
||||||
|
|
||||||
|
# Compare the dates
|
||||||
|
while (("$restore_point_date" < "$when_updated" ))
|
||||||
|
do
|
||||||
|
clear -x
|
||||||
|
echo "The restore point you have chosen is from an older version of Truenas Scale"
|
||||||
|
echo "This is not recommended, as it may cause issues with the system"
|
||||||
|
echo
|
||||||
|
echo "Current SCALE Information:"
|
||||||
|
echo "Version: $current_version"
|
||||||
|
echo "When Updated: $(echo "$restore_point" | awk -F '_' '{print $2 "-" $3 "-" $4}')"
|
||||||
|
echo
|
||||||
|
echo "Restore Point SCALE Information:"
|
||||||
|
echo "Version: $(echo "$previous_version" | awk -F ',' '{print $1}')"
|
||||||
|
echo "When Updated: $(echo "$previous_version" | awk -F ',' '{print $2}' | awk -F 'T' '{print $1}')"
|
||||||
|
echo
|
||||||
|
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 "Proceeding.."
|
||||||
|
sleep 3
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
[Nn] | [Nn][Oo])
|
||||||
|
echo "Exiting"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "That was not an option, try again"
|
||||||
|
sleep 3
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ echo "4) Backup Options"
|
|||||||
echo "5) Update HeavyScript"
|
echo "5) Update HeavyScript"
|
||||||
echo "6) Update Applications"
|
echo "6) Update Applications"
|
||||||
echo "7) Command to Container"
|
echo "7) Command to Container"
|
||||||
|
echo "8) Patch 22.12.0"
|
||||||
echo
|
echo
|
||||||
echo "0) Exit"
|
echo "0) Exit"
|
||||||
read -rt 120 -p "Please select an option by number: " selection || { echo -e "\nFailed to make a selection in time" ; exit; }
|
read -rt 120 -p "Please select an option by number: " selection || { echo -e "\nFailed to make a selection in time" ; exit; }
|
||||||
@ -79,6 +80,9 @@ case $selection in
|
|||||||
7)
|
7)
|
||||||
cmd_to_container
|
cmd_to_container
|
||||||
;;
|
;;
|
||||||
|
8)
|
||||||
|
patch_2212_backups
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "\"$selection\" was not an option, please try agian" && sleep 3 && menu
|
echo "\"$selection\" was not an option, please try agian" && sleep 3 && menu
|
||||||
;;
|
;;
|
||||||
|
@ -98,3 +98,79 @@ echo
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
export -f help
|
export -f help
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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"
|
||||||
|
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
|
||||||
|
}
|
||||||
|
export -f patchv22120
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user