diff options
| author | Andrew Bogott <abogott@wikimedia.org> | 2012-01-12 20:01:15 +0000 |
|---|---|---|
| committer | Andrew Bogott <abogott@wikimedia.org> | 2012-01-13 18:33:59 +0000 |
| commit | 04986f2f0c4a570c1cb786aa69a5608620108e50 (patch) | |
| tree | ba42bc1f99b89309e13037ea79f41e3e60ef594c /nova | |
| parent | f3cae729b71cdd5f0abf00a81d76539127bb0f48 (diff) | |
Create an instance DNS record based on instance UUID.
Previously we created one based on instance name only. Since
name is not guaranteed to be unique, best to have one based
on uuid as well. Both point to the same address, of course.
For blueprint public-and-private-dns.
Change-Id: Ibb17f2a49f00b4522205d6b4508f432f6f5b0c5d
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/network/manager.py | 5 | ||||
| -rw-r--r-- | nova/network/minidns.py | 4 | ||||
| -rw-r--r-- | nova/tests/test_network.py | 30 |
3 files changed, 30 insertions, 9 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py index 038b1d964..3a9003a78 100644 --- a/nova/network/manager.py +++ b/nova/network/manager.py @@ -1008,8 +1008,11 @@ class NetworkManager(manager.SchedulerDependentManager): instance_ref = self.db.instance_get(context, instance_id) name = instance_ref['display_name'] + uuid = instance_ref['uuid'] self.instance_dns_manager.create_entry(name, address, - "type", FLAGS.instance_dns_zone) + "A", FLAGS.instance_dns_zone) + self.instance_dns_manager.create_entry(uuid, address, + "A", FLAGS.instance_dns_zone) self._setup_network(context, network) return address diff --git a/nova/network/minidns.py b/nova/network/minidns.py index 448924553..81305c8c4 100644 --- a/nova/network/minidns.py +++ b/nova/network/minidns.py @@ -54,6 +54,10 @@ class MiniDNS(object): def create_entry(self, name, address, type, dnszone): + if type.lower() != 'a': + raise exception.InvalidInput(_("This driver only supports " + "type 'a'")) + if self.get_entries_by_name(name, dnszone): raise exception.FloatingIpDNSExists(name=name, zone=dnszone) diff --git a/nova/tests/test_network.py b/nova/tests/test_network.py index bf4c60427..ffc53cf1f 100644 --- a/nova/tests/test_network.py +++ b/nova/tests/test_network.py @@ -285,7 +285,8 @@ class FlatNetworkTestCase(test.TestCase): mox.IgnoreArg()).AndReturn({'security_groups': [{'id': 0}]}) db.instance_get(self.context, - 1).AndReturn({'display_name': HOST}) + 1).AndReturn({'display_name': HOST, + 'uuid': 'test-00001'}) db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn('192.168.0.101') @@ -300,11 +301,11 @@ class FlatNetworkTestCase(test.TestCase): zone1 = "example.org" zone2 = "example.com" driver = self.network.instance_dns_manager - driver.create_entry("hostone", "10.0.0.1", 0, zone1) - driver.create_entry("hosttwo", "10.0.0.2", 0, zone1) - driver.create_entry("hostthree", "10.0.0.3", 0, zone1) - driver.create_entry("hostfour", "10.0.0.4", 0, zone1) - driver.create_entry("hostfive", "10.0.0.5", 0, zone2) + driver.create_entry("hostone", "10.0.0.1", "A", zone1) + driver.create_entry("hosttwo", "10.0.0.2", "A", zone1) + driver.create_entry("hostthree", "10.0.0.3", "A", zone1) + driver.create_entry("hostfour", "10.0.0.4", "A", zone1) + driver.create_entry("hostfive", "10.0.0.5", "A", zone2) driver.delete_entry("hostone", zone1) driver.modify_address("hostfour", "10.0.0.1", zone1) @@ -322,6 +323,13 @@ class FlatNetworkTestCase(test.TestCase): self.assertEqual(len(addresses), 1) self.assertIn('10.0.0.2', addresses) + self.assertRaises(exception.InvalidInput, + driver.create_entry, + "hostname", + "10.10.10.10", + "invalidtype", + zone1) + def test_instance_dns(self): fixedip = '192.168.0.101' self.mox.StubOutWithMock(db, 'network_get') @@ -343,17 +351,23 @@ class FlatNetworkTestCase(test.TestCase): [{'id': 0}]}) db.instance_get(self.context, - 1).AndReturn({'display_name': HOST}) + 1).AndReturn({'display_name': HOST, + 'uuid': 'test-00001'}) db.fixed_ip_associate_pool(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(fixedip) db.network_get(mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(networks[0]) db.network_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()) + self.mox.ReplayAll() self.network.add_fixed_ip_to_instance(self.context, 1, HOST, networks[0]['id']) - addresses = self.network.instance_dns_manager.get_entries_by_name(HOST) + instance_manager = self.network.instance_dns_manager + addresses = instance_manager.get_entries_by_name(HOST) + self.assertEqual(len(addresses), 1) + self.assertEqual(addresses[0], fixedip) + addresses = instance_manager.get_entries_by_name('test-00001') self.assertEqual(len(addresses), 1) self.assertEqual(addresses[0], fixedip) |
