purge_EBS_Snapshots now more portable - works with both OS X/BSD Date and GNU/Linux Date command.
This commit is contained in:
parent
e76a6743b4
commit
c02743304a
|
@ -68,24 +68,46 @@ create_EBS_Snapshot_Tags()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
date_command_get()
|
date_binary_get()
|
||||||
{
|
{
|
||||||
#finds full path to date binary
|
#`uname -o (operating system) would be ideal, but OS X / Darwin does not support to -o option`
|
||||||
date_binary_full_path=`which date`
|
#`uname` on OS X defaults to `uname -s` and `uname` on GNU/Linux defaults to `uname -s`
|
||||||
#command below is used to determine if date binary is gnu, macosx or other
|
uname_result=`uname`
|
||||||
date_binary_file_result=`file -b $date_binary_full_path`
|
case $uname_result in
|
||||||
case $date_binary_file_result in
|
Darwin) date_binary="osx-posix" ;;
|
||||||
"Mach-O 64-bit executable x86_64") date_binary="macosx" ;;
|
Linux) date_binary="linux-gnu" ;;
|
||||||
"ELF 64-bit LSB executable, x86-64, version 1 (SYSV)"*) date_binary="gnu" ;;
|
|
||||||
*) date_binary="unknown" ;;
|
*) date_binary="unknown" ;;
|
||||||
esac
|
esac
|
||||||
#based on the installed date binary the case statement below will determine the method to use to determine "purge_after_days" in the future
|
}
|
||||||
case $date_binary in
|
|
||||||
gnu) date_command="date -d +${purge_after_days}days -u +%Y-%m-%d" ;;
|
get_purge_after_date()
|
||||||
macosx) date_command="date -v+${purge_after_days}d -u +%Y-%m-%d" ;;
|
{
|
||||||
unknown) date_command="date -d +${purge_after_days}days -u +%Y-%m-%d" ;;
|
#based on the date_binary variable, the case statement below will determine the method to use to determine "purge_after_days" in the future
|
||||||
*) date_command="date -d +${purge_after_days}days -u +%Y-%m-%d" ;;
|
case $date_binary in
|
||||||
esac
|
linux-gnu) echo `date -d +${purge_after_days}days -u +%Y-%m-%d` ;;
|
||||||
|
osx-posix) echo `date -v+${purge_after_days}d -u +%Y-%m-%d` ;;
|
||||||
|
*) echo `date -d +${purge_after_days}days -u +%Y-%m-%d` ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
get_purge_after_date_epoch()
|
||||||
|
{
|
||||||
|
#based on the date_binary variable, the case statement below will determine the method to use to determine "purge_after_date_epoch" in the future
|
||||||
|
case $date_binary in
|
||||||
|
linux-gnu) echo `date -d $purge_after_date +%s` ;;
|
||||||
|
osx-posix) echo `date -j -f "%Y-%m-%d" $purge_after_date "+%s"` ;;
|
||||||
|
*) echo `date -d $purge_after_date +%s` ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
get_date_current_epoch()
|
||||||
|
{
|
||||||
|
#based on the date_binary variable, the case statement below will determine the method to use to determine "date_current_epoch" in the future
|
||||||
|
case $date_binary in
|
||||||
|
linux-gnu) echo `date -d $date_current +%s` ;;
|
||||||
|
osx-posix) echo `date -j -f "%Y-%m-%d" $date_current "+%s"` ;;
|
||||||
|
*) echo `date -d $date_current +%s` ;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
purge_EBS_Snapshots()
|
purge_EBS_Snapshots()
|
||||||
|
@ -105,8 +127,8 @@ purge_EBS_Snapshots()
|
||||||
then echo "A Snapshot with the Snapshot ID $snapshot_id_evaluated has the tag \"PurgeAllow=true\" but does not have a \"PurgeAfter=YYYY-MM-DD\" date. $app_name is unable to determine if $snapshot_id_evaluated should be purged." 1>&2
|
then echo "A Snapshot with the Snapshot ID $snapshot_id_evaluated has the tag \"PurgeAllow=true\" but does not have a \"PurgeAfter=YYYY-MM-DD\" date. $app_name is unable to determine if $snapshot_id_evaluated should be purged." 1>&2
|
||||||
else
|
else
|
||||||
#convert both the date_current and purge_after_date into epoch time to allow for comparison
|
#convert both the date_current and purge_after_date into epoch time to allow for comparison
|
||||||
date_current_epoch=`date -j -f "%Y-%m-%d" "$date_current" "+%s"`
|
date_current_epoch=`get_date_current_epoch`
|
||||||
purge_after_date_epoch=`date -j -f "%Y-%m-%d" "$purge_after_date" "+%s"`
|
purge_after_date_epoch=`get_purge_after_date_epoch`
|
||||||
#perform compparison - if $purge_after_date_epoch is a lower number than $date_current_epoch than the PurgeAfter date is earlier than the current date - and the snapshot can be safely removed
|
#perform compparison - if $purge_after_date_epoch is a lower number than $date_current_epoch than the PurgeAfter date is earlier than the current date - and the snapshot can be safely removed
|
||||||
if [[ $purge_after_date_epoch < $date_current_epoch ]]
|
if [[ $purge_after_date_epoch < $date_current_epoch ]]
|
||||||
then
|
then
|
||||||
|
@ -152,11 +174,11 @@ date_current=`date -u +%Y-%m-%d`
|
||||||
#sets the PurgeAfter tag to the number of days that a snapshot should be retained
|
#sets the PurgeAfter tag to the number of days that a snapshot should be retained
|
||||||
if [[ -n $purge_after_days ]]
|
if [[ -n $purge_after_days ]]
|
||||||
then
|
then
|
||||||
#if the date_binary is not set, call the date_command_get function
|
#if the date_binary is not set, call the date_binary_get function
|
||||||
if [[ -z $date_binary ]]
|
if [[ -z $date_binary ]]
|
||||||
then date_command_get
|
then date_binary_get
|
||||||
fi
|
fi
|
||||||
purge_after_date=`$date_command`
|
purge_after_date=`get_purge_after_date`
|
||||||
echo "Snapshots taken by $app_name will be eligible for purging after the following date: $purge_after_date."
|
echo "Snapshots taken by $app_name will be eligible for purging after the following date: $purge_after_date."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user