From 118294ac1443507ad8ac9a18d99102f02850c2b4 Mon Sep 17 00:00:00 2001 From: Erik Olof Gunnar Andersson Date: Sun, 30 Apr 2023 17:29:38 -0700 Subject: Fix invalid fallback value for BaseAddressHandler Domain no longer exists and this patch replaces domain with the correct value zone. Change-Id: I4cd88d30882d8966acc811ccb100aa1a1df89a3e --- designate/notification_handler/base.py | 6 +- .../tests/test_notification_handler/test_base.py | 88 +++++++++++++++++++++- 2 files changed, 89 insertions(+), 5 deletions(-) diff --git a/designate/notification_handler/base.py b/designate/notification_handler/base.py index 8a270eb3..159eb786 100644 --- a/designate/notification_handler/base.py +++ b/designate/notification_handler/base.py @@ -144,8 +144,8 @@ class NotificationHandler(ExtensionPlugin): class BaseAddressHandler(NotificationHandler): - default_formatv4 = ('%(hostname)s.%(domain)s',) - default_formatv6 = ('%(hostname)s.%(domain)s',) + default_formatv4 = ('%(hostname)s.%(zone)s',) + default_formatv6 = ('%(hostname)s.%(zone)s',) def _get_ip_data(self, addr_dict): ip = addr_dict['address'] @@ -193,7 +193,7 @@ class BaseAddressHandler(NotificationHandler): """ LOG.debug('Using Zone ID: %s', zone_id) zone = self.get_zone(zone_id) - LOG.debug('Domain: %r', zone) + LOG.debug('Zone: %r', zone) data = extra.copy() LOG.debug('Event data: %s', data) diff --git a/designate/tests/test_notification_handler/test_base.py b/designate/tests/test_notification_handler/test_base.py index f1a10dab..c35d4304 100644 --- a/designate/tests/test_notification_handler/test_base.py +++ b/designate/tests/test_notification_handler/test_base.py @@ -13,6 +13,8 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. +from unittest import expectedFailure + from designate.notification_handler import base from designate.tests import TestCase @@ -24,6 +26,8 @@ class InheritFormBaseAddressHandler(base.BaseAddressHandler): we need to create something to inherit from it so we have something instantiatable. """ + __plugin_name__ = 'nova_fixed' + def get_event_types(self): pass @@ -35,11 +39,91 @@ class InheritFormBaseAddressHandler(base.BaseAddressHandler): class BaseAddressHandlerTest(TestCase): + def setUp(self): + super(BaseAddressHandlerTest, self).setUp() + + self.zone = self.create_zone() + self.zone_id = self.zone['id'] + self.base = InheritFormBaseAddressHandler() + def test_get_ip_data_support_v6(self): addr_dict = {'address': '1762::B03:1:AF18', 'version': 6} - baseaddresshandler = InheritFormBaseAddressHandler() - observe = baseaddresshandler._get_ip_data(addr_dict) + observe = self.base._get_ip_data(addr_dict) expect = {'octet1': 'B03', 'octet0': '1762', 'octet3': 'AF18', 'octet2': '1', 'ip_version': 6, 'ip_address': '1762--B03-1-AF18'} self.assertEqual(observe, expect) + + def test_create_record(self): + self.base._create([ + {'address': '172.16.0.15', 'version': 4}], + {'hostname': 'test01'}, + self.zone_id, + resource_id='1fb1feba-2ea4-4925-ba2c-9a3706348a70', + resource_type='instance' + ) + + criterion = { + 'zone_id': self.zone_id, + 'type': 'A', + } + + recordsets = self.central_service.find_recordsets( + self.admin_context, criterion) + + self.assertEqual('test01.example.com.', recordsets[0].name) + self.assertEqual('A', recordsets[0].type) + + def test_delete_record(self): + self.base._create([ + {'address': '172.16.0.15', 'version': 4}], + {'hostname': 'test01'}, + self.zone_id, + resource_id='6d6deb76-e4e7-492e-8f9d-4d906653c511', + resource_type='instance' + ) + + criterion = { + 'zone_id': self.zone_id, + 'type': 'A', + } + + recordsets = self.central_service.find_recordsets( + self.admin_context, criterion) + + self.assertEqual('test01.example.com.', recordsets[0].name) + self.assertEqual('A', recordsets[0].type) + + self.base._delete(self.zone_id, '6d6deb76-e4e7-492e-8f9d-4d906653c511') + + recordsets = self.central_service.find_recordsets( + self.admin_context, criterion) + self.assertEqual(0, len(recordsets)) + + @expectedFailure + def test_delete_record_with_no_zone_id(self): + self.base._create([ + {'address': '172.16.0.15', 'version': 4}], + {'hostname': 'test01'}, + self.zone_id, + resource_id='6d6deb76-e4e7-492e-8f9d-4d906653c511', + resource_type='instance' + ) + + criterion = { + 'zone_id': self.zone_id, + 'type': 'A', + } + + recordsets = self.central_service.find_recordsets( + self.admin_context, criterion) + + self.assertEqual('test01.example.com.', recordsets[0].name) + self.assertEqual('A', recordsets[0].type) + + # NOTE(eandersson): _delete should succeed even without a zone_id. + self.base._delete(None, '6d6deb76-e4e7-492e-8f9d-4d906653c511') + + recordsets = self.central_service.find_recordsets( + self.admin_context, criterion) + self.assertEqual(0, len(recordsets)) -- cgit v1.2.1