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