Designate::Record observe reality implementation
Override parse_live_resource_data method for Designate::Record resource to observe and update resource plugin with live state. implements bp get-reality-for-resources Change-Id: I8d1e2ef389f618674521153e6b11e8c5978a61c7
This commit is contained in:
parent
27a1887bc8
commit
a450444e04
|
@ -167,6 +167,15 @@ class DesignateRecord(resource.Resource):
|
|||
id=self.resource_id)
|
||||
return dict(six.iteritems(self.client_plugin().record_show(**kwargs)))
|
||||
|
||||
def parse_live_resource_data(self, resource_properties, resource_data):
|
||||
record_reality = {}
|
||||
|
||||
properties_keys = list(set(self.PROPERTIES) - {self.NAME, self.DOMAIN})
|
||||
for key in properties_keys:
|
||||
record_reality.update({key: resource_data.get(key)})
|
||||
|
||||
return record_reality
|
||||
|
||||
|
||||
def resource_mapping():
|
||||
return {
|
||||
|
|
|
@ -11,10 +11,9 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
|
||||
from designateclient import exceptions as designate_exception
|
||||
from designateclient.v1 import records
|
||||
import mock
|
||||
|
||||
from heat.engine.resources.openstack.designate import record
|
||||
from heat.engine import stack
|
||||
|
@ -242,3 +241,52 @@ class DesignateRecordTest(common.HeatTestCase):
|
|||
self.assertEqual(args,
|
||||
self.test_resource._show_resource(),
|
||||
'Failed to show resource')
|
||||
|
||||
def test_resource_get_live_state(self):
|
||||
tmpl = {
|
||||
'heat_template_version': '2015-04-30',
|
||||
'resources': {
|
||||
'test_resource': {
|
||||
'type': 'OS::Designate::Record',
|
||||
'properties': {
|
||||
'name': 'test-record.com',
|
||||
'description': 'Test record',
|
||||
'ttl': 3600,
|
||||
'type': 'MX',
|
||||
'priority': 1,
|
||||
'data': '1.1.1.1',
|
||||
'domain': 'example.com.'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
s = stack.Stack(
|
||||
self.ctx, 'test_stack',
|
||||
template.Template(tmpl)
|
||||
)
|
||||
|
||||
test_resource = s['test_resource']
|
||||
test_resource.resource_id = '1234'
|
||||
test_resource.client_plugin().get_domain_id = mock.MagicMock()
|
||||
test_resource.client_plugin().get_domain_id.return_value = '1234567'
|
||||
|
||||
test_resource.client().records = mock.MagicMock()
|
||||
test_resource.client().records.get.return_value = {
|
||||
'type': 'MX',
|
||||
'data': '1.1.1.1',
|
||||
'ttl': 3600,
|
||||
'description': 'test',
|
||||
'domain_id': '1234567',
|
||||
'name': 'www.example.com.',
|
||||
'priority': 0
|
||||
}
|
||||
|
||||
reality = test_resource.get_live_state(test_resource.properties)
|
||||
expected = {
|
||||
'type': 'MX',
|
||||
'data': '1.1.1.1',
|
||||
'ttl': 3600,
|
||||
'description': 'test',
|
||||
'priority': 0
|
||||
}
|
||||
self.assertEqual(expected, reality)
|
||||
|
|
Loading…
Reference in New Issue