[virt-tools-list] [virt-manager PATCH 3/3] Try to get ip of vm's nic only when the vm is active

Lin Ma lma at suse.com
Fri Sep 7 00:27:56 UTC 2018



On 09/07/2018 02:00 AM, Cole Robinson wrote:
> On 09/06/2018 03:46 AM, Lin Ma wrote:
>> Signed-off-by: Lin Ma <lma at suse.com>
>> ---
>>   virtManager/details.py | 15 +++++++++------
>>   virtManager/domain.py  |  4 ++++
>>   2 files changed, 13 insertions(+), 6 deletions(-)
>>
>> diff --git a/virtManager/details.py b/virtManager/details.py
>> index 0d02805f..64bed185 100644
>> --- a/virtManager/details.py
>> +++ b/virtManager/details.py
>> @@ -2755,12 +2755,15 @@ class vmmDetails(vmmGObjectUI):
>>           state = net.link_state == "up" or net.link_state is None
>> self.widget("network-link-state-checkbox").set_active(state)
>>   -        ipv4, ipv6 = self.vm.get_interface_addresses(net)
>> -        label = ipv4 or ""
>> -        if ipv6:
>> -            if label:
>> -                label += "\n"
>> -            label += ipv6
>> +        if self.vm.is_active():
>> +            ipv4, ipv6 = self.vm.get_interface_addresses(net)
>> +            label = ipv4 or ""
>> +            if ipv6:
>> +                if label:
>> +                    label += "\n"
>> +                label += ipv6
>> +        else:
>> +            label = ""
>>           self.widget("network-ip").set_text(label or _("Unknown"))
>>             self.netlist.set_dev(net)
>> diff --git a/virtManager/domain.py b/virtManager/domain.py
>> index b628b5cd..9da43c03 100644
>> --- a/virtManager/domain.py
>> +++ b/virtManager/domain.py
>> @@ -1150,6 +1150,8 @@ class vmmDomain(vmmLibvirtObject):
>>           self._backend.snapshotCreateXML(xml, flags)
>>         def refresh_interface_addresses(self, iface):
>> +        if not self.is_active():
>> +            return
>>           def agent_ready():
>>               for dev in self.xmlobj.devices.channel:
>>                   if (dev.type == "unix" and
>> @@ -1183,6 +1185,8 @@ class vmmDomain(vmmLibvirtObject):
>>           return {}
>>         def get_interface_addresses(self, iface):
>> +        if not self.is_active():
>> +            return
>>           if self._ip_cache is None:
>>               self.refresh_interface_addresses(iface)
>>
>
> I pushed the first two patches, thanks!
>
> This patch sprinkles is_active() in too many places. If we wanted to 
> properly 'fix' this I think we have to blank the _ip_cache when the VM 
> is shut down, and only attempt to refresh if the guest is active, or 
> maybe hide the refresh button altogether when the VM is offline
>
> That said I left it this way deliberately. Partly out of laziness of 
> not wanting to deal with invalidating the cache :) But partly because 
> I wasn't sure how much IP addresses change across VM runs, like if we 
> reboot the VM should we essentially insist the user click 'refresh' 
> again to get the IP?
>
> And even if the VM is offline it seems semi-useful to keep the last 
> used IP address visible rather than immediately blanking it out.

Yeah, I agreed, That makes sense. and keeping the last used IP visible 
is useful.

>
> I dunno I'm not really sold either way, I was just kinda thinking to 
> leave it as is and see if anyone complains :)

OK.


Thanks for your help and review,
Lin




More information about the virt-tools-list mailing list