summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorAndrew Bogott <abogott@wikimedia.org>2012-01-12 20:01:15 +0000
committerAndrew Bogott <abogott@wikimedia.org>2012-01-13 18:33:59 +0000
commit04986f2f0c4a570c1cb786aa69a5608620108e50 (patch)
treeba42bc1f99b89309e13037ea79f41e3e60ef594c /nova
parentf3cae729b71cdd5f0abf00a81d76539127bb0f48 (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.py5
-rw-r--r--nova/network/minidns.py4
-rw-r--r--nova/tests/test_network.py30
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)