Merge "Handle the 'instance' half of blueprint public-and-private-dns"

This commit is contained in:
Jenkins
2011-12-09 18:57:06 +00:00
committed by Gerrit Code Review
3 changed files with 68 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ Ahmad Hassan <ahmad.hassan@hp.com>
Alex Meade <alex.meade@rackspace.com> Alex Meade <alex.meade@rackspace.com>
Alexander Sakhnov <asakhnov@mirantis.com> Alexander Sakhnov <asakhnov@mirantis.com>
Alvaro Lopez Garcia <aloga@ifca.unican.es> Alvaro Lopez Garcia <aloga@ifca.unican.es>
Andrew Bogott <abogott@wikimedia.org>
Andrey Brindeyev <abrindeyev@griddynamics.com> Andrey Brindeyev <abrindeyev@griddynamics.com>
Andy Smith <code@term.ie> Andy Smith <code@term.ie>
Andy Southgate <andy.southgate@citrix.com> Andy Southgate <andy.southgate@citrix.com>

View File

@@ -397,6 +397,11 @@ DEFINE_string('compute_manager', 'nova.compute.manager.ComputeManager',
'Manager for compute') 'Manager for compute')
DEFINE_string('console_manager', 'nova.console.manager.ConsoleProxyManager', DEFINE_string('console_manager', 'nova.console.manager.ConsoleProxyManager',
'Manager for console proxy') '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', DEFINE_string('network_manager', 'nova.network.manager.VlanManager',
'Manager for network') 'Manager for network')
DEFINE_string('volume_manager', 'nova.volume.manager.VolumeManager', DEFINE_string('volume_manager', 'nova.volume.manager.VolumeManager',

View File

@@ -22,6 +22,7 @@ from nova import exception
from nova import log as logging from nova import log as logging
from nova import rpc from nova import rpc
from nova import test from nova import test
from nova import utils
from nova.network import manager as network_manager from nova.network import manager as network_manager
from nova.tests import fake_network from nova.tests import fake_network
@@ -133,10 +134,16 @@ class FlatNetworkTestCase(test.TestCase):
def setUp(self): def setUp(self):
super(FlatNetworkTestCase, self).setUp() super(FlatNetworkTestCase, self).setUp()
self.network = network_manager.FlatManager(host=HOST) 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.network.db = db
self.context = context.RequestContext('testuser', 'testproject', self.context = context.RequestContext('testuser', 'testproject',
is_admin=False) 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): def test_get_instance_nw_info(self):
fake_get_instance_nw_info = fake_network.fake_get_instance_nw_info 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(), db.instance_get(mox.IgnoreArg(),
mox.IgnoreArg()).AndReturn({'security_groups': mox.IgnoreArg()).AndReturn({'security_groups':
[{'id': 0}]}) [{'id': 0}]})
db.instance_get(self.context,
1).AndReturn({'display_name': HOST})
db.fixed_ip_associate_pool(mox.IgnoreArg(), db.fixed_ip_associate_pool(mox.IgnoreArg(),
mox.IgnoreArg(), mox.IgnoreArg(),
mox.IgnoreArg()).AndReturn('192.168.0.101') 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, self.network.add_fixed_ip_to_instance(self.context, 1, HOST,
networks[0]['id']) 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): class VlanNetworkTestCase(test.TestCase):
def setUp(self): def setUp(self):