On Mon, Aug 19, 2013 at 2:47 PM, Eric Blake <ebl...@redhat.com> wrote:

> On 08/19/2013 01:22 PM, Doug Goldstein wrote:
> > On Mon, Aug 19, 2013 at 1:19 PM, Giuseppe Scrivano <gscri...@redhat.com
> >wrote:
> >
> >> ---
> >> I have started working on:
> >>
> >>   https://bugzilla.redhat.com/show_bug.cgi?id=916786
> >>
> >> Before I split it in a series of commits, test it better and then
> >> proceed to virt-manager, are you ok with this idea?
> >>
>
> >
> > I'm wondering if this could some how be done as an extension to the
> > virConnectBaselineCPU APIs? It would probably have to be another API
> > entirely but at least similar in naming scope.
>
> Not just that, but we JUST took a patch that enhanced the
> virConnectBaselineCPU API to take a flag argument:
> https://www.redhat.com/archives/libvir-list/2013-August/msg00150.html
>
> Looking at it further, it looks like the REAL problem to be solved is
> "given an emulator, which CPU models can I pass by name, and what CPU
> features will those models imply".  It is completely independent of how
> the implementation stores it (that is, the fact that our qemu driver
> stores a cpu_map.xml lookup table should NOT be used in determining the
> function name).
>
>
> >
> > Or potentially generic-ify this a bit more to make it like a
> > virConnectHypervisorCapabilities() where right now it just returns back
> the
> > CPUs the HV can emulate. In the future it can have support for other
> things
> > if we need it to.
>
> Listing all the capabilities of all the emulators in the existing
> virConnectHypervisorCapabilities may be too much XML for one RPC call;
> so a new API that lets us focus on one particular emulator is
> worthwhile.  But yes, this is a better scheme to be copying from - we
> want a command where the user specifies an emulator, and the output is
> XML describing that emulator's capabilities according to what libvirt
> can expose.
>

Right. I more meant adding a new API and not overloading the exist
virConnectCapabilities() but a virConnectHypervisorCapabilities() that
would allow us to query specific instances. I always wanted a way to see if
a qemu had qxl support (and by extension spice). I'm just roughing this
here:

char *virConnectHypervisorCapabilities(virConnectPtr conn, const char *hv,
int flags /* future */); where the 2nd arg would take the value from
<emulator> from virConnectCapabilities().
or
char *virConnectHypervisorCapabilities(virConnectPtr conn,
virHypervisorsUghName hv, int flags /* future */); where the prior type is
an enum that has VIR_HYPERVISOR_QEMU_ARM, VIR_HYPERVISOR_QEMU_X86. I don't
really like the enum simply because there's so many kvm and qemu binaries
you can have on the system it'd really be hard to match an enum to a
specific one.

We could inject another arg in between the 2nd and 3rd and that be the enum
for data we're looking for. Like VIR_HYPERVISOR_CPU, VIR_HYPERVISOR_VIDEO,
VIR_HYPERVISOR_SYSTEM (would return back 440fx and q35 for x86 based qemu's
and something like vexpress-a9 for ARM).

In a way I see this complimenting virConnectCapabilities() with
virConnectHypervisorCapabilties() with some of the current items in the
former appearing in the later (specifically from the <guest> section). The
former would primarily have to roll of describing the system as a whole
while the later would have the job of describing the specific emulator
you're using.

-- 
Doug Goldstein
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to