awips2/rpms/delta/setup/updateManager.sh
Bryan Kowal a89f0a64f0 Issue #202 - restoring rpm directory to ss_sync.
Former-commit-id: d537df4ab0 [formerly 4453ad2d10] [formerly 65e1e4ee0b] [formerly d537df4ab0 [formerly 4453ad2d10] [formerly 65e1e4ee0b] [formerly ea1c82452b [formerly 65e1e4ee0b [formerly 56068aa96fa6daf113861476bf4b7aebe2021ca4]]]]
Former-commit-id: ea1c82452b
Former-commit-id: 69f4822ad1 [formerly 9f6780c4dd] [formerly e63dac039e52161602915d3cf34685762acd5d9e [formerly 7f1b468010]]
Former-commit-id: ed7bf459df1503ce7bd9500dc984c56a535b768f [formerly dafb6b18d8]
Former-commit-id: bb662ca175
2012-01-20 13:38:00 -06:00

163 lines
3.8 KiB
Bash

#!/bin/bash
# 1) Ensure that the Update Registry exists.
# 2) Determine how many updates, if any, need to be applied for this build.
# 3) Step through the list of update scripts ...
# 3.1) source the script.
# 3.2) examine the build and the id; check the registry to determine if
# the update has been made.
# 3.3) skip the script if the update has already been made.
# 3.4) run the script if the update was not completed.
# 3.5) check the return code after the execution to determine
# if the update was successful or not.
# 3.6) if the update was successful, update the registry.
# Version: 1.0
# Variables
export CONST_REGISTRY_DIR="/usr/share/doc/awips2/delta"
export CONST_REGISTRY_DB_FILE="deltaRegistry.db"
CONST_REGISTRY_CREATION_SCRIPT="createUpdateRegistry.sh"
CONST_FUNCTION_TYPE="function"
UPDATE_SCRIPT=
VALID_UPDATE_IND=
UPDATE_REQUIRED_IND=
UPDATE_SUCCESS_IND=
# Arguments:
# ${1} == the component that we may be updating.
COMPONENT="${1}"
# Ensure That The Update Registry Exists.
if [ ! -f ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE} ]; then
# Create The Update Registry Before Proceeding.
/bin/bash ${CONST_REGISTRY_CREATION_SCRIPT}
fi
function validateUpdate()
{
# Verify A Delta Build Has Been Specified.
if [ "${DELTA_BUILD}" = "" ]; then
VALID_UPDATE_IND="N"
return
fi
# Verify A Delta ID Has Been Specified.
if [ "${DELTA_ID}" = "" ]; then
VALID_UPDATE_IND="N"
return
fi
# Verify A Delta Description Has Been Specified.
if [ "${DELTA_DESC}" = "" ]; then
VALID_UPDATE_IND="N"
return
fi
# Verify A 'runUpdate' Function Exists.
local EVAL_TYPE=`type -t runUpdate`
if [ ! "${EVAL_TYPE}" = "${CONST_FUNCTION_TYPE}" ]; then
VALID_UPDATE_IND="N"
return
fi
}
function checkIfUpdateIsNecessary()
{
local SQL="SELECT COUNT(*) FROM awips2_delta_registry WHERE "
SQL="${SQL} deltaBuild=\"${DELTA_BUILD}\" AND "
SQL="${SQL} deltaID=\"${DELTA_ID}\";"
local COUNT=`echo ${SQL} | sqlite3 ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE}`
if [ ! "${COUNT}" = "0" ]; then
UPDATE_REQUIRED_IND="N"
fi
}
function applyUpdate()
{
if [ ! "${DELTA_RUN_USER}" = "" ]; then
su ${DELTA_RUN_USER} -c "source ${UPDATE_SCRIPT}; runUpdate"
else
runUpdate
fi
local RC="$?"
if [ ! "${RC}" = "0" ]; then
UPDATE_SUCCESS_IND="N"
fi
}
function logUpdate()
{
DATE_APPLIED=`date +"%Y%m%d"`
TIME_APPLIED=`date +"%H%M%S"`
local SQL="INSERT INTO awips2_delta_registry VALUES("
SQL="${SQL}\"${DELTA_BUILD}\", "
SQL="${SQL}\"${DELTA_ID}\", "
SQL="${SQL}\"${DELTA_DESC}\", ${DATE_APPLIED}, ${TIME_APPLIED});"
echo ${SQL} | sqlite3 ${CONST_REGISTRY_DIR}/${CONST_REGISTRY_DB_FILE}
}
function update()
{
local RES_COL=70
local MOVE_TO_COL="echo -en \\033[${RES_COL}G"
local SETCOLOR_SUCCESS="echo -en \\033[1;32m"
local SETCOLOR_FAILURE="echo -en \\033[1;31m"
local SETCOLOR_NORMAL="echo -en \\033[0;39m"
source ${UPDATE_SCRIPT}
VALID_UPDATE_IND="Y"
validateUpdate
if [ ! "${VALID_UPDATE_IND}" = "Y" ]; then
return
fi
UPDATE_REQUIRED_IND="Y"
checkIfUpdateIsNecessary
if [ ! "${UPDATE_REQUIRED_IND}" = "Y" ]; then
return
fi
UPDATE_SUCCESS_IND="Y"
echo -n "Applying Update ... ${DELTA_ID}"
applyUpdate
sleep 10
${MOVE_TO_COL}
echo -n "["
if [ ! "${UPDATE_SUCCESS_IND}" = "Y" ]; then
${SETCOLOR_FAILURE}
echo -n "FAILURE"
${SETCOLOR_NORMAL}
echo -n "]"
echo ""
return
fi
${SETCOLOR_SUCCESS}
echo -n "SUCCESS"
${SETCOLOR_NORMAL}
echo -n "]"
echo ""
logUpdate
}
# Get a list of update scripts.
for script in ${COMPONENT}/*;
do
UPDATE_SCRIPT="${script}"
# Start The Update.
update
done