Example #1
0
    def setUp(self):
        self.mock_central_rpcapi = MagicMock(name='central_rpcapi')
        self.patch_central_rpcapi = patch(
            'designate.notification_handler.base.central_rpcapi',
            self.mock_central_rpcapi)
        self.patch_central_rpcapi.start()
        self.mock_central_api = self.mock_central_rpcapi.CentralAPI.return_value

        self.mock_recordset = MagicMock(name='recordset')
        self.patch_recordset = patch(
            'designate_enhancedhandler.notification_handler.base.RecordSet',
            self.mock_recordset)
        self.patch_recordset.start()
        self.mock_recordset_sample = MagicMock(name='recordset_sample')
        self.mock_recordset.return_value = self.mock_recordset_sample

        self.mock_admin_context = MagicMock(name='admin_context')
        self.mock_admin_context.tenant = '4e3b6c0108f04b309737522a9deee9d8'
        self.mock_designate_context = MagicMock(name='designate_context')
        self.mock_designate_context.get_admin_context.return_value = self.mock_admin_context
        self.patch_designate_context = patch(
            'designate_enhancedhandler.notification_handler.base.DesignateContext',
            self.mock_designate_context)
        self.patch_designate_context.start()
        self.handler = NovaEnhancedHandler()
        self.admin_context = None  # Unused by the handler
    def setUp(self):
        self.mock_central_rpcapi = MagicMock(name='central_rpcapi')
        self.patch_central_rpcapi = patch('designate.notification_handler.base.central_rpcapi',
                                          self.mock_central_rpcapi)
        self.patch_central_rpcapi.start()
        self.mock_central_api = self.mock_central_rpcapi.CentralAPI.return_value

        self.mock_recordset = MagicMock(name='recordset')
        self.patch_recordset = patch('designate_enhancedhandler.notification_handler.base.RecordSet',
                                     self.mock_recordset)
        self.patch_recordset.start()
        self.mock_recordset_sample = MagicMock(name='recordset_sample')
        self.mock_recordset.return_value = self.mock_recordset_sample

        self.mock_admin_context = MagicMock(name='admin_context')
        self.mock_admin_context.tenant = '4e3b6c0108f04b309737522a9deee9d8'
        self.mock_designate_context = MagicMock(name='designate_context')
        self.mock_designate_context.get_admin_context.return_value = self.mock_admin_context
        self.patch_designate_context = patch('designate_enhancedhandler.notification_handler.base.DesignateContext',
                                             self.mock_designate_context)
        self.patch_designate_context.start()
        self.handler = NovaEnhancedHandler()
        self.admin_context = None  # Unused by the handler
class NovaEnhancedHandlerTest(TestCase):
    def setUp(self):
        self.mock_central_rpcapi = MagicMock(name='central_rpcapi')
        self.patch_central_rpcapi = patch('designate.notification_handler.base.central_rpcapi',
                                          self.mock_central_rpcapi)
        self.patch_central_rpcapi.start()
        self.mock_central_api = self.mock_central_rpcapi.CentralAPI.return_value

        self.mock_recordset = MagicMock(name='recordset')
        self.patch_recordset = patch('designate_enhancedhandler.notification_handler.base.RecordSet',
                                     self.mock_recordset)
        self.patch_recordset.start()
        self.mock_recordset_sample = MagicMock(name='recordset_sample')
        self.mock_recordset.return_value = self.mock_recordset_sample

        self.mock_admin_context = MagicMock(name='admin_context')
        self.mock_admin_context.tenant = '4e3b6c0108f04b309737522a9deee9d8'
        self.mock_designate_context = MagicMock(name='designate_context')
        self.mock_designate_context.get_admin_context.return_value = self.mock_admin_context
        self.patch_designate_context = patch('designate_enhancedhandler.notification_handler.base.DesignateContext',
                                             self.mock_designate_context)
        self.patch_designate_context.start()
        self.handler = NovaEnhancedHandler()
        self.admin_context = None  # Unused by the handler

    def tearDown(self):
        self.patch_designate_context.stop()
        self.patch_recordset.stop()
        self.patch_central_rpcapi.stop()

    def test_create_instance(self):
        event_type = 'compute.instance.create.end'
        payload = {
            'hostname': 'demodesignate',
            'tenant_id': '4e3b6c0108f04b309737522a9deee9d8',
            'instance_id': '9220edc1-426e-46b1-9967-ce1e64c82f01',
            'fixed_ips': [
                {
                    'floating_ips': [],
                    'label': 'private_management',
                    'version': 4,
                    'meta': {},
                    'address': '192.168.3.22',
                    'type"': 'fixed'
                },
                {
                    'floating_ips': [],
                    'label': 'private_external',
                    'version': 4,
                    'meta': {},
                    'address': '172.16.3.26',
                    'type"': 'fixed'
                }
            ]
        }
        self.mock_central_api.find_domain.return_value = {'id': 'test_domain_id', 'name': 'test_domain.ost.com.'}
        self.mock_central_api.find_domains.return_value = [
            DomainDict(id='test_reverse_domain_id', name='172.in-addr.arpa.')
        ]
        self.mock_central_api.create_recordset.return_value = {'id': 'test_recordset_id'}

        self.handler.process_notification(self.mock_admin_context, event_type, payload)

        self.mock_central_api.find_domain.assert_called_once_with(self.mock_admin_context,
                                                                  {'tenant_id': '4e3b6c0108f04b309737522a9deee9d8'})
        self.mock_central_api.find_domains.assert_has_calls([call(self.mock_admin_context),
                                                             call(self.mock_admin_context)])

        self.mock_recordset.assert_has_calls([
            call(name='demodesignate.private_management.test_domain.ost.com.', type='A'),
            call(name='demodesignate.private_external.test_domain.ost.com.', type='A'),
            call(name='26.3.16.172.in-addr.arpa.', type='PTR')
        ])
        self.mock_central_api.create_recordset.assert_has_calls([
            call(self.mock_admin_context, 'test_domain_id', self.mock_recordset_sample),
            call(self.mock_admin_context, 'test_domain_id', self.mock_recordset_sample),
            call(self.mock_admin_context, 'test_reverse_domain_id', self.mock_recordset_sample)
        ])

    def test_delete_instance(self):
        event_type = 'compute.instance.delete.start'
        payload = {
            'hostname': 'demodesignate',
            'tenant_id': '4e3b6c0108f04b309737522a9deee9d8',
            'instance_id': '9220edc1-426e-46b1-9967-ce1e64c82f01'
        }

        self.mock_central_api.find_records.return_value = [
            {'id': 'test_record_id_1', 'domain_id': 'test_domain_id', 'recordset_id': 'test_recordset_id_1'},
            {'id': 'test_record_id_2', 'domain_id': 'test_domain_id', 'recordset_id': 'test_recordset_id_2'}
        ]

        self.handler.process_notification(self.mock_admin_context, event_type, payload)

        self.mock_central_api.find_records.assert_called_once_with(self.mock_admin_context, {
            'managed': True,
            'managed_plugin_name': 'nova_enhanced',
            'managed_plugin_type': 'handler',
            'managed_resource_type': 'instance',
            'managed_resource_id': '9220edc1-426e-46b1-9967-ce1e64c82f01'
        })
        self.mock_central_api.delete_record.assert_has_calls([
            call(self.mock_admin_context, 'test_domain_id', 'test_recordset_id_1', 'test_record_id_1'),
            call(self.mock_admin_context, 'test_domain_id', 'test_recordset_id_2', 'test_record_id_2')
        ])
Example #4
0
class NovaEnhancedHandlerTest(TestCase):
    def setUp(self):
        self.mock_central_rpcapi = MagicMock(name='central_rpcapi')
        self.patch_central_rpcapi = patch(
            'designate.notification_handler.base.central_rpcapi',
            self.mock_central_rpcapi)
        self.patch_central_rpcapi.start()
        self.mock_central_api = self.mock_central_rpcapi.CentralAPI.return_value

        self.mock_recordset = MagicMock(name='recordset')
        self.patch_recordset = patch(
            'designate_enhancedhandler.notification_handler.base.RecordSet',
            self.mock_recordset)
        self.patch_recordset.start()
        self.mock_recordset_sample = MagicMock(name='recordset_sample')
        self.mock_recordset.return_value = self.mock_recordset_sample

        self.mock_admin_context = MagicMock(name='admin_context')
        self.mock_admin_context.tenant = '4e3b6c0108f04b309737522a9deee9d8'
        self.mock_designate_context = MagicMock(name='designate_context')
        self.mock_designate_context.get_admin_context.return_value = self.mock_admin_context
        self.patch_designate_context = patch(
            'designate_enhancedhandler.notification_handler.base.DesignateContext',
            self.mock_designate_context)
        self.patch_designate_context.start()
        self.handler = NovaEnhancedHandler()
        self.admin_context = None  # Unused by the handler

    def tearDown(self):
        self.patch_designate_context.stop()
        self.patch_recordset.stop()
        self.patch_central_rpcapi.stop()

    def test_create_instance(self):
        event_type = 'compute.instance.create.end'
        payload = {
            'hostname':
            'demodesignate',
            'tenant_id':
            '4e3b6c0108f04b309737522a9deee9d8',
            'instance_id':
            '9220edc1-426e-46b1-9967-ce1e64c82f01',
            'fixed_ips': [{
                'floating_ips': [],
                'label': 'private_management',
                'version': 4,
                'meta': {},
                'address': '192.168.3.22',
                'type"': 'fixed'
            }, {
                'floating_ips': [],
                'label': 'private_external',
                'version': 4,
                'meta': {},
                'address': '172.16.3.26',
                'type"': 'fixed'
            }]
        }
        self.mock_central_api.find_domain.return_value = {
            'id': 'test_domain_id',
            'name': 'test_domain.ost.com.'
        }
        self.mock_central_api.find_domains.return_value = [
            DomainDict(id='test_reverse_domain_id', name='172.in-addr.arpa.')
        ]
        self.mock_central_api.create_recordset.return_value = {
            'id': 'test_recordset_id'
        }

        self.handler.process_notification(self.mock_admin_context, event_type,
                                          payload)

        self.mock_central_api.find_domain.assert_called_once_with(
            self.mock_admin_context,
            {'tenant_id': '4e3b6c0108f04b309737522a9deee9d8'})
        self.mock_central_api.find_domains.assert_has_calls(
            [call(self.mock_admin_context),
             call(self.mock_admin_context)])

        self.mock_recordset.assert_has_calls([
            call(name='demodesignate.private_management.test_domain.ost.com.',
                 type='A'),
            call(name='demodesignate.private_external.test_domain.ost.com.',
                 type='A'),
            call(name='26.3.16.172.in-addr.arpa.', type='PTR')
        ])
        self.mock_central_api.create_recordset.assert_has_calls([
            call(self.mock_admin_context, 'test_domain_id',
                 self.mock_recordset_sample),
            call(self.mock_admin_context, 'test_domain_id',
                 self.mock_recordset_sample),
            call(self.mock_admin_context, 'test_reverse_domain_id',
                 self.mock_recordset_sample)
        ])

    def test_delete_instance(self):
        event_type = 'compute.instance.delete.start'
        payload = {
            'hostname': 'demodesignate',
            'tenant_id': '4e3b6c0108f04b309737522a9deee9d8',
            'instance_id': '9220edc1-426e-46b1-9967-ce1e64c82f01'
        }

        self.mock_central_api.find_records.return_value = [{
            'id':
            'test_record_id_1',
            'domain_id':
            'test_domain_id',
            'recordset_id':
            'test_recordset_id_1'
        }, {
            'id':
            'test_record_id_2',
            'domain_id':
            'test_domain_id',
            'recordset_id':
            'test_recordset_id_2'
        }]

        self.handler.process_notification(self.mock_admin_context, event_type,
                                          payload)

        self.mock_central_api.find_records.assert_called_once_with(
            self.mock_admin_context, {
                'managed': True,
                'managed_plugin_name': 'nova_enhanced',
                'managed_plugin_type': 'handler',
                'managed_resource_type': 'instance',
                'managed_resource_id': '9220edc1-426e-46b1-9967-ce1e64c82f01'
            })
        self.mock_central_api.delete_record.assert_has_calls([
            call(self.mock_admin_context, 'test_domain_id',
                 'test_recordset_id_1', 'test_record_id_1'),
            call(self.mock_admin_context, 'test_domain_id',
                 'test_recordset_id_2', 'test_record_id_2')
        ])