108 lines
4.6 KiB
Bash
108 lines
4.6 KiB
Bash
|
#!/bin/bash
|
||
|
#
|
||
|
# This script must be run BEFORE the 17.1.1 RPM upgrade.
|
||
|
#
|
||
|
# This script will move site-specific edex_static.base localization files to
|
||
|
# common_static.configured or common_static.site.
|
||
|
#
|
||
|
# This update is required with 17.1.1.
|
||
|
#
|
||
|
# This update is only for edex servers which host the localization files.
|
||
|
#
|
||
|
|
||
|
function setOwnershipAndPerms {
|
||
|
chown -R awips:fxalpha "$1"
|
||
|
find "$1" -type f -exec chmod 664 {} \+
|
||
|
find "$1" -type d -exec chmod 775 {} \+
|
||
|
}
|
||
|
|
||
|
echo "INFO: Moving site-specific localization files from edex_static.base to"\
|
||
|
"common_static.site or common_static.configured"
|
||
|
|
||
|
IFS=$'\n'
|
||
|
utilityDir=/awips2/edex/data/utility
|
||
|
errcode=0
|
||
|
deletePrioritiesFile=0
|
||
|
deleteMarineInfoFile=0
|
||
|
|
||
|
# Copy awipsPriorities*.txt and MarineInfo.txt from edex_static.base to all
|
||
|
# common_static.configured dirs, unless they already exist in a given configured dir
|
||
|
configDirs=$(find $utilityDir/common_static/configured/* -maxdepth 0 2>/dev/null)
|
||
|
for dir in $configDirs; do
|
||
|
if [[ -e $utilityDir/edex_static/base/dissemination/awipsPriorities.txt ]]; then
|
||
|
if [[ -e "$dir"/dissemination/awipsPriorities.txt ]]; then
|
||
|
echo "WARN: Cannot copy $utilityDir/edex_static/base/dissemination/awipsPriorities.txt"\
|
||
|
"to $dir/dissemination/awipsPriorities.txt because the destination file aready exists"
|
||
|
deletePrioritiesFile=1
|
||
|
else
|
||
|
mkdir -vp "$dir"/dissemination
|
||
|
cp -v $utilityDir/edex_static/base/dissemination/awipsPriorities*.txt "$dir"/dissemination/ || errcode=1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# MarineInfo.txt is saved to infofiles/ when NDM file is dropped in, move
|
||
|
# to infofiles/marinesites/ to match BASE file
|
||
|
if [[ -e $utilityDir/edex_static/base/infofiles/MarineInfo.txt ]]; then
|
||
|
if [[ -e "$dir"/infofiles/marinesites/MarineInfo.txt ]]; then
|
||
|
echo "WARN: Cannot copy $utilityDir/edex_static/base/infofiles/MarineInfo.txt"\
|
||
|
"to $dir/infofiles/marinesites/MarineInfo.txt because the destination file aready exists"
|
||
|
deleteMarineInfoFile=1
|
||
|
else
|
||
|
mkdir -vp "$dir"/infofiles/marinesites
|
||
|
cp -v $utilityDir/edex_static/base/infofiles/MarineInfo.txt "$dir"/infofiles/marinesites/ || errcode=1
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# If the files were successfully copied to all dirs, delete them from edex_static
|
||
|
if [[ deletePrioritiesFile -eq 0 ]]; then
|
||
|
rm -v $utilityDir/edex_static/base/dissemination/awipsPriorities*.txt 2>/dev/null
|
||
|
rm -v $utilityDir/edex_static/base/dissemination/awipsPriorities*.txt.md5 2>/dev/null
|
||
|
else
|
||
|
echo "WARN: $utilityDir/edex_static/base/dissemination/awipsPriorities.txt"\
|
||
|
"will not be deleted since it was not copied to all configured directories (see above output)"
|
||
|
fi
|
||
|
if [[ deleteMarineInfoFile -eq 0 ]]; then
|
||
|
rm -v $utilityDir/edex_static/base/infofiles/MarineInfo.txt 2>/dev/null
|
||
|
rm -v $utilityDir/edex_static/base/infofiles/MarineInfo.txt.md5 2>/dev/null
|
||
|
else
|
||
|
echo "WARN: $utilityDir/edex_static/base/infofiles/MarineInfo.txt"\
|
||
|
"will not be deleted since it was not copied to all configured directories (see above output)"
|
||
|
fi
|
||
|
|
||
|
# Move WAN_exclude_${site}.txt and NWWS_exclude_${site}.txt to common_static.configured.${site}
|
||
|
excludeFiles=$(find $utilityDir/edex_static/base/dissemination/* -maxdepth 0 -name "WAN_exclude_*.txt" -o -name "NWWS_exclude_*.txt" 2>/dev/null)
|
||
|
for file in $excludeFiles; do
|
||
|
fileName="$(basename "$file")"
|
||
|
siteId="$(echo "$fileName" | cut -d'_' -f3 | cut -d'.' -f1)"
|
||
|
if [[ -e $utilityDir/common_static/site/"$siteId"/dissemination/$fileName ]]; then
|
||
|
echo "WARN: Cannot move $file to $utilityDir/common_static/site/"$siteId"/dissemination/$fileName"\
|
||
|
"because the destination file aready exists"
|
||
|
else
|
||
|
mkdir -vp $utilityDir/common_static/site/"$siteId"/dissemination
|
||
|
mv -v "$file" $utilityDir/common_static/site/"$siteId"/dissemination || errcode=1
|
||
|
rm -v "$file".md5 2>/dev/null
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Set ownership/permissions on all created dirs/files
|
||
|
destDirs=$(find $utilityDir/common_static/configured/*/dissemination \
|
||
|
$utilityDir/common_static/configured/*/infofiles \
|
||
|
$utilityDir/common_static/site/*/dissemination \
|
||
|
-maxdepth 0 2>/dev/null)
|
||
|
for dir in $destDirs; do
|
||
|
# Ensure context directory (e.g. /.../configured/OAX) has correct
|
||
|
# permissions, since it may have been newly created
|
||
|
chown awips:fxalpha $(dirname "$dir")
|
||
|
chmod 775 $(dirname "$dir")
|
||
|
|
||
|
setOwnershipAndPerms "$dir"
|
||
|
done
|
||
|
|
||
|
if [[ $errcode -ne 0 ]]; then
|
||
|
echo "ERROR: There were one or more errors when moving files. See above output."
|
||
|
else
|
||
|
echo "INFO: The update finished successfully."
|
||
|
fi
|
||
|
exit $errcode
|