Restore resource metadata attribute
For backwards compatibility the Resource.metadata attribute has been restored, however reading or assigning this attribute will result in a deprecation warning. Reading metadata will force a refresh from the database, which maintains the previous behaviour rather than optimising for performance. Change-Id: Ifdcf3d98b99a09aac8755c84ef3f59d8602fc6a8 Closes-Bug: #1324704
This commit is contained in:
@@ -14,8 +14,8 @@
|
||||
import base64
|
||||
import copy
|
||||
from datetime import datetime
|
||||
|
||||
import six
|
||||
import warnings
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import identifier
|
||||
@@ -175,6 +175,22 @@ class Resource(object):
|
||||
return result
|
||||
return not result
|
||||
|
||||
@property
|
||||
def metadata(self):
|
||||
"""DEPRECATED. use method metadata_get instead."""
|
||||
warnings.warn('metadata attribute is deprecated, '
|
||||
'use method metadata_get instead',
|
||||
DeprecationWarning)
|
||||
return self.metadata_get(True)
|
||||
|
||||
@metadata.setter
|
||||
def metadata(self, metadata):
|
||||
"""DEPRECATED. use method metadata_set instead."""
|
||||
warnings.warn('metadata attribute is deprecated, '
|
||||
'use method metadata_set instead',
|
||||
DeprecationWarning)
|
||||
self.metadata_set(metadata)
|
||||
|
||||
def metadata_get(self, refresh=False):
|
||||
if refresh:
|
||||
self._rsrc_metadata = None
|
||||
|
||||
@@ -305,6 +305,7 @@ class ResourceTest(HeatTestCase):
|
||||
tmpl = {'Type': 'Foo'}
|
||||
res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
|
||||
self.assertEqual({}, res.metadata_get())
|
||||
self.assertEqual({}, res.metadata)
|
||||
|
||||
def test_equals_different_stacks(self):
|
||||
tmpl1 = {'Type': 'Foo'}
|
||||
@@ -761,6 +762,7 @@ class ResourceAdoptTest(HeatTestCase):
|
||||
adopt = scheduler.TaskRunner(res.adopt, res_data)
|
||||
adopt()
|
||||
self.assertEqual({}, res.metadata_get())
|
||||
self.assertEqual({}, res.metadata)
|
||||
self.assertEqual((res.ADOPT, res.COMPLETE), res.state)
|
||||
|
||||
def test_adopt_with_resource_data_and_metadata(self):
|
||||
@@ -790,6 +792,7 @@ class ResourceAdoptTest(HeatTestCase):
|
||||
self.assertEqual("test-value",
|
||||
db_api.resource_data_get(res, "test-key"))
|
||||
self.assertEqual({"os_distro": "test-distro"}, res.metadata_get())
|
||||
self.assertEqual({"os_distro": "test-distro"}, res.metadata)
|
||||
self.assertEqual((res.ADOPT, res.COMPLETE), res.state)
|
||||
|
||||
def test_adopt_resource_missing(self):
|
||||
@@ -1309,12 +1312,19 @@ class MetadataTest(HeatTestCase):
|
||||
|
||||
def test_read_initial(self):
|
||||
self.assertEqual({'Test': 'Initial metadata'}, self.res.metadata_get())
|
||||
self.assertEqual({'Test': 'Initial metadata'}, self.res.metadata)
|
||||
|
||||
def test_write(self):
|
||||
test_data = {'Test': 'Newly-written data'}
|
||||
self.res.metadata_set(test_data)
|
||||
self.assertEqual(test_data, self.res.metadata_get())
|
||||
|
||||
def test_assign_attribute(self):
|
||||
test_data = {'Test': 'Newly-written data'}
|
||||
self.res.metadata = test_data
|
||||
self.assertEqual(test_data, self.res.metadata_get())
|
||||
self.assertEqual(test_data, self.res.metadata)
|
||||
|
||||
|
||||
class ReducePhysicalResourceNameTest(HeatTestCase):
|
||||
scenarios = [
|
||||
|
||||
Reference in New Issue
Block a user