virt-manager unknown status normalization problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

I think I've found a major problem in virt-manager when handling xen
managed domains.

The symptom is, that once I stop a xen domain, I can-not start it again.

Steps to reproduce:
- Install clean Fedora 8 with latest patches
- create HVM guest with virt-inst
- shut it down
- virt-manager still shows it as running
- try to start it in virt-manager -> Run is greyed out in the popup

I've tried the same with libvirt-4.1, and the results are the same.

I've done some debugging:

# xm list
Name                                        ID   Mem VCPUs      State
Time(s)
Domain-0                                     0  3487     4     r-----
2565.6
windows-xen                                  3   512     0
------     44.9

# virsh list --all
<warnings cut>
  Id Name                 State
----------------------------------
   0 Domain-0             running
   - windows-xen          no state

It seems that for stopped HVM domains (may be the same for PV, I have
not checked) xend sets no flags, which libvirt translates as
VIR_DOMAIN_NOSTATE.

The code below is from domain.py:

     def _normalize_status(self, status):
         if status == libvirt.VIR_DOMAIN_NOSTATE:
             return libvirt.VIR_DOMAIN_RUNNING
         elif status == libvirt.VIR_DOMAIN_BLOCKED:
             return libvirt.VIR_DOMAIN_RUNNING
         return status

     def _update_status(self, status=None):
         if status == None:
             info = self.vm.info()
             status = info[0]
         status = self._normalize_status(status)

         if status != self.lastStatus:
             self.lastStatus = status
             self.emit("status-changed", status)


and it shows that virt-manager decided not expose the NOSTATE status to
the UI, and instead translates it to running.
This has the effect of showing false information (Running) in the domain
list window, as well as making it impossible to start the domain, as the
popup_vm_menu
function offers the actions based on the normalized status.

The net result of this problem, is that virt-manager is not really able
to show or change the status of xen managed domains.

I can see three solutions:

- The problem could be solved in libvirt by mapping the no flags set
'------' state to say,  VIR_DOMAIN_SHUTOFF.
It would change the etablished semantics, plus would  require a libvirt
upgrade to fix, so this does not seem ideal.

- Change the  _normalize_status function to map  VIR_DOMAIN_NOSTATE to
VIR_DOMAIN_SHUTOFF

- Expose the NO_STATE state through the GUI, and treat it like SHUTOFF.


I've attached a one-liner patch that implements the second solutin, and
fixes the problem for me.

regards

István Tóth


diff -ruN virt-manager--devel/src/virtManager/domain.py virt-manager--devel-nostate/src/virtManager/domain.py
--- virt-manager--devel/src/virtManager/domain.py	2008-03-08 11:29:33.000000000 +0100
+++ virt-manager--devel-nostate/src/virtManager/domain.py	2008-03-08 11:34:25.000000000 +0100
@@ -137,7 +137,7 @@
 
     def _normalize_status(self, status):
         if status == libvirt.VIR_DOMAIN_NOSTATE:
-            return libvirt.VIR_DOMAIN_RUNNING
+            return libvirt.VIR_DOMAIN_SHUTOFF
         elif status == libvirt.VIR_DOMAIN_BLOCKED:
             return libvirt.VIR_DOMAIN_RUNNING
         return status


_______________________________________________
et-mgmt-tools mailing list
et-mgmt-tools@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/et-mgmt-tools

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux