Resending the refactored patch: I realized after I emailed it that it referenced the wrong bugzilla.
Darryl L. Pierce
2009-Nov-16 15:39 UTC
[Ovirt-devel] [PATCH] Provides an explicit upgrade path for an installed node.
This patch allows the node to be upgraded without destroying any configuration. The new kernel argument, ovirt_upgrade, will boot cause the node to install the upgraded image, then reboot. Resolves: rhbz#532547 Signed-off-by: Darryl L. Pierce <dpierce at redhat.com> --- scripts/ovirt-early | 14 +++++++------- scripts/ovirt-firstboot | 22 +++++++++++++--------- scripts/ovirt-functions | 12 +++++++++++- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/scripts/ovirt-early b/scripts/ovirt-early index cdd4afd..0a91f99 100755 --- a/scripts/ovirt-early +++ b/scripts/ovirt-early @@ -135,7 +135,7 @@ start() { # ovirt_init=[usb|scsi[:serial#]|/dev/...] # ovirt_vol=BOOT_MB:SWAP_MB:ROOT_MB:CONFIG_MB:LOGGING_MB:DATA_MB # ovirt_overcommit=<overcommit_ratio> - # ovirt_local_boot + # ovirt_upgrade # ovirt_standalone # ovirt_firstboot # rescue @@ -182,9 +182,9 @@ start() { # or a specific positive number in MB vol_data_size - # ovirt_local_boot + # ovirt_upgrade # install/update oVirt Node image on the local installation target disk - local_boot+ upgrade # ovirt_overcommit=<overcommit_ratio> # set the swap size coefficient @@ -305,8 +305,8 @@ start() { i=${i#ovirt_vol=} eval $(printf $i|awk -F: '{print "vol_boot_size="$1; print "vol_swap_size="$2; print "vol_root_size="$3; print "vol_config_size="$4; print "vol_logging_size="$5; print "vol_data_size="$6;}') ;; - ovirt_local_boot*) - local_boot=1 + ovirt_upgrade* |ovirt_local_boot*) + upgrade=1 ;; ovirt_standalone*) standalone=1 @@ -379,7 +379,7 @@ start() { ip_gateway=$gateway fi # save boot parameters as defaults for ovirt-config-* - params="bootif init vol_boot_size vol_swap_size vol_root_size vol_config_size vol_logging_size vol_data_size local_boot standalone overcommit ip_address ip_netmask ip_gateway ipv6 dns ntp vlan ssh_pwauth syslog_server syslog_port collectd_server collectd_port bootparams hostname firstboot" + params="bootif init vol_boot_size vol_swap_size vol_root_size vol_config_size vol_logging_size vol_data_size upgrade standalone overcommit ip_address ip_netmask ip_gateway ipv6 dns ntp vlan ssh_pwauth syslog_server syslog_port collectd_server collectd_port bootparams hostname firstboot" # mount /config unless firstboot is forced if [ "$firstboot" != "1" ]; then mount_config @@ -426,7 +426,7 @@ start() { ovirt_store_config \ /etc/sysconfig/network-scripts/ifcfg-* \ $BONDING_MODCONF_FILE - if [ $local_boot = 1 ]; then + if [ $upgrade = 1 ]; then # local disk installation for managed mode mount_live ovirt-config-boot /live "$bootparams" diff --git a/scripts/ovirt-firstboot b/scripts/ovirt-firstboot index bdafb33..650dcf7 100755 --- a/scripts/ovirt-firstboot +++ b/scripts/ovirt-firstboot @@ -32,7 +32,7 @@ trap 'exit $?' 1 2 13 15 start () { - if ! is_firstboot && ! is_auto_install; then + if ! is_firstboot && ! is_auto_install && ! is_upgrade; then return fi @@ -46,14 +46,18 @@ start () ovirt-config-networking AUTO ovirt-config-logging AUTO ovirt-config-collectd AUTO - ovirt-config-password AUTO - if [ "$OVIRT_LOCAL_BOOT" = 1 ]; then - mount_live - ovirt-config-boot /live "$OVIRT_BOOTPARAMS" no - disable_firstboot - reboot - fi - elif is_firstboot; then + ovirt-config-password AUTO + fi + + if is_upgrade; then + mount_live + ovirt-config-boot /live "$OVIRT_BOOTPARAMS" no + disable_firstboot + reboot + return + fi + + if is_firstboot; then plymouth --hide-splash ovirt-config-setup -x < /dev/console diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions index b61e317..69e2a58 100644 --- a/scripts/ovirt-functions +++ b/scripts/ovirt-functions @@ -102,6 +102,16 @@ is_auto_install() { fi } +# return 0 if this is an upgrade +# return 1 otherwise +is_upgrade() { + if [ "$OVIRT_UPGRADE" = "1" ]; then + return 0 + else + return 1 + fi +} + # return 0 if booted from local disk # return 1 if booted from other media is_booted_from_local_disk() { @@ -123,7 +133,7 @@ disable_firstboot() { augtool <<EOF set /files$OVIRT_DEFAULTS/OVIRT_FIRSTBOOT 0 set /files$OVIRT_DEFAULTS/OVIRT_INIT '""' -set /files$OVIRT_DEFAULTS/OVIRT_LOCAL_BOOT 0 +set /files$OVIRT_DEFAULTS/OVIRT_UPGRADE 0 EOF fi } -- 1.6.2.5
Darryl L. Pierce
2009-Dec-03 21:30 UTC
[Ovirt-devel] Re: [PATCH] Provides an explicit upgrade path for an installed node.
On Mon, Nov 16, 2009 at 10:39:23AM -0500, Darryl L. Pierce wrote:> This patch allows the node to be upgraded without destroying any > configuration. The new kernel argument, ovirt_upgrade, will boot cause > the node to install the upgraded image, then reboot. > > Resolves: rhbz#532547Can I get an ACK or feedback on this patch, please? -- Darryl L. Pierce, Sr. Software Engineer @ Red Hat, Inc. Delivering value year after year. Red Hat ranks #1 in value among software vendors. http://www.redhat.com/promo/vendor/ -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: not available URL: <http://listman.redhat.com/archives/ovirt-devel/attachments/20091203/17e377bd/attachment.sig>