Daniel P. Berrange wrote:
Why have the <domain-type> at the top level at all then - its easier to have it all at the same place, rather than having to write two separate XPATH expressions to determine if a particular domain type is supportedon a particular arch ?
OK, point taken, I'll make this change.
It's the implications which I'm trying to get rid of though! It's non-trivial for virt-manager to parse a remote URL to work out that it's really qemu at the other end. It really is - you can't just look at the first 4 characters ...I'm not sure it is neccessary to list 'emulated' and 'accelerated' as attributes of the architecture as they're really implied by the domain type. eg QEMU is always emulated regardless of arch, and 'kvm' and 'kqemu' are both always accelerated - with an arch restriction.This is what 'virConnectGetType()' is for though - no need to parse the URIs - this should return 'Xen' or 'QEMU' as appropriate for the driver. There are a few places in virt-manager where I do parse the URIs, but those are either a) bugs, or b) just to pretty-print the URI in the titlebar, not to determine functionality.
But you're still relying on implications. For example currently virt-manager has code like this:
if self.connection.get_type() == "QEMU": [do something] else: [do something else] if virtinst.util.is_hvm_capable(): [do another thing] else: [etc]It's not scalable to keep on adding cases throughout the code for all the possible types of backends, even assuming that the full list of libvirt drivers can be known.
The guy working on OpenVX support shouldn't need to change virt-manager and all other libvirt clients. At least not in an ideal world.
Is this something the driver knows though? AFAIK can't Xen run all sorts of different operating systems, including homebrew stuff written specifically to its paravirt interface?<host_features> <hvm> Does the host CPU support HVM? <type> Type of HVM (eg. "vmx") <bios_setting> "enabled" or "disabled"For host features I think I'd talk in terms of OS types it supports. For Xen can we do OS types of 'linux' or 'hvm', for QEMU we can do 'hvm'.I guess what we're really trying to represent is the type of virtualizationparavirt, or fullyvirt. It gets a bit fuzzy because fully-virt can then be emulated, or hardware assisted (hvm) or kernel accelerated (kqemu).
This is certainly a tricky area. I guess it comes down to what we want virt-manager to present to the users.
If users just want to know "can I run Windows in a guest" (ie. does it do full-virt), and they don't care _how_ it does full-virt, then having just a <fullvirt/> flag might be sufficient.
On the other hand (and this is kind of what virt-manager does at the moment), users can be given a choice, either to run accelerated or not (the "kqemu" option in current virt-manager, although it's not called that) or even to choose the method, where that is possible. I don't know if VMWare allows you to choose emulated vs. HVM (last time I looked it seemed to choose whichever it thought would be the fastest given your mix of hardware and architecture), but it's surely something that it might do.
This is complicated ... I don't really have a good answer .....
In the <guest_features> the XML has <hvm> <emulated> <accelerated> as a flat list of, but no tag to indicate Xen paravirt support unless that's just one you merely missed from the exmaple XML snippets ?I think I'd be inclined to have <host_features> to be about CPU flags, while <guest_features> would refer to the HV capabilities. So this could simply be <host_features> <cpu_flag>smx</cpu_flag> <cpu_flag>vmx</cpu_flag> </host_features>
Something along these lines would work.Note another thing which you might not have picked up at first: <guest_architectures> returns a list of all possible combinations of supported guests (because that's what Xen provides us with in the capabilities file). This is, of course, a Cartesian product so it might get very long, although at the moment it doesn't. On the other hand I don't see a good way to avoid this because some combinations might not be available (eg. PAE cannot be independently controlled in QEMU -- I haven't determined if QEMU guests support PAE or not, but there is no way that I can see to toggle it).
I'll have a further think about this anyway. Rich. -- Emerging Technologies, Red Hat http://et.redhat.com/~rjones/ 64 Baker Street, London, W1U 7DF Mobile: +44 7866 314 421 "[Negative numbers] darken the very whole doctrines of the equations and make dark of the things which are in their nature excessively obvious and simple" (Francis Maseres FRS, mathematician, 1759)
Description: S/MIME Cryptographic Signature