Merge "Install package_checksums in /usr/local/share/pkg-list"

This commit is contained in:
Zuul 2022-05-20 14:34:52 +00:00 committed by Gerrit Code Review
commit e86cf0de49
5 changed files with 136 additions and 6 deletions

View File

@ -47,6 +47,10 @@
# prestaged container images ... /opt/platform-backup/rel-xx.xx/image#
# prestaged image checks ... /opt/platform-backup/rel-xx.xx/image#.md5
#
# Miniboot also downloads the file "package_checksums" from the system
# controller and copies it to two locations: /usr/local/share/pkg-list and
# to /var/www/pages/feed/rel-<version>. This file is required for prestaging
# operations. The file is renamed to packages_list at the target location.
############################################################################
# Source common functions
@ -474,6 +478,8 @@ true
KS="Miniboot post:"
FEED_DIR=/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
# Create a uuid specific to this installation
INSTALL_UUID=`uuidgen`
echo $INSTALL_UUID > /var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx/install_uuid
@ -491,6 +497,50 @@ else
NOVERIFYSSL_WGET_OPT=""
fi
# package_checksums
# copy the package_checksums file to /usr/local/share/pkg-list
INSTALL_MOUNT=/mnt/install/repo
PKG_FILE=package_checksums
# at the target directory, this file is called "packages_list"
DEST_PKG_FILE=packages_list
PKG_FILE_LOC=/usr/local/share/pkg-list
pkg_url=xxxHTTP_URLxxx
# create ${PKG_FILE_LOC} if it does not exist already.
if [ ! -d ${PKG_FILE_LOC} ]; then
wlog "${KS} Creating ${PKG_FILE_LOC}"
mkdir -p ${PKG_FILE_LOC}
fi
# There are two paths to obtain the desired file. The file is
# named package_checksums in the bootimage.iso, and it must be
# stored in two locations here as packages_list.
#
# If this server is being installed from the iso file (through
# CD/DVD etc, for example), then, if the file exists at
# ${INSTALL_MOUNT}, just copy it over. Otherwise, it is possible
# that this install is happening on a subcloud. In this case,
# download the file from the server (system controller).
#
# If the file does not exist, it is an issue as future upgrades
# may not work, so we need to exit with error.
if [ -f ${INSTALL_MOUNT}/${PKG_FILE} ]; then
wlog "${KS} copying package_checksums to ${PKG_FILE_LOC}"
cp ${INSTALL_MOUNT}/${PKG_FILE} ${PKG_FILE_LOC}/${DEST_PKG_FILE}
else
# the file does not exist because the install is not happening
# from a bootimage.iso.
# so get it from the system controller.
wlog "${KS} downloading packages_list from the system controller"
wget ${NOVERIFYSSL_WGET_OPT} ${pkg_url}/${DEST_PKG_FILE} \
-O ${PKG_FILE_LOC} \
-o $anaconda_logdir/${PKG_FILE}.log \
|| report_post_failure_with_logfile $anaconda_logdir/${PKG_FILE}.log
fi
# cp the package_checksum files to the feed directory
cp ${PKG_FILE_LOC}/${DEST_PKG_FILE} ${FEED_DIR}
# If the path to $FEED_DIR does not exist then proceed to create it and
# fetch the ISO content in pieces from the system controller:
@ -498,9 +548,7 @@ fi
# - Packages
# - Repodata
#
FEED_DIR=/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
declare -i cut_dirs=NUM_DIRS
declare need_patches=
if [ -f /tmp/needpatches ]; then

View File

@ -22,6 +22,26 @@ feed_url=http://pxecontroller:${http_port:-8080}/feed/
anaconda_logdir=/var/log/anaconda
mkdir -p $anaconda_logdir
pkg_file_loc=/usr/local/share/pkg-list
pkg_file=packages_list
FEED_DIR=/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
if [ ! -f ${pkg_file_loc} ]; then
mkdir -p ${pkg_file_loc}
fi
echo "Retrieving package_checksums and writing to packages_list" >/dev/console
curl ${feed_url}/rel-xxxPLATFORM_RELEASExxx/${pkg_file} \
-o ${pkg_file_loc}/${pkg_file}
# If the feed directory does not exist, create it now.
# The package checksums must be copied to it.
if [ ! -d ${FEED_DIR} ]; then
mkdir -p ${FEED_DIR}
fi
cp ${pkg_file_loc}/${pkg_file} ${FEED_DIR}
echo "Mirroring software repository (may take several minutes)..." >/dev/console
wget --recursive --no-parent --no-host-directories --no-clobber --reject 'index.html*' --reject '*.log' $feed_url/ -o $anaconda_logdir/wget-feed-mirror.log \
|| report_post_failure_with_logfile $anaconda_logdir/wget-feed-mirror.log

View File

@ -72,6 +72,8 @@ EOF
# Source common functions
. /tmp/ks-functions.sh
KS="pxeboot post:"
anaconda_logdir=/var/log/anaconda
mkdir -p $anaconda_logdir
@ -82,12 +84,36 @@ else
NOVERIFYSSL_WGET_OPT=""
fi
cd /var/www/pages
mkdir -p feed/rel-xxxPLATFORM_RELEASExxx/Packages
mkdir -p feed/rel-xxxPLATFORM_RELEASExxx/repodata
cd feed/rel-xxxPLATFORM_RELEASExxx
FEED_DIR=/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
mkdir -p ${FEED_DIR}/Packages
mkdir -p ${FEED_DIR}/repodata
cd ${FEED_DIR}
feed_url=xxxHTTP_URLxxx
declare -i cut_dirs=NUM_DIRS
# download the package_checksums file if /mnt/sysimage is mounted
if [ mountpoint -q /mnt/sysimage ]; then
wlog "${KS} Downloading package_checksums from controller"
pkg_file=packages_list
pkg_file_loc=/mnt/sysimage/usr/local/share/pkg-list
if [ ! -d ${pkg_file_loc} ]; then
mkdir -p ${pkg_file_loc}
fi
wlog "${KS} Downloading from ${feed_url} to ${pkg_file_loc}/${pkg_file}"
wget ${NOVERIFYSSL_WGET_OPT} -O ${pkg_file_loc} ${feed_url}/${pkg_file} \
-o $anaconda_logdir/${pkg_file}.log \
|| wlog "${KS} Failed to download packages_list from controller"
wlog "${KS} Copying ${pkg_file_loc}/${pkg_file} to ${FEED_DIR}"
cp ${pkg_file_loc}/${pkg_file} ${FEED_DIR}
fi
echo "Mirroring software repository (may take several minutes)..." >/dev/console
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$cut_dirs $feed_url/Packages/ -o $anaconda_logdir/rpmget.log \

View File

@ -53,12 +53,33 @@ EOF
# Note, this section is different and replaced with a wget
# if doing the initial install off the network
%post --nochroot
. /tmp/ks-functions.sh
KS="usb post:"
if [ -d /mnt/install/source ]; then
srcdir=/mnt/install/source
else
srcdir=/run/install/repo
fi
pkg_dir=/mnt/sysimage/usr/local/share/pkg-list
if [ ! mountpoint -q /mnt/sysimage ]; then
wlog "${KS} /mnt/sysimage not mounted. The installation will fail."
exit -1
fi
if [ ! -d ${pkg_dir} ]; then
mkdir -p ${pkg_dir}
fi
if [ -f ${srcdir}/package_checksums ]; then
cp ${srcdir}/package_checksums ${pkg_dir}/packages_list
cp ${srcdir}/package_checksums /mnt/sysimage/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx/packages_list
fi
if [ -d $srcdir/Packages ] ; then
mkdir -p /mnt/sysimage/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
cp -r $srcdir/Packages /mnt/sysimage/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx/Packages

View File

@ -62,3 +62,18 @@ if [ -d $ISO_DIR/patches ]; then
| xargs --no-run-if-empty -I files cp --preserve=all files /opt/patching/packages/${VERSION}/
fi
# copy package checksum if it exists
PKG_FILE=package_checksums
PKG_FILE_LOC=/usr/local/share/pkg-list
if [ -f ${ISO_DIR}/${PKG_FILE} ]; then
DEST_PKG_FILE=packages_list
if [ ! -d ${PKG_FILE_LOC} ]; then
mkdir -p ${PKG_FILE_LOC}
fi
cp ${ISO_DIR}/${PKG_FILE} ${PKG_FILE_LOC}/${DEST_PKG_FILE}
cp ${ISO_DIR}/${PKG_FILE} ${FEED_DIR}/${DEST_PKG_FILE}
fi