Message ID | 1302647295-24257-1-git-send-email-lmr@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 12, 2011 at 07:28:15PM -0300, Lucas Meneghel Rodrigues wrote: > During unattended install, right after we receive the ACK from the guest > the test is deemed to be finished, and as shutdown_vm = yes, it'll try > to end the vm issuing a shutdown command to it. However, on virtually > all Linux guests an SSH server is not available at the end of install, > so KVM autotest will end the VM forcefully, which is not really safe, > although it has served us well so far. > > We did not fix this 'problem' so far because on RHEL3, a supported > guest, the anaconda syntax does not support the 'poweroff' directive, > only 'reboot', so if we don't finish the VM right after the ACK from > guest we really can't prevent it from starting the install again, > getting an infinite loop. On the other hand, RHEL 3 supports 'reboot'[1], so we could simply run the install-finished notification on first boot (it's the method we use for Windows guests, right?), and simply shut down the machine cleanly using ssh or the virtual power button. [1] http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/3/html/System_Administration_Guide/s1-kickstart2-options.html
On Wed, 2011-04-13 at 13:16 -0300, Eduardo Habkost wrote: > On Tue, Apr 12, 2011 at 07:28:15PM -0300, Lucas Meneghel Rodrigues wrote: > > During unattended install, right after we receive the ACK from the guest > > the test is deemed to be finished, and as shutdown_vm = yes, it'll try > > to end the vm issuing a shutdown command to it. However, on virtually > > all Linux guests an SSH server is not available at the end of install, > > so KVM autotest will end the VM forcefully, which is not really safe, > > although it has served us well so far. > > > > We did not fix this 'problem' so far because on RHEL3, a supported > > guest, the anaconda syntax does not support the 'poweroff' directive, > > only 'reboot', so if we don't finish the VM right after the ACK from > > guest we really can't prevent it from starting the install again, > > getting an infinite loop. > > On the other hand, RHEL 3 supports 'reboot'[1], so we could simply run > the install-finished notification on first boot (it's the method we use > for Windows guests, right?), and simply shut down the machine cleanly > using ssh or the virtual power button. Nope, as the VM is started with -kernel and -initrd options, the machine will start anaconda and therefore, install again. I wish we could do it as you described, really. Windows is a different beast, we don't start it with -kernel and -initrd options, just regular boot from the CD + the unattended floppy, so the VM can first boot nice and fine, and then we execute the finish.exe program, telling autotest the install is done. > > [1] http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/3/html/System_Administration_Guide/s1-kickstart2-options.html > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/client/tests/kvm/tests/unattended_install.py b/client/tests/kvm/tests/unattended_install.py index 40adfb9..41faeb5 100644 --- a/client/tests/kvm/tests/unattended_install.py +++ b/client/tests/kvm/tests/unattended_install.py @@ -553,7 +553,9 @@ def run_unattended_install(test, params, env): logging.info("Guest reported successful installation after %d s (%d min)", time_elapsed, time_elapsed/60) - if post_install_delay: - logging.debug("Post install delay specified, waiting %s s...", - post_install_delay) - time.sleep(post_install_delay) + if params.get("shutdown_cleanly", "yes") == "yes": + shutdown_cleanly_timeout = params.get("shutdown_cleanly_timeout", 120) + logging.info("Wait for guest to shudown cleanly...") + if kvm_utils.wait_for(vm.is_dead, shutdown_cleanly_timeout, 1, 1): + logging.info("Guest managed to shutdown cleanly") + diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample index 9d05364..64f6a7e 100644 --- a/client/tests/kvm/tests_base.cfg.sample +++ b/client/tests/kvm/tests_base.cfg.sample @@ -125,6 +125,8 @@ variants: kill_vm = yes kill_vm_gracefully = yes kill_vm_on_error = yes + shutdown_cleanly = yes + shutdown_cleanly_timeout = 120 force_create_image = yes extra_params += " -boot d" guest_port_unattended_install = 12323 @@ -1321,7 +1323,6 @@ variants: # hold your autoyast file extra_params += " --append 'autoyast=floppy console=ttyS0,115200 console=tty0'" #extra_params += " --append 'autoyast=cdrom console=ttyS0,115200 console=tty0'" - post_install_delay = 10 variants: - 11.0.32: @@ -1461,7 +1462,6 @@ variants: # hold your autoyast file extra_params += " --append 'autoyast=floppy console=ttyS0,115200 console=tty0'" #extra_params += " --append 'autoyast=cdrom console=ttyS0,115200 console=tty0'" - post_install_delay = 10 kernel = linux initrd = initrd @@ -1590,6 +1590,8 @@ variants: cdrom_unattended = images/rhel39-32/ks.iso kernel = images/rhel39-32/vmlinuz initrd = images/rhel39-32/initrd.img + # 3.X anaconda does not support 'poweroff' on ks + shutdown_cleanly = no unattended_install.cdrom: cdrom_cd1 = isos/linux/RHEL-3.9-i386-DVD.iso md5sum_cd1 = ddd11a1cb104119039b0fa05df6d52b8 @@ -1610,6 +1612,8 @@ variants: cdrom_unattended = images/rhel39-64/ks.iso kernel = images/rhel39-64/vmlinuz initrd = images/rhel39-64/initrd.img + # 3.X anaconda does not support 'poweroff' on ks + shutdown_cleanly = no unattended_install.cdrom: cdrom_cd1 = isos/linux/RHEL-3.9-x86_64-DVD.iso md5sum_cd1 = bf4635e4a4bd3b43838e72bc8c329d55 diff --git a/client/tests/kvm/unattended/Fedora-10.ks b/client/tests/kvm/unattended/Fedora-10.ks index 5dffccd..081d41a 100644 --- a/client/tests/kvm/unattended/Fedora-10.ks +++ b/client/tests/kvm/unattended/Fedora-10.ks @@ -16,6 +16,7 @@ zerombr clearpart --all --initlabel autopart reboot +poweroff %packages @base diff --git a/client/tests/kvm/unattended/Fedora-11.ks b/client/tests/kvm/unattended/Fedora-11.ks index c7d43b3..c339220 100644 --- a/client/tests/kvm/unattended/Fedora-11.ks +++ b/client/tests/kvm/unattended/Fedora-11.ks @@ -12,6 +12,7 @@ timezone --utc America/New_York firstboot --disable bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr +poweroff clearpart --all --initlabel autopart diff --git a/client/tests/kvm/unattended/Fedora-12.ks b/client/tests/kvm/unattended/Fedora-12.ks index c7d43b3..c339220 100644 --- a/client/tests/kvm/unattended/Fedora-12.ks +++ b/client/tests/kvm/unattended/Fedora-12.ks @@ -12,6 +12,7 @@ timezone --utc America/New_York firstboot --disable bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr +poweroff clearpart --all --initlabel autopart diff --git a/client/tests/kvm/unattended/Fedora-13.ks b/client/tests/kvm/unattended/Fedora-13.ks index c7d43b3..c339220 100644 --- a/client/tests/kvm/unattended/Fedora-13.ks +++ b/client/tests/kvm/unattended/Fedora-13.ks @@ -12,6 +12,7 @@ timezone --utc America/New_York firstboot --disable bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr +poweroff clearpart --all --initlabel autopart diff --git a/client/tests/kvm/unattended/Fedora-14.ks b/client/tests/kvm/unattended/Fedora-14.ks index db4298b..816428e 100644 --- a/client/tests/kvm/unattended/Fedora-14.ks +++ b/client/tests/kvm/unattended/Fedora-14.ks @@ -12,6 +12,7 @@ timezone --utc America/New_York firstboot --disable bootloader --location=mbr --append="rd_NO_PLYMOUTH console=tty0 console=ttyS0,115200" zerombr +poweroff clearpart --all --initlabel autopart diff --git a/client/tests/kvm/unattended/Fedora-9.ks b/client/tests/kvm/unattended/Fedora-9.ks index 9403191..a7d5399 100644 --- a/client/tests/kvm/unattended/Fedora-9.ks +++ b/client/tests/kvm/unattended/Fedora-9.ks @@ -16,6 +16,7 @@ zerombr clearpart --all --initlabel autopart reboot +poweroff %packages @base diff --git a/client/tests/kvm/unattended/OpenSUSE-11.xml b/client/tests/kvm/unattended/OpenSUSE-11.xml index 0ade836..95823cb 100644 --- a/client/tests/kvm/unattended/OpenSUSE-11.xml +++ b/client/tests/kvm/unattended/OpenSUSE-11.xml @@ -65,6 +65,7 @@ <ask-list config:type="list"/> <mode> <confirm config:type="boolean">false</confirm> + <final_halt config:type="boolean">true</final_halt> </mode> <mouse> <id>none</id> diff --git a/client/tests/kvm/unattended/RHEL-4-series.ks b/client/tests/kvm/unattended/RHEL-4-series.ks index 4583c76..2f7853e 100644 --- a/client/tests/kvm/unattended/RHEL-4-series.ks +++ b/client/tests/kvm/unattended/RHEL-4-series.ks @@ -15,7 +15,7 @@ bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr clearpart --all --initlabel autopart -reboot +poweroff %packages @ base diff --git a/client/tests/kvm/unattended/RHEL-5-series.ks b/client/tests/kvm/unattended/RHEL-5-series.ks index c528d8a..a7be569 100644 --- a/client/tests/kvm/unattended/RHEL-5-series.ks +++ b/client/tests/kvm/unattended/RHEL-5-series.ks @@ -15,7 +15,7 @@ bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr clearpart --all --initlabel autopart -reboot +poweroff %packages @base diff --git a/client/tests/kvm/unattended/RHEL-6-series.ks b/client/tests/kvm/unattended/RHEL-6-series.ks index 04f0672..fc41057 100644 --- a/client/tests/kvm/unattended/RHEL-6-series.ks +++ b/client/tests/kvm/unattended/RHEL-6-series.ks @@ -15,7 +15,7 @@ bootloader --location=mbr --append="console=tty0 console=ttyS0,115200" zerombr clearpart --all --initlabel autopart -reboot +poweroff %packages @base diff --git a/client/tests/kvm/unattended/SLES-11.xml b/client/tests/kvm/unattended/SLES-11.xml index c694a31..deba4f6 100644 --- a/client/tests/kvm/unattended/SLES-11.xml +++ b/client/tests/kvm/unattended/SLES-11.xml @@ -92,6 +92,7 @@ <ask-list config:type="list"/> <mode> <confirm config:type="boolean">false</confirm> + <final_halt config:type="boolean">true</final_halt> </mode> <mouse> <id>none</id>
During unattended install, right after we receive the ACK from the guest the test is deemed to be finished, and as shutdown_vm = yes, it'll try to end the vm issuing a shutdown command to it. However, on virtually all Linux guests an SSH server is not available at the end of install, so KVM autotest will end the VM forcefully, which is not really safe, although it has served us well so far. We did not fix this 'problem' so far because on RHEL3, a supported guest, the anaconda syntax does not support the 'poweroff' directive, only 'reboot', so if we don't finish the VM right after the ACK from guest we really can't prevent it from starting the install again, getting an infinite loop. Well then, let's restrict this behavior only to RHEL 3, and fix this properly for all other systems, by introducing a 'shutdown_cleanly' param and setting it to 'yes' to everybody but RHEL 3. Windows doesn't need this at all, as when the ACK is received the system is fully booted up and functional, so the postprocessing will take care of shutting down the VM cleanly. I've fixed all Fedora, RHEL, OpenSUSE, and SLES unattended files as part of this change. With this change, we can get rid of another parameter, post_install_delay, that was created with the only purpose of handling the fact that on autoyast install, when the ACK is sent to host, the system is not fully done with install. So we end up fixing yet another problem :) I've fixed the autoyast files exactly as the documentation [1] says, but couldn't test OpenSUSE 11.2 because no matter how much I tried OpenSUSE kernel panics under both F15 qemu-kvm and upstream qemu-kvm, and I don't have access to SLES. IBM guys, please help! :) [1] http://www.suse.de/~ug/autoyast_doc/configuration.html Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com> --- client/tests/kvm/tests/unattended_install.py | 10 ++++++---- client/tests/kvm/tests_base.cfg.sample | 8 ++++++-- client/tests/kvm/unattended/Fedora-10.ks | 1 + client/tests/kvm/unattended/Fedora-11.ks | 1 + client/tests/kvm/unattended/Fedora-12.ks | 1 + client/tests/kvm/unattended/Fedora-13.ks | 1 + client/tests/kvm/unattended/Fedora-14.ks | 1 + client/tests/kvm/unattended/Fedora-9.ks | 1 + client/tests/kvm/unattended/OpenSUSE-11.xml | 1 + client/tests/kvm/unattended/RHEL-4-series.ks | 2 +- client/tests/kvm/unattended/RHEL-5-series.ks | 2 +- client/tests/kvm/unattended/RHEL-6-series.ks | 2 +- client/tests/kvm/unattended/SLES-11.xml | 1 + 13 files changed, 23 insertions(+), 9 deletions(-)