ansible/roles/mirrormanager/backend/files/umdl-required
Adrian Reber 81193609d5
mirrormanager: switch again to mref1-priv.iad2.centos.org for scanning
Signed-off-by: Adrian Reber <adrian@lisas.de>
2022-07-06 09:11:10 +02:00

99 lines
3 KiB
Bash

#!/bin/bash
# This script checks for changes on the primary mirror and
# updates the database if changes are found. For most categories
# the script first checks if a fullfiletimelist-<category>
# exists and runs the actual primary mirror scan if that file
# has changed.
if [ $# -ne 2 ]; then
echo "Exactly two parameter needed. category and /path/to/logfile"
exit 1
fi
exec >> $2
exec 2>&1
CURDATE=`date +%s`
SCANNER="/usr/bin/mm2_update-master-directory-list"
if [ "${1}" == "fedora" ]; then
CATEGORY="Fedora Linux"
elif [ "${1}" == "epel" ]; then
CATEGORY="Fedora EPEL"
SCANNER="/usr/local/bin/scan-primary-mirror"
elif [ "${1}" == "alt" ]; then
CATEGORY="Fedora Other"
elif [ "${1}" == "fedora-secondary" ]; then
CATEGORY="Fedora Secondary Arches"
SCANNER="/usr/local/bin/scan-primary-mirror -d"
elif [ "${1}" == "archive" ]; then
CATEGORY="Fedora Archive"
SCANNER="/usr/local/bin/scan-primary-mirror -d"
elif [ "${1}" == "codecs" ]; then
CATEGORY="Fedora Codecs"
SCANNER="/usr/local/bin/scan-primary-mirror"
elif [ "${1}" == "centos" ]; then
CATEGORY="CentOS"
SCANNER="/usr/local/bin/scan-primary-mirror -c /etc/mirrormanager/scan-primary-mirror-centos.toml -d"
fi
if [ -e /var/run/mirrormanager/umdl-${1} ]; then
. /var/run/mirrormanager/umdl-${1}
else
# 24 hours -> 86400 seconds
let LASTRUN=CURDATE-86400
fi
if [ "${1}" == "centos" ]; then
CENTOS_PRIMARY="mref1-priv.iad2.centos.org"
# check if a sync is currently in process
CODE=$( curl -s -o /dev/null -I -w "%{http_code}" http://${CENTOS_PRIMARY}/9-stream/.sync_in_progress )
if [ "${CODE}" -eq "200" ]; then
echo -n "CentOS primary mirror sync in progress. Skipping scan at "
date
exit 0
fi
FFTL="http://${CENTOS_PRIMARY}/9-stream/COMPOSE_ID"
FILEDATE=`date +%s -d"$( curl -s --head ${FFTL} | awk 'BEGIN {FS=": "}/^Last-Modified/{print $2}' )"`
FFTL_SIGS="http://${CENTOS_PRIMARY}/SIGs/9-stream/COMPOSE_ID"
FILEDATE_SIGS=`date +%s -d"$( curl -s --head ${FFTL_SIGS} | awk 'BEGIN {FS=": "}/^Last-Modified/{print $2}' )"`
if [ "$FILEDATE_SIGS" -gt "$FILEDATE" ]; then
FILEDATE=$FILEDATE_SIGS
FFTL=$FFTL_SIGS
fi
elif [ "${1}" == "codecs" ]; then
FFTL="${CATEGORY}"
FILEDATE=${CURDATE}
else
FFTL="/srv/pub/${1}/fullfiletimelist-${1}"
FILEDATE=`stat -c %Z ${FFTL} 2> /dev/null`
if [ "$?" -eq "1" ]; then
echo "Error stat() of ${FFTL} failed. This should not happen."
exit 1
fi
fi
# Rerun scan after 24 hours
if [ "$LASTRUN" -gt "$FILEDATE" ] && [ "$LASTRUN" -gt $(expr $CURDATE - 86400) ]; then
# no changes on the master mirror
# abort
exit 0
fi
echo -n "${FFTL} has changed since last run. Running umdl for ${CATEGORY} at "
date
/usr/local/bin/lock-wrapper umdl-${1} "${SCANNER} --category \"${CATEGORY}\""
if [ "$?" -eq "0" ]; then
# success! remember the date of this run
echo "LASTRUN=${CURDATE}" > /var/run/mirrormanager/umdl-${1}
echo -n "Finished umdl for ${CATEGORY} successfully at "
date
exit 0
fi
echo -n "umdl for ${CATEGORY} returned non-zero. Something failed. Please check umdl.log. "
date