diff --git a/src/lib/charm/openstack/designate.py b/src/lib/charm/openstack/designate.py index f2306e8..4caee23 100644 --- a/src/lib/charm/openstack/designate.py +++ b/src/lib/charm/openstack/designate.py @@ -543,7 +543,13 @@ class DesignateCharm(ch_plugins.PolicydOverridePlugin, with cls.check_zone_ids(nova_domain_name, neutron_domain_name): if hookenv.config('nameservers'): for ns in hookenv.config('nameservers').split(): - cls.create_server(ns) + ns_ = ns + if not ns.endswith('.'): + ns_ = ns + '.' + hookenv.log(("Missing dot (.) at the end of '%s', " + "adding it automatically." % ns), + level=hookenv.WARNING) + cls.create_server(ns_) else: hookenv.log('No nameserver specified, skipping creation of' 'nova and neutron domains', diff --git a/unit_tests/test_lib_charm_openstack_designate.py b/unit_tests/test_lib_charm_openstack_designate.py index e202e07..a45cce2 100644 --- a/unit_tests/test_lib_charm_openstack_designate.py +++ b/unit_tests/test_lib_charm_openstack_designate.py @@ -311,7 +311,7 @@ class TestDesignateCharm(Helper): def test_create_initial_servers_and_domains(self): test_config = { - 'nameservers': 'dnsserverrec1', + 'nameservers': 'dnsserverrec1. dnsserverrec2', 'nova-domain': 'novadomain', 'nova-domain-email': 'novaemail', 'neutron-domain': 'neutrondomain', @@ -333,7 +333,8 @@ class TestDesignateCharm(Helper): with mock.patch.object(designate.hookenv, 'config', side_effect=FakeConfig(test_config)): designate.DesignateCharm.create_initial_servers_and_domains() - self.create_server.assert_called_once_with('dnsserverrec1') + self.create_server.assert_has_calls([mock.call('dnsserverrec1.'), + mock.call('dnsserverrec2.')]) calls = [ mock.call('novadomain', 'novaemail'), mock.call('neutrondomain', 'neutronemail')]