summaryrefslogtreecommitdiff
path: root/heat/objects/base.py
diff options
context:
space:
mode:
authorSteve Baker <sbaker@redhat.com>2016-05-16 12:59:59 +1200
committerSteve Baker <sbaker@redhat.com>2016-05-25 12:56:47 +1200
commitc62e1b325a536294b3285f8cbcad7d66a415ee23 (patch)
tree46659636b9d68f1679cc55f6a46cb0ce666ff51e /heat/objects/base.py
parent0ef5d601c02da766d3d00712bd70b4912c66bcad (diff)
downloadheat-c62e1b325a536294b3285f8cbcad7d66a415ee23.tar.gz
Use a weakref for the data object context
There are no known circular reference issues caused by storing the context in data objects, but the following changes will refer to data objects in the context, so this change prevents any later issues. Change-Id: I3680e5678003cf339a98fbb7a2b1b387fb2243c0 Related-Bug: #1578854
Diffstat (limited to 'heat/objects/base.py')
-rw-r--r--heat/objects/base.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/heat/objects/base.py b/heat/objects/base.py
index 6ff8deda5..816deb6e0 100644
--- a/heat/objects/base.py
+++ b/heat/objects/base.py
@@ -14,9 +14,26 @@
"""Heat common internal object model"""
+import weakref
+
from oslo_versionedobjects import base as ovoo_base
class HeatObject(ovoo_base.VersionedObject):
OBJ_PROJECT_NAMESPACE = 'heat'
VERSION = '1.0'
+
+ @property
+ def _context(self):
+ if self._contextref is None:
+ return
+ ctxt = self._contextref()
+ assert ctxt is not None, "Need a reference to the context"
+ return ctxt
+
+ @_context.setter
+ def _context(self, context):
+ if context:
+ self._contextref = weakref.ref(context)
+ else:
+ self._contextref = None