metal/bsp-files/kickstarts/post_miniboot_controller.cfg
Shrikumar Sharma b4599522c1 Remote subcloud install failure in post-install script
When the kickstart tries to download packages_list from the
system controller, wget fails because the parameter to its
"-O" argument needs the full file path (including the file
name) as opposed to the full path to the directory that the
file resides in.

The argument has been fixed to use the full path name of the
file.

Test Plan:
PASS: Verify that the remote subcloud successfully downloads the
      file and installation passes.

Closes-Bug: 1976384

Signed-off-by: Shrikumar Sharma <shrikumar.sharma@windriver.com>
Change-Id: I65b6bd66e62e7353e33f2694ca5bf99d413df836
2022-05-31 10:15:48 -04:00

605 lines
24 KiB
INI

%pre --erroronfail
############################################################################
#
# This miniboot kickstart tells Anaconda to install the subcloud
# from one of the following repo sources listed in order of priority.
#
# 1. Prestaged Content ; Packages and repodata (highest priority)
#
# prestaged source ... /opt/platform-backup/rel-xx.xx/Packages
# prestaged source ... /opt/platform-backup/rel-xx.xx/repodata
# prestaged source ... xxxHTTP_URLxxx/patches
#
# Anaconda install ... /opt/platform-backup/rel-xx.xx
#
# 2. Prestaged ISO image
#
# prestaged source ... /opt/platform-backup/rel-xx.xx/bootimage.iso
# prestaged check ... /opt/platform-backup/rel-xx.xx/bootimage.md5
# prestaged source ... xxxHTTP_URLxxx/patches
#
# Anaconda install ... /mnt/bootimage
#
# 3. Staged feeds after %pre fetch from System Controller (lowest priority)
#
# stage source wget xxxHTTP_URLxxx/Packages -> /mnt/install/repo/Packages
# stage source wget xxxHTTP_URLxxx/repodata -> /mnt/install/repo/repodata
# stage source wget xxxHTTP_URLxxx/patches -> /mnt/install/repo/patches
#
# Anaconda install ... /mnt/install/repo/
#
# All of the above methods must mirror the system controller's feed,
# updates and patching repos from the staged or prestaged source.
#
# feed .... for installing system nodes /var/www/pages/feed/rel-xx.xx
#
# updates ... for managing updates /var/www/pages/updates
#
# patching .. for managing patches /opt/patching/commit
# /opt/patching/available
# /opt/patching/applied
#
# Miniboot checks and reports on found prestaged container images or
# other files with md5 checks present. Miniboot leaves them to be
# utilized by software.
#
# 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
. /tmp/ks-functions.sh
SW_VERSION=xxxPLATFORM_RELEASExxx
STAGING_DIR="platform-backup"
BACKUP_PART_LABEL=Platform\\x20Backup
BACKUP_DEVICE=/dev/disk/by-partlabel/${BACKUP_PART_LABEL}
BACKUP_MOUNT=/mnt/${STAGING_DIR}
BOOTIMAGE_ISO=""
# Staging and Prestaging Directories
INSTALL_MOUNT=/mnt/install/repo
BOOTIMAGE_MOUNT=/mnt/bootimage
PRESTAGE_DIR=${BACKUP_MOUNT}/${SW_VERSION}
KS="Miniboot pre:"
wlog "${KS} Local Install check"
iso_check=false
iso_mount=false
prestaging_files=false
# Look for and validate the local iso image
if [ -e ${BACKUP_DEVICE} ]; then
mkdir -p ${BACKUP_MOUNT}
mount ${BACKUP_DEVICE} ${BACKUP_MOUNT} 2>/dev/null
rc=$?
if [ $rc -eq 0 ] ; then
sleep 2
# does the prestaging dir for the specified sw version exist
if [ -d "${BACKUP_MOUNT}/${SW_VERSION}" ] ; then
# are there files in it ?
if [ "$(ls -A ${BACKUP_MOUNT}/${SW_VERSION})" ] ; then
# change to prestaging dir and load the file names
cd ${BACKUP_MOUNT}/${SW_VERSION}
# Local Install Bundle Validation:
#
# ISO Image: There must be an iso image whose base
# filename matches an md5 check file and
# that check must pass.
#
# Container Images: Missing container image check file(s) or
# container image validation check failure
# does not reject a Local Install.
#
# Find the iso image first.
# - there should be only one so use the first one found
# just in case there are others there.
# Loop over the files if there are any looking for the iso
iso_filename=""
for file in $(ls -A .) ; do
prestaging_files=true
filename="${file%.*}"
extension="${file##*.}"
if [ "${extension}" = "iso" ] ; then
iso_filename="${filename}"
# Found the iso name for the mount operation below
BOOTIMAGE_ISO=${BACKUP_MOUNT}/${SW_VERSION}/${file}
wlog "${KS} found prestaged iso image ${BOOTIMAGE_ISO}"
if [ -f ${filename}.md5 ] ; then
md5sum -c "${filename}.md5"
if [ $? -eq 0 ] ; then
wlog "${KS} ${file} iso check passed"
iso_check=true
mkdir -p ${BOOTIMAGE_MOUNT}
mount -o loop ${BOOTIMAGE_ISO} ${BOOTIMAGE_MOUNT}
if [ $? -eq 0 ] ; then
iso_mount=true
wlog "${KS} local iso mounted ${BOOTIMAGE_MOUNT}"
else
wlog "${KS} local iso mount failed"
fi
else
wlog "${KS} ${file} iso check failed"
fi
else
wlog "${KS} no iso image check file found ${filename}.md5"
fi
break
fi
done
# Loop over the files again this time to run checks
# on md5 files that are not the iso.
# Such files are expected to be checks for container image sets.
# Failure of container image sets check will not reject
# the local install.
for file in $(ls -A .) ; do
prestaging_files=true
filename="${file%.*}"
extension="${file##*.}"
if [ "${extension}" = "md5" -a "${filename}" != "${iso_filename}" ] ; then
wlog "${KS} prestaged file : ${file}"
md5sum -c "${file}"
if [ $? -eq 0 ] ; then
wlog "${KS} ${file} check passed"
else
wlog "${KS} ${file} check failed"
fi
fi
done
fi
if [ "${prestaging_files}" = false ] ; then
wlog "${KS} no prestaged files"
fi
else
wlog "${KS} ${BACKUP_MOUNT} not mounted"
fi
else
wlog "${KS} mount of ${BACKUP_DEVICE} to ${BACKUP_MOUNT} failed rc:$rc"
fi
else
wlog "${KS} backup device ${BACKUP_DEVICE} does not exist"
fi
if [ "${iso_check}" = true -a "${iso_mount}" = true ] ; then
wlog "${KS} Local Install ready"
elif [ "${iso_mount}" = false ] ; then
wlog "${KS} Prestaged ISO not present or invalid"
fi
# Make sure the prestage directory exists, as well as the required subdirectories.
exists_prestage=false
if [ ! -e ${PRESTAGE_DIR} ] || [ ! -e ${PRESTAGE_DIR}/Packages ] || [ ! -e ${PRESTAGE_DIR}/repodata ]; then
exists_prestage=false
wlog "${KS} Prestaged content not present"
else
repodata_files_count=$(ls ${PRESTAGE_DIR}/repodata | wc -l)
if [ ${repodata_files_count} -ne 0 ]; then
packages_files_count=$(ls ${PRESTAGE_DIR}/Packages | wc -l)
if [ ${packages_files_count} -ne 0 ] ; then
exists_prestage=true
wlog "${KS} Prestaged content present"
# unmount iso image if mounted
if [ -d ${BOOTIMAGE_MOUNT} ]; then
wlog "${KS} Unmounting ${BOOTIMAGE_MOUNT} for prestaged content install"
umount ${BOOTIMAGE_MOUNT}
rmdir ${BOOTIMAGE_MOUNT}
else
wlog "${KS} ${BOOTIMAGE_MOUNT} dir does not exist"
fi
else
wlog "${KS} Prestaged Content is invalid ; no Package files present"
fi
else
wlog "${KS} Prestaged Content is invalid ; no repodata files present ${repodata_files_count}"
fi
fi
#
# This controls where the packages come from.
# Lower cost has higher priority ; making local install preferred.
#
# If ${BOOTIMAGE_MOUNT} exists then install from local iso - Local Install
# Otherwise, they are fetched from platform backup if the Packages have been
# prestaged.
# If this fails, they are fetched from the System Controller - Remote Install
#
if [ "${exists_prestage}" = true ]; then
wlog "${KS} Prestage directory found: ${PRESTAGE_DIR}"
cat << EOF > /tmp/repo-include
repo --name=local-base --cost=100 --baseurl=file://${PRESTAGE_DIR}/
repo --name=local-updates --cost=100 --baseurl=file://${PRESTAGE_DIR}/patches/
repo --name=remote-base --cost=200 --baseurl=xxxHTTP_URLxxx/
repo --name=remote-updates --cost=200 --baseurl=xxxHTTP_URLxxx/patches/
EOF
elif [ "${iso_check}" = true -a "${iso_mount}" = true ] ; then
wlog "${KS} Packages will be retrieved from prestage iso"
cat << EOF > /tmp/repo-include
repo --name=local-base --cost=100 --baseurl=file://${BOOTIMAGE_MOUNT}/
repo --name=local-updates --cost=100 --baseurl=file://${BOOTIMAGE_MOUNT}/patches/
repo --name=remote-base --cost=200 --baseurl=xxxHTTP_URLxxx/
repo --name=remote-updates --cost=200 --baseurl=xxxHTTP_URLxxx/patches/
EOF
else
# Mirror remote software repositories
wlog "${KS} Staging Repo"
# Check for inst.noverifyssl
if grep -q inst.noverifyssl /proc/cmdline; then
NOVERIFYSSL_WGET_OPT="--no-check-certificate"
else
NOVERIFYSSL_WGET_OPT=""
fi
declare -i cut_dirs=NUM_DIRS
cd "${INSTALL_MOUNT}"
mkdir -p logs
mkdir -p Packages
mkdir -p repodata
feed_url=xxxHTTP_URLxxx
# Fetch Packages
wlog "${KS} Staged Install packages fetch from $feed_url/Packages"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' --reject '*.log' \
--cut-dirs=$cut_dirs ${feed_url}/Packages/ -o ${INSTALL_MOUNT}/logs/rpmget.log \
|| report_pre_failure_with_msg "Failed to fetch Packages ; see ${INSTALL_MOUNT}/logs/rpmget.log"
wlog "${KS} Staged Packages to ${INSTALL_MOUNT}/Packages complete"
# Fetch Repodata
wlog "${KS} Staged Install repodata fetch from $feed_url/repodata"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' --reject '*.log' \
--cut-dirs=$cut_dirs ${feed_url}/repodata/ -o ${INSTALL_MOUNT}/logs/rpmget_repo.log \
|| report_pre_failure_with_msg "Failed to fetch repodata ; see ${INSTALL_MOUNT}/logs/rpmget_repo.log"
wlog "${KS} Staged repodata to ${INSTALL_MOUNT}/repodata complete"
# Fetch Patch Package Data quietly
# - Patch Packages
# - Patches repodata
# - Patches metadata
# - Save all patch packages to /opt/patching/packages/xxxPLATFORM_RELEASExxx
patches_url=xxxHTTP_URLxxx/patches
wget ${NOVERIFYSSL_WGET_OPT} -q --spider ${patches_url}/
if [ $? -eq 0 ]; then
wlog "${KS} Staged Install patch repository from $patches_url to ${INSTALL_MOUNT}/patches"
mkdir -p ${INSTALL_MOUNT}/patches/Packages
mkdir -p ${INSTALL_MOUNT}/patches/repodata
cd ${INSTALL_MOUNT}/patches
declare -i patches_cut_dirs=$((cut_dirs+1))
wlog "${KS} Staged Install fetch patch Packages from $patches_url/Packages"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/Packages/ -o ${INSTALL_MOUNT}/logs/patches_rpmget.log \
|| report_post_failure_with_logfile ${INSTALL_MOUNT}/logs/patches_rpmget.log
wlog "${KS} Staged Install fetch patch repodata from $patches_url/repodata"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/repodata/ -o ${INSTALL_MOUNT}/logs/patches_rpmget_repo.log \
|| report_post_failure_with_logfile ${INSTALL_MOUNT}/logs/patches_rpmget_repo.log
wlog "${KS} Staged Install fetch patch metadata from $patches_url/metadata"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/metadata/ -o ${INSTALL_MOUNT}/logs/patches_rpmget_metadata.log \
|| report_post_failure_with_logfile ${INSTALL_MOUNT}/logs/patches_rpmget_metadata.log
wlog "${KS} Staged patches to ${INSTALL_MOUNT}/patches complete"
else
wlog "${KS} get from patches url '$patches_url' failed"
fi
cat << EOF > /tmp/repo-include
repo --name=local-base --cost=100 --baseurl=file://${INSTALL_MOUNT}/
repo --name=local-updates --cost=100 --baseurl=file://${INSTALL_MOUNT}/patches/
repo --name=remote-base --cost=200 --baseurl=xxxHTTP_URLxxx/
repo --name=remote-updates --cost=200 --baseurl=xxxHTTP_URLxxx/patches/
EOF
fi
%end
# Repository arguments from %pre
%include /tmp/repo-include
%post --erroronfail
# Source common functions
. /tmp/ks-functions.sh
KS="Miniboot post:"
# wlog "${KS} cmdLine: $(cat /proc/cmdline)"
if [ -e /dev/disk/by-label/oe_iso_boot ]; then
# This is a hybrid ISO/network install. Mount the media to ensure Anaconda
# ejects it on reboot.
mkdir /mnt/iso
wlog "${KS} mount for eject"
mount /dev/disk/by-label/oe_iso_boot /mnt/iso
else
wlog "${KS} /dev/disk/by-label/oe_iso_boot does not exist"
fi
# persist the default http port number to platform configuration. This
# will get overwritten when config_controller is run.
echo http_port=8080 >> /etc/platform/platform.conf
# Build networking scripts
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-lo
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
IPV6_AUTOCONF=no
NAME=loopback
EOF
%end
%post --nochroot --erroronfail
# Source common functions
. /tmp/ks-functions.sh
# Mirror local software repositories
INSTALL_MOUNT=/mnt/install/repo
SYSIMAGE_MOUNT=/mnt/sysimage
FEED_DIR=${SYSIMAGE_MOUNT}/var/www/pages/feed/rel-xxxPLATFORM_RELEASExxx
UPDATES_DIR=${SYSIMAGE_MOUNT}/var/www/pages/updates/rel-xxxPLATFORM_RELEASExxx
PATCHING_DIR=${SYSIMAGE_MOUNT}/opt/patching
PACKAGES_DIR=${PATCHING_DIR}/packages/xxxPLATFORM_RELEASExxx/
KS="Miniboot post:"
need_patches=false
# Handle 3 prestaging conditions
#
# 1. Full local install ; iso present in platform-backup/rel
# 2. Prioritized install ; use prestaged content fetch what's missing remotely
# 3. Staged install ; no prestaging content
if [ -d /mnt/bootimage ]; then
srcdir=/mnt/bootimage
# Always need to fetch patches for Prestaged ISO install.
# It is not sufficient to only get committed patches from the ISO,
# There may also be non-committed patches applied to the system
# controller that are needed as well.
# Setting need_patches to true for the ISO install handles both commited
# and non-committed patch cases.
need_patches=true
wlog "${KS} Local Install from $srcdir"
elif [ -d ${INSTALL_MOUNT}/Packages ] ; then
srcdir=${INSTALL_MOUNT}
wlog "${KS} Staged Install from $srcdir"
else
srcdir=/mnt/platform-backup/xxxPLATFORM_RELEASExxx
wlog "${KS} looking for packages in ${srcdir}"
fi
# prepare to boot other hosts by mirroring sw repository
if [ -d $srcdir/Packages ] ; then
wlog "${KS} copying software repository $srcdir/Packages and $srcdir/repodata"
mkdir -p ${FEED_DIR}
if [ -d $srcdir/repodata ] ; then
repodatafilecount=$(ls ${srcdir}/repodata | wc -l)
if [ ${repodatafilecount} = 0 ]; then
report_post_failure_with_msg "$srcdir/repodata files not found."
else
wlog "${KS} copying repodata from $srcdir/repodata to ${FEED_DIR}/repodata"
cp -r $srcdir/repodata ${FEED_DIR}/repodata
fi
else
report_post_failure_with_msg "$srcdir/repodata not found."
fi
packagesfilecount=$(ls ${srcdir}/Packages | wc -l)
if [ ${packagesfilecount} = 0 ]; then
report_post_failure_with_msg "$srcdir/Packages files not found."
else
wlog "${KS} copying packages from $srcdir/Packages to ${FEED_DIR}/Packages"
cp -r $srcdir/Packages ${FEED_DIR}/Packages
fi
else
report_post_failure_with_msg "$srcdir/Packages not found."
fi
if [ -d $srcdir/patches ]; then
if [ -d $srcdir/patches/Packages ] ; then
wlog "${KS} copying patch Packages from $srcdir/patches/Packages to ${UPDATES_DIR}/Packages"
mkdir -p ${UPDATES_DIR}
cp -r $srcdir/patches/Packages ${UPDATES_DIR}/Packages
else
wlog "${KS} $srcdir/patches/Packages doesn't exist. Fetching remotely"
need_patches=true
fi
if [ -d $srcdir/patches/repodata ] ; then
wlog "${KS} copying patch repodata from $srcdir/patches/repodata to ${UPDATES_DIR}/repodata"
mkdir -p ${UPDATES_DIR}
cp -r $srcdir/patches/repodata ${UPDATES_DIR}/repodata
else
wlog "${KS} $srcdir/patches/repodata doesn't exist. Fetching remotely"
need_patches=true
fi
else
wlog "${KS} $srcdir/patches doesn't exist. Fetching remotely"
need_patches=true
fi
if [ -d $srcdir/patches/metadata -a "${need_patches}" = false ] ; then
mkdir -p ${PATCHING_DIR}
wlog "${KS} copying patch metadata from $srcdir/patches/metadata to ${PATCHING_DIR}/metadata"
cp -r $srcdir/patches/metadata ${PATCHING_DIR}/metadata
else
wlog "${KS} $srcdir/patches/metadata doesn't exist. Fetching remotely"
need_patches=true
fi
if [ -d $srcdir/patches -a "${need_patches}" = false ]; then
mkdir -p ${PACKAGES_DIR}
wlog "${KS} copying packages from ${UPDATES_DIR}/Packages to ${PACKAGES_DIR}"
find ${UPDATES_DIR}/Packages -name '*.rpm' \
| xargs --no-run-if-empty -I files cp --preserve=all files ${PACKAGES_DIR}
else
wlog "${KS} $srcdir/patches doesn't exist: fetching remotely"
need_patches=true
fi
if [ "${srcdir}" = "${INSTALL_MOUNT}" ] ; then
# save the pre stage anaconda logs
mkdir -p ${SYSIMAGE_MOUNT}/var/log/anaconda
cp -a ${INSTALL_MOUNT}/logs/* ${SYSIMAGE_MOUNT}/var/log/anaconda
fi
if [ "${need_patches}" = true ]; then
echo > ${SYSIMAGE_MOUNT}/tmp/needpatches
fi
true
%end
%post --erroronfail
# Source common functions
. /tmp/ks-functions.sh
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
echo "INSTALL_UUID=$INSTALL_UUID" >> /etc/platform/platform.conf
wlog "${KS} updating platform.conf with install uuid : ${INSTALL_UUID}"
# Mirror remote software repositories
anaconda_logdir=/var/log/anaconda
mkdir -p $anaconda_logdir
# Check for inst.noverifyssl
if grep -q inst.noverifyssl /proc/cmdline; then
NOVERIFYSSL_WGET_OPT="--no-check-certificate"
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}/${DEST_PKG_FILE} \
-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:
#
# - Packages
# - Repodata
#
declare -i cut_dirs=NUM_DIRS
declare need_patches=
if [ -f /tmp/needpatches ]; then
wlog "${KS} patches need to be downloaded"
need_patches=true
rm /tmp/needpatches
else
need_patches=false
fi
# Fetch Patch Package Data quietly
# - Patch Packages
# - Patches repodata
# - Patches metadata
# - Save all patch packages to /opt/patching/packages/xxxPLATFORM_RELEASExxx
patches_url=xxxHTTP_URLxxx/patches
wget ${NOVERIFYSSL_WGET_OPT} -q --spider ${patches_url}/
if [ $? -eq 0 ] && [ "${need_patches}" = true ]; then
wlog "${KS} downloading patch repository $patches_url"
cd /var/www/pages
mkdir -p updates/rel-xxxPLATFORM_RELEASExxx/Packages
mkdir -p updates/rel-xxxPLATFORM_RELEASExxx/repodata
cd updates/rel-xxxPLATFORM_RELEASExxx
declare -i patches_cut_dirs=$((cut_dirs+1))
this_dir=$(pwd)
wlog "${KS} fetch patch packages from $patches_url/Packages to ${this_dir}"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/Packages/ -o $anaconda_logdir/patches_rpmget.log \
|| report_post_failure_with_logfile $anaconda_logdir/patches_rpmget.log
wlog "${KS} fetch patch repodata from $patches_url/repodata to ${this_dir}"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/repodata/ -o $anaconda_logdir/patches_rpmget_repo.log \
|| report_post_failure_with_logfile $anaconda_logdir/patches_rpmget_repo.log
mkdir -p /opt/patching/metadata
mkdir -p /opt/patching/packages/xxxPLATFORM_RELEASExxx
cd /opt/patching
wlog "${KS} fetch patch metadata from $patches_url/metadata to /opt/patching/metadata"
wget ${NOVERIFYSSL_WGET_OPT} --mirror --no-parent --no-host-directories --reject 'index.html*' \
--cut-dirs=$patches_cut_dirs $patches_url/metadata/ -o $anaconda_logdir/patches_rpmget_metadata.log \
|| report_post_failure_with_logfile $anaconda_logdir/patches_rpmget_metadata.log
wlog "${KS} save a copy of all patch packages to /opt/patching/packages/xxxPLATFORM_RELEASExxx ; preserve attributes"
find /var/www/pages/updates/rel-xxxPLATFORM_RELEASExxx/Packages -name '*.rpm' \
| xargs --no-run-if-empty -I files cp --preserve=all files /opt/patching/packages/xxxPLATFORM_RELEASExxx/
else
wlog "${KS} Patches are not required to be downloaded in post phase"
fi
%end