From 281e7965384cef56c4fab28f2549ca88c6419df8 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Fri, 7 Jun 2019 15:53:36 -0400 Subject: [PATCH] connection: Use weakref.proxy instead of weakref.ref Works more like expected, let's us drop a hack in devicedisk --- virtinst/connection.py | 8 ++++---- virtinst/devices/disk.py | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/virtinst/connection.py b/virtinst/connection.py index 14a68b284..9b2c85814 100644 --- a/virtinst/connection.py +++ b/virtinst/connection.py @@ -162,7 +162,7 @@ class VirtinstConnection(object): def _fetch_all_domains_raw(self): ignore, ignore, ret = pollhelpers.fetch_vms( self, {}, lambda obj, ignore: obj) - return [Guest(weakref.ref(self), parsexml=obj.XMLDesc(0)) + return [Guest(weakref.proxy(self), parsexml=obj.XMLDesc(0)) for obj in ret] def fetch_all_domains(self): @@ -178,7 +178,7 @@ class VirtinstConnection(object): return self._fetch_cache[key][:] def _build_pool_raw(self, poolobj): - return StoragePool(weakref.ref(self), + return StoragePool(weakref.proxy(self), parsexml=poolobj.XMLDesc(0)) def _fetch_all_pools_raw(self): @@ -210,7 +210,7 @@ class VirtinstConnection(object): for vol in vols: try: xml = vol.XMLDesc(0) - ret.append(StorageVolume(weakref.ref(self), parsexml=xml)) + ret.append(StorageVolume(weakref.proxy(self), parsexml=xml)) except Exception as e: logging.debug("Fetching volume XML failed: %s", e) return ret @@ -261,7 +261,7 @@ class VirtinstConnection(object): def _fetch_all_nodedevs_raw(self): ignore, ignore, ret = pollhelpers.fetch_nodedevs( self, {}, lambda obj, ignore: obj) - return [NodeDevice(weakref.ref(self), obj.XMLDesc(0)) + return [NodeDevice(weakref.proxy(self), obj.XMLDesc(0)) for obj in ret] def fetch_all_nodedevs(self): diff --git a/virtinst/devices/disk.py b/virtinst/devices/disk.py index dec1bf7b2..93feb6887 100644 --- a/virtinst/devices/disk.py +++ b/virtinst/devices/disk.py @@ -707,12 +707,9 @@ class DeviceDisk(Device): path = self._build_url_from_network_source() if typ == DeviceDisk.TYPE_VOLUME: - conn = self.conn - if "weakref" in str(type(conn)): - conn = conn() - try: - parent_pool = conn.storagePoolLookupByName(self.source_pool) + parent_pool = self.conn.storagePoolLookupByName( + self.source_pool) vol_object = parent_pool.storageVolLookupByName( self.source_volume) except Exception as e: