Daniel P. Berrange wrote:
On Mon, Jul 16, 2007 at 08:20:54AM -0700, Dan Smith wrote:
> DB> I don't. The API should be hypervisor agnostic. Needing to pass
> DB> HV specific attributes to make it works shows we have failed.
>
> In that case, haven't we already failed with virDomainCreate() since
> it takes hypervisor-specific XML? Doesn't the presence of
> VIR_DEVICE_RW_FORCE imply knowledge of Xen-specific behavior?
The XML is *not* hypervisor specific. There is a subtle difference is between
hypervisor specific concepts, and generic concepts which may only only be
relevant to a sub-set of hypervisors.
> How would you handle someone wanting to use tcp:// or ssh:// with
> qemu?
If we need to express some choice of data channel, TCP, vs SSH, vs SSL/TLS
then figure out a way to expose that in the API with an hypervisor agnostic
way. Exposing raw QEMU migration URIs is *not* hypervisor agnostic.
Why? If nothing but QEMU support ssh:// then exposing an API to do SSH
migration isn't really hypervisor agnostic. It's an API for QEMU.
If you don't expose raw URIs, then you can never support pluggable
migration transports which I will implement in the not to distant future.
I think there's a balance between being hypervisor agnostic and only
supporting the least common denominator. Whenever there's a possibility
to be common, I think libvirt should strive to provide a common
interface but I still think it's important to unique features of the
particular virtualization solution.
Regards,
Anthony Liguori
Exposing
a flag VIR_CHANNEL_CLEAR, VIR_CHANNEL_SSH, VIR_CHANNEL_TLS is
agnostic
because it allows the same syntax to be used regardless of driver. Now some
drivers may only support a subset of channel types, but that's OK.
Dan.