[et-mgmt-tools] [patch 3/8] Move post install check into DistroInstaller

Daniel P. Berrange berrange at redhat.com
Thu May 10 15:42:50 UTC 2007


On Wed, May 02, 2007 at 01:16:11PM +0100, Mark McLoughlin wrote:
> The existing heuristic we use in virt-install to detect whether
> an install has completed successfully is dependant on the type
> of installer being used - i.e. if you create a VM with a livecd
> or a raw ext3 image, there may be no disk with an MBR at the end.
> 
> This patch moves that logic into a new DistroInstaller method.
> 
> Signed-off-by: Mark McLoughlin <markmc at redhat.com>
> 
> Index: virtinst--devel/virtinst/DistroManager.py
> ===================================================================
> --- virtinst--devel.orig/virtinst/DistroManager.py
> +++ virtinst--devel/virtinst/DistroManager.py
> @@ -18,6 +18,7 @@ import os
>  import gzip
>  import re
>  import stat
> +import struct
>  import subprocess
>  import urlgrabber.grabber as grabber
>  import urlgrabber.progress as progress
> @@ -698,3 +699,10 @@ class DistroInstaller(Guest.Installer):
>              osblob += "    <bootloader>/usr/bin/pygrub</bootloader>"
>  
>          return osblob
> +
> +    def post_install_check(self, guest):
> +        # Check for the 0xaa55 signature at the end of the MBR
> +        fd = os.open(guest.disks[0].path, os.O_RDONLY)
> +        buf = os.read(fd, 512)
> +        os.close(fd)
> +        return len(buf) == 512 and struct.unpack("H", buf[0x1fe: 0x200]) == (0xaa55,)

We should really create a convenience method in virtinst/util.py for
this stuff. This is definitely broken on ia64 which uses EFI / GPT
instead of BIOS/MBR.

We could have an 

  def has_boot_record()
     if has_boot_record_mbr()
        return True
     if has_boot_record_gpt()
        return True
     return Fale

  def has_boot_record_mbr()
    ...existing code from above...

  def has_boot_record_gpt()
    ...figure something out :-) ...


Dan
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 




More information about the et-mgmt-tools mailing list