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:
parent
1e3412deec
commit
f697befdd3
|
@ -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))
|
||||
|
||||
|
|
|
@ -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'):
|
||||
|
|
Loading…
Reference in New Issue