diff --git a/bsp-files/upgrades/import.sh b/bsp-files/upgrades/import.sh index 74e3110a..c95f055f 100644 --- a/bsp-files/upgrades/import.sh +++ b/bsp-files/upgrades/import.sh @@ -50,75 +50,37 @@ fi rm -rf ${FEED_DIR} mkdir -p ${FEED_DIR} -# Centos will be temporarily supported for testing. The import code -# for Centos 22.12 will be removed soon. No need for any fancy way -# to detect if it is a Debian iso, just check existance of ostree_repo -# TODO: remove the "else" clause -if [ -d ${ISO_DIR}/ostree_repo ]; then - # it is a Debian iso. +# copy pxeboot, kickstart, ostree_repo to feed directory +echo "Copy kickstart to ${FEED_DIR}" +cp -rp ${ISO_DIR}/kickstart ${FEED_DIR}/ +echo "Copy pxeboot to ${FEED_DIR}" +cp -rp ${ISO_DIR}/pxeboot ${FEED_DIR}/ +echo "Copy ostree_repo to ${FEED_DIR}" +cp -rp ${ISO_DIR}/ostree_repo ${FEED_DIR}/ - # copy pxeboot, kickstart, ostree_repo to feed directory - echo "Copy kickstart to ${FEED_DIR}" - cp -rp ${ISO_DIR}/kickstart ${FEED_DIR}/ - echo "Copy pxeboot to ${FEED_DIR}" - cp -rp ${ISO_DIR}/pxeboot ${FEED_DIR}/ - echo "Copy ostree_repo to ${FEED_DIR}" - cp -rp ${ISO_DIR}/ostree_repo ${FEED_DIR}/ +echo "Copy install_uuid to ${FEED_DIR}" +cp ${CURRENT_FEED_DIR}/install_uuid ${FEED_DIR}/ - echo "Copy install_uuid to ${FEED_DIR}" - cp ${CURRENT_FEED_DIR}/install_uuid ${FEED_DIR}/ +mkdir ${FEED_DIR}/upgrades +echo "Copy pxeboot-update-${VERSION}.sh to ${FEED_DIR}/upgrades" +cp ${ISO_DIR}/upgrades/pxeboot-update-${VERSION}.sh ${FEED_DIR}/upgrades/ - mkdir ${FEED_DIR}/upgrades - echo "Copy pxeboot-update-${VERSION}.sh to ${FEED_DIR}/upgrades" - cp ${ISO_DIR}/upgrades/pxeboot-update-${VERSION}.sh ${FEED_DIR}/upgrades/ +echo "Copy efi.img to ${FEED_DIR}" +cp ${ISO_DIR}/efi.img ${FEED_DIR}/ +# for upgrade from 22.06 to Debian 22.12, patch during upgrade is not supported - echo "Copy efi.img to ${FEED_DIR}" - cp ${ISO_DIR}/efi.img ${FEED_DIR}/ - # for upgrade from 22.06 to Debian 22.12, patch during upgrade is not supported - # only copy the patch meta is enough - if [ -d ${ISO_DIR}/patches ]; then - rsync -ac ${ISO_DIR}/patches/ /opt/patching/metadata/committed/ - # copy patch metadata to feed, so to be picked up by kickstart to copy to release N+1 - mkdir ${FEED_DIR}/patches -p - cp -a ${ISO_DIR}/patches/* ${FEED_DIR}/patches/ - fi -else - # this is a Centos iso - trap cleanup 0 +echo "Copy pxeboot-update-${SW_VERSION}.sh to ${CURRENT_FEED_DIR}/upgrades" +mkdir -p ${CURRENT_FEED_DIR}/upgrades/ +# In stx 8.0, the pxeboot-update-22.12.sh is in /usr/sbin +# In stx 9.0, the pxeboot-update-23.09.sh is in /etc due to the ostree managed +# /usr directory. +cp -rp /usr/sbin/pxeboot-update-22.12.sh ${CURRENT_FEED_DIR}/upgrades/ 2>/dev/null || \ +cp -rp /etc/pxeboot-update-${SW_VERSION}.sh ${CURRENT_FEED_DIR}/upgrades/ - TMP_RPM=/tmp/cpio - - rm -rf ${TMP_RPM} - - cp -rp ${ISO_DIR}/Packages ${ISO_DIR}/repodata ${ISO_DIR}/LiveOS ${FEED_DIR}/ - - cp -p ${CURRENT_FEED_DIR}/install_uuid ${FEED_DIR}/ - - if [ -d ${ISO_DIR}/patches ]; then - mkdir -p /var/www/pages/updates/rel-${VERSION} - cp -r ${ISO_DIR}/patches/Packages ${ISO_DIR}/patches/repodata /var/www/pages/updates/rel-${VERSION}/ - rsync -ac ${ISO_DIR}/patches/metadata/ /opt/patching/metadata/ - mkdir -p /opt/patching/packages/${VERSION} - - find /var/www/pages/updates/rel-${VERSION}/Packages -name '*.rpm' \ - | 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="${VERSION}_packages_list.txt" - 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}/${PKG_FILE} - fi -fi +# The pxelinux.cfg.files directory is from the current release feed in Debian. +echo "Copy pxelinux.cfg.files directory to ${CURRENT_FEED_DIR}" +mkdir -p ${CURRENT_FEED_DIR}/pxeboot/pxelinux.cfg.files/ +find /var/pxeboot/pxelinux.cfg.files -type f ! -name "*${VERSION}" \ +-exec cp -p {} ${CURRENT_FEED_DIR}/pxeboot/pxelinux.cfg.files/ \; echo 'import has completed' diff --git a/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install b/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install index 8a9b3c88..c730fa26 100644 --- a/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install +++ b/installer/pxe-network-installer/debian/deb_folder/pxe-network-installer.install @@ -2,3 +2,4 @@ var/pxeboot usr/sbin etc/init.d/pxeboot_feed lib/systemd/system/pxeboot-feed.service +etc/pxeboot-update* diff --git a/installer/pxe-network-installer/debian/deb_folder/rules b/installer/pxe-network-installer/debian/deb_folder/rules index 85ac7b8e..d12d6bc8 100644 --- a/installer/pxe-network-installer/debian/deb_folder/rules +++ b/installer/pxe-network-installer/debian/deb_folder/rules @@ -13,7 +13,6 @@ override_dh_auto_configure: dh_auto_configure override_dh_install: - install -v -d -m 755 $(ROOT)/usr/bin install -v -d -m 755 $(ROOT)/lib/systemd/system install -v -d -m 755 $(ROOT)/var/pxeboot/pxelinux.cfg.files install -v -d -m 755 $(ROOT)/var/pxeboot/rel-${platform_release} @@ -25,13 +24,12 @@ override_dh_install: install -v -m 644 pxe-grub.cfg $(ROOT)/var/pxeboot/pxelinux.cfg.files/grub.cfg install -v -m 644 pxe-grub.cfg.static $(ROOT)/var/pxeboot/pxelinux.cfg.files/grub.cfg.static install -v -m 644 grub.cfg.stx $(ROOT)/var/pxeboot/pxelinux.cfg.files/grub.cfg.stx - install -p -D -m 700 pxeboot-update.sh $(ROOT)/usr/sbin/pxeboot-update-${platform_release}.sh # Add controller-0 pxeboot install grub menus and setup utility install -p -D -m 644 pxeboot.cfg.debian $(ROOT)/var/pxeboot/pxelinux.cfg.files/pxeboot.cfg.debian install -p -D -m 644 efi-pxeboot.cfg.debian $(ROOT)/var/pxeboot/pxelinux.cfg.files/efi-pxeboot.cfg.debian install -p -D -m 755 pxeboot_setup.sh $(ROOT)/usr/sbin/pxeboot_setup.sh - install -p -D -m 755 pxeboot-update.sh ${ROOT}/usr/sbin/pxeboot-update-${platform_release}.sh + install -p -D -m 755 pxeboot-update.sh ${ROOT}/etc/pxeboot-update-${platform_release}.sh install -p -D -m 644 pxeboot-feed.service $(ROOT)/lib/systemd/system/pxeboot-feed.service install -p -D -m 755 pxeboot_feed.sh $(ROOT)/etc/init.d/pxeboot_feed diff --git a/kickstart/files/kickstart.cfg b/kickstart/files/kickstart.cfg index 104e1af6..bf77da99 100644 --- a/kickstart/files/kickstart.cfg +++ b/kickstart/files/kickstart.cfg @@ -2768,65 +2768,28 @@ if [ "$(curl -sf http://pxecontroller:6385/v1/upgrade/${hostname}/upgrade_in_pro -o /${LAT_DIR}/wget_sw_repo.log --exclude-directories=/feed/rel-${sw_release} ${feed_url} \ || report_failure_with_msg "Mirroring software repository failed" - # Sync patching repository - updates_url=http://pxecontroller:${http_port}/updates/ - wget --mirror --no-parent --no-host-directories --reject 'index.html*' --reject '*.log' \ - -o /${LAT_DIR}/wget_sw_patch_repo.log --exclude-directories=/updates/rel-${sw_release} ${updates_url} \ - || report_failure_with_msg "Mirroring software updates failed" - - # The /v1/upgrade/${hostname}/upgrade_in_progress endpoint accepts any textual data - # as hostname and returns system-wide upgrade state - # This is a placeholder as on Debian the hostname is unknown during kickstart. - # In contrast, the hostname is available on CentOS - # Check whether a second release is installed CURRENT_REL_DIR=rel-${sw_release} - OTHER_REL_DIR= - for REL_DIR in ${IMAGE_ROOTFS}/var/www/pages/feed/*; do - if [[ ! ${REL_DIR} =~ "${sw_release}" ]]; then - OTHER_REL_DIR=`basename ${REL_DIR}` - OTHER_REL_VERSION=${OTHER_REL_DIR:4} - break - fi - done + OTHER_REL_DIR=$(find ${IMAGE_ROOTFS}/var/www/pages/feed/* -maxdepth 0 -type d ! -name *${sw_release}*) + OTHER_REL_VERSION=$(basename "${OTHER_REL_DIR}") - # If second release is installed, find the latest version of the installer - if [ ! -z "${OTHER_REL_DIR}" ]; then - PATCH_RPM=`find ${IMAGE_ROOTFS}/var/www/pages/updates/${OTHER_REL_DIR}/Packages -name 'pxe-network-installer*' | sort -V | tail -1` - BASE_RPM=`find ${IMAGE_ROOTFS}/var/www/pages/feed/${OTHER_REL_DIR}/Packages -name 'pxe-network-installer*' | sort -V | tail -1` - fi - if [ ! -z "${PATCH_RPM}" ]; then - INSTALL_RPM=${PATCH_RPM} - elif [ ! -z "${BASE_RPM}" ]; then - INSTALL_RPM=${BASE_RPM} - else - report_failure_with_msg "Unable to find pxe-network-installer RPM for ${OTHER_REL_DIR}. Aborting installation." - fi - - ilog "Installing pxeboot files for release ${OTHER_REL_DIR} from ${INSTALL_RPM}" - - TMP_RPM=${IMAGE_ROOTFS}/tmp/pxe-network-installer - mkdir ${TMP_RPM} - pushd ${TMP_RPM} - - ${IMAGE_ROOTFS}/usr/bin/rpm2cpio ${INSTALL_RPM} | cpio -idm \ - || report_failure_with_msg "Failed to extract pxe-network-installer" - - PXEBOOT_DIR="/var/pxeboot/" - if [[ "${OTHER_REL_VERSION}" == "21.12" ]]; then - PXEBOOT_DIR="/pxeboot/" - fi - - cp -r ${TMP_RPM}/usr ${IMAGE_ROOTFS}/ \ - || report_failure_with_msg "Failed to copy pxe-network-installer /usr" - cp -r ${TMP_RPM}${PXEBOOT_DIR}$OTHER_REL_DIR ${IMAGE_ROOTFS}/var/pxeboot/ \ - || report_failure_with_msg "Failed to copy pxe-network-installer /var/pxeboot/$OTHER_REL_DIR" - cp ${TMP_RPM}${PXEBOOT_DIR}pxelinux.cfg.files/*-${OTHER_REL_VERSION} ${IMAGE_ROOTFS}/var/pxeboot/pxelinux.cfg.files/ \ - || report_failure_with_msg "Failed to copy pxe-network-installer pxelinux.cfg files" - - rm -rf ${TMP_RPM} + ilog "Installing pxeboot files for release ${OTHER_REL_DIR}" + mkdir -p ${IMAGE_ROOTFS}/var/pxeboot/${OTHER_REL_VERSION} \ + || report_failure_with_msg "Failed to create /var/pxeboot/${OTHER_REL_VERSION}" + cp -rp ${OTHER_REL_DIR}/kickstart/kickstart.cfg ${OTHER_REL_DIR}/ \ + || report_failure_with_msg "Failed to copy kickstart.cfg for to ${OTHER_REL_DIR}" + cp -rp ${OTHER_REL_DIR}/pxeboot/bzImage* ${IMAGE_ROOTFS}/var/pxeboot/${OTHER_REL_VERSION} \ + || report_failure_with_msg "Failed to copy pxeboot bzImage files for to /var/pxeboot/${OTHER_REL_VERSION}" + cp -rp ${OTHER_REL_DIR}/pxeboot/initrd* ${IMAGE_ROOTFS}/var/pxeboot/${OTHER_REL_VERSION} \ + || report_failure_with_msg "Failed to copy pxeboot initrd files for to /var/pxeboot/${OTHER_REL_VERSION}" + cp -rp ${OTHER_REL_DIR}/pxeboot/pxelinux.cfg.files/* ${IMAGE_ROOTFS}/var/pxeboot/pxelinux.cfg.files/ \ + || report_failure_with_msg "Failed to copy pxeboot pxelinux.cfg files for to /var/pxeboot/${OTHER_REL_VERSION}" + cp -rp ${OTHER_REL_DIR}/upgrades/pxeboot-update-${OTHER_REL_VERSION:4}.sh ${IMAGE_ROOTFS}/etc/ \ + || report_failure_with_msg "Failed to copy pxeboot-update-${OTHER_REL_VERSION:4}.sh to /etc/" + chmod 755 ${IMAGE_ROOTFS}/etc/pxeboot-update-${OTHER_REL_VERSION:4}.sh \ + || report_failure_with_msg "Failed to chmod 755 /etc/pxeboot-update-${OTHER_REL_VERSION:4}.sh" fi