Fixed incorrect dhcp_server value during nova-network creation

When parameter dhcp_server is None, we must use network gateway
for each network. But because of incorrect usage of variable
dhcp_server, we use gateway of the FIRST network for each network.

Co-Authored-By: Roman Podoliaka <rpodolyaka@mirantis.com>
Co-Authored-By: Pavel Kholkin <pkholkin@mirantis.com>

Closes-Bug: #1443970

Change-Id: I9d22a2ac94e8675a231436ce8ba77260c4b8b98a
This commit is contained in:
Sergey Nikitin 2015-04-15 10:27:10 +03:00
parent 1e3412deec
commit f697befdd3
2 changed files with 20 additions and 4 deletions

View File

@ -1351,13 +1351,11 @@ class NetworkManager(manager.Manager):
else:
net.gateway = current
current += 1
if not dhcp_server:
dhcp_server = net.gateway
net.dhcp_server = dhcp_server or net.gateway
net.dhcp_start = current
current += 1
if str(net.dhcp_start) == dhcp_server:
if net.dhcp_start == net.dhcp_server:
net.dhcp_start = current
net.dhcp_server = dhcp_server
extra_reserved.append(str(net.dhcp_server))
extra_reserved.append(str(net.gateway))

View File

@ -1105,6 +1105,24 @@ class VlanNetworkTestCase(test.TestCase):
error_msg = 'vlan must be an integer'
self.assertIn(error_msg, six.text_type(exc))
def test_vlan_multiple_without_dhcp_server(self):
networks = self.network.create_networks(
self.context_admin, label="fake", num_networks=2,
vlan_start=100, cidr='192.168.3.1/24',
network_size=100)
self.assertEqual(networks[0]["dhcp_server"], "192.168.3.1")
self.assertEqual(networks[1]["dhcp_server"], "192.168.3.129")
def test_vlan_multiple_with_dhcp_server(self):
networks = self.network.create_networks(
self.context_admin, label="fake", num_networks=2,
vlan_start=100, cidr='192.168.3.1/24',
network_size=100, dhcp_server='192.168.3.1')
self.assertEqual(networks[0]["dhcp_server"], "192.168.3.1")
self.assertEqual(networks[1]["dhcp_server"], "192.168.3.1")
@mock.patch('nova.db.network_get')
def test_validate_networks(self, net_get):
def network_get(_context, network_id, project_only='allow_none'):