On Mon, Nov 25, 2019 at 05:06:31PM +0100, Michal Privoznik wrote:
On 11/24/19 10:33 PM, Julio Faracco wrote:
> Thanks for your explanation, Peter!
>
> I will focus on LXC side then...
>
You may still implement the API for other drivers too. The way we addressed
this problem in the past is to create new API and have the old one call the
new one. That's why we have "virSomething WithFlags()" APIs - because
simply
when introducing virSomething() API we did not think of adding flags. But if
you then look how virSomething is implemented at driver level (say qemu
driver) then you will see virSomething() is a very thin wrapper that calls
virSomethingWithFlags(..., 0);.
For instance virDomainCreate() and virDomainCreateWithFlags() and
qemuDomainCreate() and qemuDomainCreateWithFlags().
So you will need to add a new API and then have the old call the new one
with sensible @source. Since the sensible value can differ among drivers I
guess we can have VIR_DOMAIN_HOSTNAME_SRC_DEFAULT which would mean
"hypervisor driver default as in the most sensible source chosen
automatically by driver".
This API already has flags, so the alternative to adding a "source"
parameter is to reuse the flags parameter to express the desired
data source. This is what we do the virDomainReboot/Shutdown methods.
The separate source parameter is the approach for virDomainGetInterfaces.
While it is certainly nicer to have a separate source, I think reusing the
flags parameter is acceptable given the API design we have.
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|