[libvirt] [PATCH] Allow address lease query with inactive domain

Laine Stump laine at laine.org
Thu Sep 8 00:46:49 UTC 2016


On 09/07/2016 05:57 AM, Amador Pahim wrote:
> On Wed, Sep 7, 2016 at 11:41 AM, Daniel P. Berrange <berrange at redhat.com> wrote:
>> On Wed, Sep 07, 2016 at 11:18:58AM +0200, Amador Pahim wrote:
>>> The <drive>DomainInterfaceAddresses, when using the source type
>>> LEASE, does not need the domain to be running. It only checks the
>>> dhcp lease file and gets the address information from a valid lease,
>>> if any.
>>>
>>> This patch removes the virDomainObjIsActive(vm) check from the LEASE
>>> query type on both qemu and lxc drivers, keeping it only for query
>>> type AGENT on qemu driver (since lxc does not support AGENT type).
>> I don't think we should do this. IMHO it only makes sense to ask for
>> the IP address when the guest is actually running. The fact that we
>> might still happen to have an old IP address stored in the lease
>> file is merely a happy accident and not something we should guarantee
>> by exposing ability to get it in the API.
> The fact that the guest is running does not mean the lease information is
> accurate. Guest IP can be manually changed. IP can be allocated by
> someone else between the true virDomainObjIsActive(vm) and the actual
> DHCPACK. We don't guarantee the information in any case, unless you
> change the query type to AGENT. One can parse the lease file by itself
> (and check if the lease is not expired), it's cheaper than create(), query
> the lease addresses, destroy(). This patch tries to avoid both.

(A short explanation of your use case might help us to understand why 
you would want to learn the former IP address of a non-running guest.)

When the guest is running, of course the information in the lease file 
might be incorrect, but that would most likely be caused by a malicious 
or malfunctioning guest. In general though, the lease information 
probably is correct, and the IP address you get back could be used to 
contact the guest (from the host, at least, and assuming necessary ports 
were open in guest and host firewalls, and that the guest was listening 
on the appropriate port).

If the guest *isn't* running though, then by definition the lease 
information is incorrect - you definitely aren't going to be able to 
reach the guest via that address, so it's a bit misleading for libvirt 
to suggest it.




More information about the libvir-list mailing list