[et-mgmt-tools] [PATCH] Add support for Solaris PV

John Levon levon at movementarian.org
Thu Dec 4 13:12:15 UTC 2008


On Thu, Dec 04, 2008 at 12:37:00PM +0000, Daniel P. Berrange wrote:

> The new Installer class for Solaris looks fine to me, but I don't really
> like the renaming of os_type to virt_type, since its conflicting naming
> to the libvirt usage.
> 
> 'virt type' is usually used to refer to hypervisor type, eg this bit
> of the XML
> 
>   <domain type='xen'>
>   <domain type='kvm'>
>   <domain type='qemu'>

How confusing. Wouldn't this be 'hyp_type' ?

> Unfortunaltey the virt-install CLI flag is --os-type - should really
> have been --os-distro-type. So I think I'd rather we changed the
> insternal variables for this to be os_distro_type and os_distro_variant

I can do this though. Anything but the current mess :)

> > -            if not self.extraargs is None:
> > -                self.install["extraargs"] = self.extraargs + " " + args
> > -            else:
> > -                self.install["extraargs"] = args
> > +            self.install["extraargs"] = args
> 
> This chunk looks a little questionable to me - IIRC this is reverting a fix
> we previously made, so perhaps this is just a merge error.

Hmm, no, this is intentional. Solaris needs to do all sorts of mangling
of extra args passed in. It's now the responsibility of the OSDistro to
handle .extraargs - see the change to _kernelHelper or whatever it's
called. We can't just do the pre-pending of extra args.

> > +
> > +        if not fetcher.location.startswith("/"):
> > +            args += "method=" + fetcher.location
> > +
> > +        if guest.extraargs:
> > +            args += guest.extraargs
> > +
> >          try:
> >              initrd = fetcher.acquireFile(initrdpath, progresscb)
> > -            if fetcher.location.startswith("/"):
> > -                # Local host path, so can't pass a location to guest
> > -                #for install method
> > -                return (kernel, initrd, "")
> > -            else:
> > -                return (kernel, initrd, "method=" + fetcher.location)
> > +            return kernel, initrd, args
> 
> Hmm, this existing code was dubious  even before this change. method= is
> the Fedora / RHEL anaconda syntax for specifying install location. It
> should never havebeen in Distro class in the first place - instead it
> belongs in the RedHatDistro subclass.

This seems like a change to be made separately.

> These new classes seeem to be more or less independant of the bit
> os_type/virt_type renaming (baring the obvious fact that it uses the
> new names). I've no problem add this bit right away.

If you like, I can split out the os_type renaming as a separate patch.

> >          if self.target:
> >              disknode = self.target
> > +        if self.device == VirtualDisk.DEVICE_CDROM and disknode.startswith('xvd'):
> > +            disknode = disknode + ':cdrom'
> > +
> 
> This seems wrong - you should not pass "xvda:cdrom" into the libvirt
> XML for a disk. There is an explicit attribute for specifying CDROM
> media

Ack.

regards
john




More information about the et-mgmt-tools mailing list