[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.4-testing] xend: Unlink VDI instances and VBD instances
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1254410080 -3600 # Node ID 502a69369482754ccb65bc130c3f5e0d32dffde9 # Parent efcb14260292a686740cee8239aae0a503097eb8 xend: Unlink VDI instances and VBD instances VBD information in xend does not have a VDI value if XenAPI mode is invalid. A new patch confirms the VDI value is valid. So, the new patch cuts off VDI->VBD links if the VDI value is valid. Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx> xen-unstable changeset: 20251:dc72e4fbab27 xen-unstable date: Fri Sep 25 10:46:13 2009 +0100 --- tools/python/xen/xend/XendDomain.py | 2 ++ tools/python/xen/xend/XendDomainInfo.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff -r efcb14260292 -r 502a69369482 tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Thu Oct 01 16:14:10 2009 +0100 +++ b/tools/python/xen/xend/XendDomain.py Thu Oct 01 16:14:40 2009 +0100 @@ -346,6 +346,7 @@ class XendDomain: if self.is_domain_managed(dom): self._managed_config_remove(dom.get_uuid()) del self.managed_domains[dom.get_uuid()] + dom.unlink_xapi_instances() dom.destroy_xapi_instances() except ValueError: log.warn("Domain is not registered: %s" % dom.get_uuid()) @@ -484,6 +485,7 @@ class XendDomain: if domid in self.domains: del self.domains[domid] + info.unlink_xapi_instances() info.destroy_xapi_instances() else: log.warning("Attempted to remove non-existent domain.") diff -r efcb14260292 -r 502a69369482 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Thu Oct 01 16:14:10 2009 +0100 +++ b/tools/python/xen/xend/XendDomainInfo.py Thu Oct 01 16:14:40 2009 +0100 @@ -3915,6 +3915,20 @@ class XendDomainInfo: except Exception, exn: raise XendError('Failed to destroy device') + def unlink_xapi_instances(self): + from xen.xend import XendDomain + if XendDomain.instance().is_valid_vm(self.info.get('uuid')): + # domain still exists. + return + + for vbd_ref in self.info.get('vbd_refs'): + dev_info = self.info['devices'].get(vbd_ref)[1] + vdi_uuid = dev_info.get('VDI', None) + if vdi_uuid and XendNode.instance().is_valid_vdi(vdi_uuid): + vdi = XendNode.instance().get_vdi_by_uuid(vdi_uuid) + if vdi.getVBDs().count(vbd_ref): + vdi.removeVBD(vbd_ref) + def destroy_xapi_instances(self): """Destroy Xen-API instances stored in XendAPIStore. """ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |