Remove deprecated cfg in notification and add format-v6 test

- Remove 'format' cfg in nova and neutron notification
- Modify related tests with 'format' cfg
- Add formatv6 test-case for nova
- Add releasenotes for these change.

Change-Id: I5bcc7c59f23d8d66252ca6809fc78803c0bbdab7
This commit is contained in:
Nguyen Van Trung 2017-07-01 23:44:52 +07:00
parent bc24df1ee2
commit 5bab49582c
5 changed files with 74 additions and 19 deletions

View File

@ -117,14 +117,12 @@ class BaseAddressHandler(NotificationHandler):
def _get_formatv4(self): def _get_formatv4(self):
return ( return (
cfg.CONF[self.name].get('formatv4') or cfg.CONF[self.name].get('formatv4') or
cfg.CONF[self.name].get('format') or
self.default_formatv4 self.default_formatv4
) )
def _get_formatv6(self): def _get_formatv6(self):
return ( return (
cfg.CONF[self.name].get('formatv6') or cfg.CONF[self.name].get('formatv6') or
cfg.CONF[self.name].get('format') or
self.default_formatv6 self.default_formatv6
) )

View File

@ -135,5 +135,46 @@
"architecture": null, "architecture": null,
"os_type": null "os_type": null
}, },
"payload_v6": {
"state_description": "",
"availability_zone": null,
"ramdisk_id": "",
"instance_type_id": 2,
"deleted_at": "",
"fixed_ips": [{
"floating_ips": [],
"label": "private",
"version": 6,
"meta": {},
"address": "172.16.0.14",
"type": "fixed"
}],
"memory_mb": 512,
"user_id": "953f8394fa044302b7d42f47228e427d",
"reservation_id": "r-1ekblkfw",
"state": "active",
"launched_at": "2012-11-03 17:54:48.514631",
"metadata": [],
"ephemeral_gb": 0,
"access_ip_v6": null,
"disk_gb": 0,
"access_ip_v4": null,
"kernel_id": "",
"image_name": "ubuntu-precise",
"host": "stack01",
"display_name": "TestInstance",
"image_ref_url": "http://192.0.2.98:9292/images/e52f1321-fb9e-40fb-8057-555a850462e8",
"root_gb": 0,
"tenant_id": "33a88272e06a49c1a0f653abc374b56b",
"created_at": "2012-11-03 17:54:27",
"instance_id": "3e301a55-fbbe-478d-92d0-eefabf135c38",
"instance_type": "m1.tiny",
"vcpus": 1,
"image_meta": {
"base_image_ref": "e52f1321-fb9e-40fb-8057-555a850462e8"
},
"architecture": null,
"os_type": null
},
"priority": "INFO" "priority": "INFO"
} }

View File

@ -32,7 +32,7 @@ class NeutronFloatingHandlerTest(TestCase, NotificationHandlerMixin):
self.config(zone_id=zone['id'], group='handler:neutron_floatingip') self.config(zone_id=zone['id'], group='handler:neutron_floatingip')
formats = ['%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s', formats = ['%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s',
'%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.X.%(zone)s'] '%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.X.%(zone)s']
self.config(format=formats, group='handler:neutron_floatingip') self.config(formatv4=formats, group='handler:neutron_floatingip')
self.plugin = NeutronFloatingHandler() self.plugin = NeutronFloatingHandler()

View File

@ -32,7 +32,9 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
zone = self.create_zone() zone = self.create_zone()
self.zone_id = zone['id'] self.zone_id = zone['id']
self.config(zone_id=zone['id'], group='handler:nova_fixed') self.config(zone_id=zone['id'], group='handler:nova_fixed')
self.config(format=['%(host)s.%(zone)s', self.config(formatv4=['%(host)s.%(zone)s',
'%(host)s.foo.%(zone)s'],
formatv6=['%(host)s.%(zone)s',
'%(host)s.foo.%(zone)s'], '%(host)s.foo.%(zone)s'],
group='handler:nova_fixed') group='handler:nova_fixed')
@ -62,7 +64,8 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
self.assertEqual(4, len(records)) self.assertEqual(4, len(records))
def test_instance_create_end_utf8(self): def test_instance_create_end_utf8(self):
self.config(format=['%(display_name)s.%(zone)s'], self.config(formatv4=['%(display_name)s.%(zone)s'],
formatv6=['%(display_name)s.%(zone)s'],
group='handler:nova_fixed') group='handler:nova_fixed')
event_type = 'compute.instance.create.end' event_type = 'compute.instance.create.end'
@ -137,9 +140,10 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
self.assertEqual(2, len(records)) self.assertEqual(2, len(records))
def test_label_in_format(self): def test_label_in_format_v4_v6(self):
event_type = 'compute.instance.create.end' event_type = 'compute.instance.create.end'
self.config(format=['%(label)s.example.com'], self.config(formatv4=['%(label)s.example.com.'],
formatv6=['%(label)s.example.com.'],
group='handler:nova_fixed') group='handler:nova_fixed')
fixture = self.get_notification_fixture('nova', event_type) fixture = self.get_notification_fixture('nova', event_type)
with mock.patch.object(self.plugin, '_find_or_create_recordset')\ with mock.patch.object(self.plugin, '_find_or_create_recordset')\
@ -152,11 +156,11 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
event_type, fixture['payload']) event_type, fixture['payload'])
finder.assert_called_once_with( finder.assert_called_once_with(
mock.ANY, type='A', zone_id=self.zone_id, mock.ANY, type='A', zone_id=self.zone_id,
name='private.example.com') name='private.example.com.')
def test_formatv4_or_format(self): def test_formatv4(self):
event_type = 'compute.instance.create.end' event_type = 'compute.instance.create.end'
self.config(formatv4=['%(label)s-v4.example.com'], self.config(formatv4=['%(label)s-v4.example.com.'],
group='handler:nova_fixed') group='handler:nova_fixed')
fixture = self.get_notification_fixture('nova', event_type) fixture = self.get_notification_fixture('nova', event_type)
with mock.patch.object(self.plugin, '_find_or_create_recordset')\ with mock.patch.object(self.plugin, '_find_or_create_recordset')\
@ -169,13 +173,11 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
event_type, fixture['payload']) event_type, fixture['payload'])
finder.assert_called_once_with( finder.assert_called_once_with(
mock.ANY, type='A', zone_id=self.zone_id, mock.ANY, type='A', zone_id=self.zone_id,
name='private-v4.example.com') name='private-v4.example.com.')
def test_formatv4_and_format(self): def test_formatv6(self):
event_type = 'compute.instance.create.end' event_type = 'compute.instance.create.end'
self.config(format=['%(label)s.example.com'], self.config(formatv6=['%(label)s-v6.example.com.'],
group='handler:nova_fixed')
self.config(formatv4=['%(label)s-v4.example.com'],
group='handler:nova_fixed') group='handler:nova_fixed')
fixture = self.get_notification_fixture('nova', event_type) fixture = self.get_notification_fixture('nova', event_type)
with mock.patch.object(self.plugin, '_find_or_create_recordset')\ with mock.patch.object(self.plugin, '_find_or_create_recordset')\
@ -185,7 +187,7 @@ class NovaFixedHandlerTest(TestCase, NotificationHandlerMixin):
finder.return_value = {'id': 'fakeid'} finder.return_value = {'id': 'fakeid'}
self.plugin.process_notification( self.plugin.process_notification(
self.admin_context.to_dict(), self.admin_context.to_dict(),
event_type, fixture['payload']) event_type, fixture['payload_v6'])
finder.assert_called_once_with( finder.assert_called_once_with(
mock.ANY, type='A', zone_id=self.zone_id, mock.ANY, type='AAAA', zone_id=self.zone_id,
name='private-v4.example.com') name='private-v6.example.com.')

View File

@ -0,0 +1,14 @@
---
critical:
- The `format` cfg in nova and neutron notification both will remove in the Pike.
Please set ``formatv4`` and ``formatv6`` in the ``[handler:nova_fixed]``
and ``[handler:neutron_floatingip]`` your designate config file.
``formatv4 = '%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(zone)s'``
``formatv4 = '%(hostname)s.%(project)s.%(zone)s'``
``formatv4 = '%(hostname)s.%(zone)s'``
``formatv6 = '%(hostname)s.%(project)s.%(zone)s'``
``formatv6 = '%(hostname)s.%(zone)s'``
- The above config which you need to put or uncomment them into/in
designate config file.