Force installation of prestage iso when force_install option is
provided through the kernel commandline When there is an existing installation on the subcloud, the kickstart will ensure that it is not overwritten by the prestaged iso. However, when the force_install option is provided via the kernel commandline, the existing installation can be overwritten. Test Plan: PASS: Verify that the prestage iso overwrites the existing installation when the force_install option is provided at the kernel commandline. PASS: Verify that the installation halts with a message, if there is an existing installation and force_install option is not provided at the kernel commandline. PASS: Verify that the prestage iso installs when there is no pre-existing installation and force_install is provided PASS: Verify that above tests pass on NVMe-based systems Regression: PASS: Verify that the prestage iso installs without force_install and no installation exists Story: 2009948 Task: 44914 Signed-off-by: Shrikumar Sharma <shrikumar.sharma@windriver.com> Change-Id: I2491d80cb4e07aa2fb38381c9e92afd7549526ef
This commit is contained in:
parent
3ac0bcfd99
commit
dc3bfbf164
@ -11,39 +11,43 @@ wlog "pre prestaging install check"
|
|||||||
# First, parse /proc/cmdline to find the boot args
|
# First, parse /proc/cmdline to find the boot args
|
||||||
set -- `cat /proc/cmdline`
|
set -- `cat /proc/cmdline`
|
||||||
for I in $*; do case "$I" in *=*) eval $I 2>/dev/null;; esac; done
|
for I in $*; do case "$I" in *=*) eval $I 2>/dev/null;; esac; done
|
||||||
|
for J in $*; do case "$J" in force_install) force_install=${J};; esac; done
|
||||||
|
|
||||||
if [ -z "$rootfs_device" ]; then
|
# if force_install is set, install anyway. Ignore the remainder of this section.
|
||||||
|
|
||||||
|
if [ -z ${force_install} ]; then
|
||||||
|
if [ -z "$rootfs_device" ]; then
|
||||||
rootfs_device=$(get_disk_dev)
|
rootfs_device=$(get_disk_dev)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
orig_rootfs_device=$rootfs_device
|
orig_rootfs_device=$rootfs_device
|
||||||
by_path_rootfs_device=$(get_by_path $rootfs_device)
|
by_path_rootfs_device=$(get_by_path $rootfs_device)
|
||||||
rootfs_device=$(get_disk $by_path_rootfs_device)
|
rootfs_device=$(get_disk $by_path_rootfs_device)
|
||||||
wlog "Found rootfs $orig_rootfs_device on: $by_path_rootfs_device->$rootfs_device."
|
wlog "Found rootfs $orig_rootfs_device on: $by_path_rootfs_device->$rootfs_device."
|
||||||
|
|
||||||
part_numbers=( $(parted -s ${rootfs_device} print | awk '$1 == "Number" {i=1; next}; i {print $1}') )
|
part_numbers=( $(parted -s ${rootfs_device} print | awk '$1 == "Number" {i=1; next}; i {print $1}') )
|
||||||
# print the partnumber info for informational purposes
|
# print the partnumber info for informational purposes
|
||||||
for i in ${part_numbers[@]}; do
|
for i in ${part_numbers[@]}; do
|
||||||
wlog "partnumber: ${i}"
|
wlog "partnumber: ${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Get the correct rootfs prefix
|
# Get the correct rootfs prefix
|
||||||
ROOTFS_PART_PREFIX=${rootfs_device}
|
ROOTFS_PART_PREFIX=${rootfs_device}
|
||||||
# check if rootfs part is nvme (eg. /dev/nvme0n1). The partitions have a "p" in the part prefix.
|
# check if rootfs part is nvme (eg. /dev/nvme0n1). The partitions have a "p" in the part prefix.
|
||||||
# for example, /dev/nvme0n1p1
|
# for example, /dev/nvme0n1p1
|
||||||
# so we need to add the letter "p" to get the prefix.
|
# so we need to add the letter "p" to get the prefix.
|
||||||
# The part numbers will be used later in the code.
|
# The part numbers will be used later in the code.
|
||||||
case $rootfs_device in
|
case $rootfs_device in
|
||||||
*"nvme"*)
|
*"nvme"*)
|
||||||
ROOTFS_PART_PREFIX=${ROOTFS_PART_PREFIX}p
|
ROOTFS_PART_PREFIX=${ROOTFS_PART_PREFIX}p
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# temporary mount directory
|
# temporary mount directory
|
||||||
temp_mount=/mnt
|
temp_mount=/mnt
|
||||||
|
|
||||||
wlog "Searching for existing installation..."
|
wlog "Searching for existing installation..."
|
||||||
for part in "${part_numbers[@]}"; do
|
for part in "${part_numbers[@]}"; do
|
||||||
device=${ROOTFS_PART_PREFIX}${part}
|
device=${ROOTFS_PART_PREFIX}${part}
|
||||||
wlog "Searching on ${device}"
|
wlog "Searching on ${device}"
|
||||||
# mount this part at a temporary mount point
|
# mount this part at a temporary mount point
|
||||||
@ -60,7 +64,12 @@ for part in "${part_numbers[@]}"; do
|
|||||||
# do not modify the system in any way
|
# do not modify the system in any way
|
||||||
report_pre_failure_with_msg "Prestage rejected. Existing installation detected. Please eject the media before rebooting."
|
report_pre_failure_with_msg "Prestage rejected. Existing installation detected. Please eject the media before rebooting."
|
||||||
fi
|
fi
|
||||||
wlog "Unmounting ${device}"
|
|
||||||
umount ${temp_mount}
|
umount ${temp_mount}
|
||||||
done
|
done
|
||||||
|
wlog "Installing Prestaged content. No existing installation found."
|
||||||
|
else
|
||||||
|
# force install inspite of existing installation
|
||||||
|
wlog "Force install the prestage content"
|
||||||
|
wlog "Installing Prestaged content. All existing installations will be lost."
|
||||||
|
fi
|
||||||
%end
|
%end
|
||||||
|
Loading…
Reference in New Issue
Block a user