--- virtManager/domain.py | 17 +++++++++++++++++ virtManager/manager.py | 13 +++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/virtManager/domain.py b/virtManager/domain.py index 6d3dac2d..83828348 100644 --- a/virtManager/domain.py +++ b/virtManager/domain.py @@ -20,6 +20,7 @@ import logging import os +import re import time import threading @@ -50,6 +51,8 @@ vm_status_icons = { libvirt.VIR_DOMAIN_PMSUSPENDED: "state_paused", } +IP_REGEX = re.compile('[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*') + class _SENTINEL(object): pass @@ -1163,6 +1166,20 @@ class vmmDomain(vmmLibvirtObject): # Libvirt API wrappers # ######################## + def get_first_ip_addr(self): + try: + ifaces = self._backend.interfaceAddresses(source=1) + for iface in ifaces: + if iface != 'lo' and IP_REGEX.match(ifaces[iface]['addrs'][0]['addr']): + return ifaces[iface]['addrs'][0]['addr'] + else: + return "IP not found" + except libvirt.libvirtError as err: + if 'QEMU guest agent is not connected' in str(err): + return "qemu-guest-agent not running" + else: + return str(err) + def _conn_tick_poll_param(self): return "pollvm" def class_name(self): diff --git a/virtManager/manager.py b/virtManager/manager.py index d38fc4e4..c5b3ed4f 100644 --- a/virtManager/manager.py +++ b/virtManager/manager.py @@ -640,10 +640,13 @@ class vmmManager(vmmGObjectUI): color = "#5b5b5b" return color - def _build_vm_markup(self, name, status): + def _build_vm_markup(self, name, status, ipaddr): domtext = ("<span size='smaller' weight='bold'>%s</span>" % util.xml_escape(name)) - statetext = "<span size='smaller'>%s</span>" % status + if status == 'Running': + statetext = "<span size='smaller'>%s (%s)</span>" % (status, ipaddr) + else: + statetext = "<span size='smaller'>%s</span>" % status return domtext + "\n" + statetext def _build_row(self, conn, vm): @@ -659,7 +662,8 @@ class vmmManager(vmmGObjectUI): else: name = vm.get_name_or_title() status = vm.run_status() - markup = self._build_vm_markup(name, status) + ipaddr = vm.get_first_ip_addr() + markup = self._build_vm_markup(name, status, ipaddr) status_icon = vm.run_status_icon_name() hint = vm.get_description() color = None @@ -741,11 +745,12 @@ class vmmManager(vmmGObjectUI): name = vm.get_name_or_title() status = vm.run_status() + ipaddr = vm.get_first_ip_addr() row[ROW_SORT_KEY] = name row[ROW_STATUS_ICON] = vm.run_status_icon_name() row[ROW_IS_VM_RUNNING] = vm.is_active() - row[ROW_MARKUP] = self._build_vm_markup(name, status) + row[ROW_MARKUP] = self._build_vm_markup(name, status, ipaddr) desc = vm.get_description() row[ROW_HINT] = util.xml_escape(desc) -- 2.14.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list