From 3e251c8c726eb03ca86ce562b150e3210e83df6a Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Feb 13 2020 13:14:21 +0000 Subject: fedora-kata-osbuilder.sh: Support 'regenerate' option This skips the host kernel symlink check, so we will regenerate the appliance for the current installer kernel. Use this subcommand at RPM post time, so an update or reinstall of the package will refresh the current appliance. Also wire it up to kata-osbuilder-generate.service service 'reload' Signed-off-by: Cole Robinson --- diff --git a/fedora-kata-osbuilder.sh b/fedora-kata-osbuilder.sh index e614437..0403ee3 100755 --- a/fedora-kata-osbuilder.sh +++ b/fedora-kata-osbuilder.sh @@ -13,6 +13,9 @@ die() [ "$(id -u)" -eq 0 ] || die "$0: must be run as root" +COMMAND="$1" +[ -z "$COMMAND" ] && COMMAND="check" +[ "$COMMAND" != "check" -a "$COMMAND" != "regenerate" ] && die "$0: Unknown command=$COMMAND" IMAGE_TOPDIR="/var/cache/kata-containers" KERNEL_SYMLINK="${IMAGE_TOPDIR}/vmlinuz.container" @@ -29,11 +32,13 @@ done [ -z "$KERNEL_PATH" ] && die "$0: Didn't find kernel path for version=$KVERSION" -LINKED_KERNEL=$(readlink -n "${KERNEL_SYMLINK}" || :) -if [ "${KERNEL_PATH}" = "${LINKED_KERNEL}" ] ; then - echo "$0: symlink=${KERNEL_SYMLINK} already points to host kernel=${KERNEL_PATH}" - echo "$0: Nothing to generate. Exiting." - exit 0 +if [ "regenerate" != "$COMMAND" ]; then + LINKED_KERNEL=$(readlink -n "${KERNEL_SYMLINK}" || :) + if [ "${KERNEL_PATH}" = "${LINKED_KERNEL}" ] ; then + echo "$0: symlink=${KERNEL_SYMLINK} already points to host kernel=${KERNEL_PATH}" + echo "$0: Nothing to generate. Exiting." + exit 0 + fi fi diff --git a/kata-osbuilder-generate.service b/kata-osbuilder-generate.service index 63e1c55..7143e77 100644 --- a/kata-osbuilder-generate.service +++ b/kata-osbuilder-generate.service @@ -4,6 +4,7 @@ Description=Generate Kata appliance image for host kernel [Service] Type=oneshot ExecStart=/usr/libexec/kata-containers/fedora-kata-osbuilder.sh +ExecReload=/usr/libexec/kata-containers/fedora-kata-osbuilder.sh regenerate [Install] WantedBy=multi-user.target diff --git a/kata-osbuilder.spec b/kata-osbuilder.spec index 2f745a0..cd3d2ee 100644 --- a/kata-osbuilder.spec +++ b/kata-osbuilder.spec @@ -148,7 +148,7 @@ install -m 0644 -D -t %{buildroot}%{_unitdir} %{_sourcedir}/kata-osbuilder-gener TMPOUT="$(mktemp -t kata-rpm-post-XXXXXX.log)" echo "Creating kata appliance initrd and filesystem image..." -bash %{kataosbuilderdir}/fedora-kata-osbuilder.sh > ${TMPOUT} 2>&1 +bash %{kataosbuilderdir}/fedora-kata-osbuilder.sh regenerate > ${TMPOUT} 2>&1 if test "$?" != "0" ; then echo "Building failed. See log for details: ${TMPOUT}" exit 1