Handle the 'instance' half of blueprint public-and-private-dns
Added a minimalist flat-file DNS example driver, MiniDNS. Added tests for MiniDNS and a test that uses MiniDNS to validate instance DNS creation. Change-Id: I512018b7ed90ac2f388277443ee69b872ed60ef2
This commit is contained in:
1
Authors
1
Authors
@@ -6,6 +6,7 @@ Ahmad Hassan <ahmad.hassan@hp.com>
|
||||
Alex Meade <alex.meade@rackspace.com>
|
||||
Alexander Sakhnov <asakhnov@mirantis.com>
|
||||
Alvaro Lopez Garcia <aloga@ifca.unican.es>
|
||||
Andrew Bogott <abogott@wikimedia.org>
|
||||
Andrey Brindeyev <abrindeyev@griddynamics.com>
|
||||
Andy Smith <code@term.ie>
|
||||
Andy Southgate <andy.southgate@citrix.com>
|
||||
|
@@ -397,6 +397,11 @@ DEFINE_string('compute_manager', 'nova.compute.manager.ComputeManager',
|
||||
'Manager for compute')
|
||||
DEFINE_string('console_manager', 'nova.console.manager.ConsoleProxyManager',
|
||||
'Manager for console proxy')
|
||||
DEFINE_string('instance_dns_manager',
|
||||
'nova.network.instance_dns_driver.InstanceDNSManagerDriver',
|
||||
'DNS Manager for instance IPs')
|
||||
DEFINE_string('instance_dns_zone', '',
|
||||
'DNS Zone for instance IPs')
|
||||
DEFINE_string('network_manager', 'nova.network.manager.VlanManager',
|
||||
'Manager for network')
|
||||
DEFINE_string('volume_manager', 'nova.volume.manager.VolumeManager',
|
||||
|
@@ -22,6 +22,7 @@ from nova import exception
|
||||
from nova import log as logging
|
||||
from nova import rpc
|
||||
from nova import test
|
||||
from nova import utils
|
||||
from nova.network import manager as network_manager
|
||||
from nova.tests import fake_network
|
||||
|
||||
@@ -133,10 +134,16 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
def setUp(self):
|
||||
super(FlatNetworkTestCase, self).setUp()
|
||||
self.network = network_manager.FlatManager(host=HOST)
|
||||
temp = utils.import_object('nova.network.minidns.MiniDNS')
|
||||
self.network.instance_dns_manager = temp
|
||||
self.network.db = db
|
||||
self.context = context.RequestContext('testuser', 'testproject',
|
||||
is_admin=False)
|
||||
|
||||
def tearDown(self):
|
||||
super(FlatNetworkTestCase, self).tearDown()
|
||||
self.network.instance_dns_manager.delete_dns_file()
|
||||
|
||||
def test_get_instance_nw_info(self):
|
||||
fake_get_instance_nw_info = fake_network.fake_get_instance_nw_info
|
||||
|
||||
@@ -272,6 +279,8 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id': 0}]})
|
||||
db.instance_get(self.context,
|
||||
1).AndReturn({'display_name': HOST})
|
||||
db.fixed_ip_associate_pool(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn('192.168.0.101')
|
||||
@@ -282,6 +291,59 @@ class FlatNetworkTestCase(test.TestCase):
|
||||
self.network.add_fixed_ip_to_instance(self.context, 1, HOST,
|
||||
networks[0]['id'])
|
||||
|
||||
def test_mini_dns_driver(self):
|
||||
driver = self.network.instance_dns_manager
|
||||
driver.create_entry("hostone", "10.0.0.1", 0, "foozone")
|
||||
driver.create_entry("hosttwo", "10.0.0.2", 0, "foozone")
|
||||
driver.create_entry("hostthree", "10.0.0.3", 0, "foozone")
|
||||
driver.create_entry("hostfour", "10.0.0.4", 0, "foozone")
|
||||
driver.delete_entry("hosttwo", "foozone")
|
||||
driver.rename_entry("10.0.0.3", "hostone", "foozone")
|
||||
driver.modify_address("hostfour", "10.0.0.1", "foozone")
|
||||
names = driver.get_entries_by_address("10.0.0.1", "foozone")
|
||||
self.assertEqual(len(names), 2)
|
||||
self.assertIn('hostone.foozone', names)
|
||||
self.assertIn('hostfour.foozone', names)
|
||||
addresses = driver.get_entries_by_name("hostone", "foozone")
|
||||
self.assertEqual(len(addresses), 2)
|
||||
self.assertIn('10.0.0.1', addresses)
|
||||
self.assertIn('10.0.0.3', addresses)
|
||||
|
||||
def test_instance_dns(self):
|
||||
fixedip = '192.168.0.101'
|
||||
self.mox.StubOutWithMock(db, 'network_get')
|
||||
self.mox.StubOutWithMock(db, 'network_update')
|
||||
self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool')
|
||||
self.mox.StubOutWithMock(db, 'instance_get')
|
||||
self.mox.StubOutWithMock(db,
|
||||
'virtual_interface_get_by_instance_and_network')
|
||||
self.mox.StubOutWithMock(db, 'fixed_ip_update')
|
||||
|
||||
db.fixed_ip_update(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(),
|
||||
mox.IgnoreArg())
|
||||
db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(),
|
||||
mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({'id': 0})
|
||||
|
||||
db.instance_get(mox.IgnoreArg(),
|
||||
mox.IgnoreArg()).AndReturn({'security_groups':
|
||||
[{'id': 0}]})
|
||||
|
||||
db.instance_get(self.context,
|
||||
1).AndReturn({'display_name': HOST})
|
||||
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)
|
||||
self.assertEqual(len(addresses), 1)
|
||||
self.assertEqual(addresses[0], fixedip)
|
||||
|
||||
|
||||
class VlanNetworkTestCase(test.TestCase):
|
||||
def setUp(self):
|
||||
|
Reference in New Issue
Block a user