Fix default IP range for baremetal network
if IP ranges start with X.X.X.1 when gateway is not set explicitly it results in IP intersection if multiple node groups are in use because all networks must have gateways in this case and gateways are set to default values X.X.X.1 if they are missing for some networks Change-Id: Ia7c5a91526e706c5546f5cdc25ba2e945c5ae341 Closes-Bug: #1539503
This commit is contained in:
parent
8c535849e2
commit
e03c35ef3d
|
@ -520,7 +520,7 @@
|
|||
configurable: true
|
||||
- name: "baremetal"
|
||||
cidr: "192.168.3.0/24"
|
||||
ip_range: ["192.168.3.1", "192.168.3.50"]
|
||||
ip_range: ["192.168.3.2", "192.168.3.50"]
|
||||
vlan_start: 104
|
||||
use_gateway: false
|
||||
notation: "ip_ranges"
|
||||
|
|
|
@ -904,3 +904,62 @@ class TestNetworkConfigurationVerifyHandler(TestNetworkChecking):
|
|||
self.assertIn("uniqueItem", json['message'])
|
||||
self.assertIn("vlan_range", json['message'])
|
||||
self.assertIn("[1000, 1000]", json['message'])
|
||||
|
||||
|
||||
class TestNeutronHandlers90(TestNetworkChecking):
|
||||
|
||||
def check_baremetal_gateway_vs_iprange(self, baremetal_parameters, result):
|
||||
net_meta = self.env.get_default_networks_metadata()
|
||||
bm = filter(lambda n: n['name'] == 'baremetal',
|
||||
net_meta['neutron']['networks'])[0]
|
||||
bm.update(baremetal_parameters)
|
||||
|
||||
self.env.create(
|
||||
release_kwargs={
|
||||
'networks_metadata': net_meta,
|
||||
'version': 'mitaka-9.0',
|
||||
'operating_system': consts.RELEASE_OS.ubuntu
|
||||
},
|
||||
cluster_kwargs={
|
||||
'net_provider': 'neutron',
|
||||
'net_segment_type': 'vlan',
|
||||
}
|
||||
)
|
||||
cluster = self.env.clusters[0]
|
||||
|
||||
self.env._set_additional_component(cluster, 'ironic', True)
|
||||
|
||||
self.env.create_node_group(cluster_id=cluster.id)
|
||||
resp = self.env.neutron_networks_get(cluster.id)
|
||||
nets = resp.json_body
|
||||
if result:
|
||||
return self.update_neutron_networks_success(cluster.id, nets)
|
||||
else:
|
||||
return self.update_neutron_networks_w_error(cluster.id, nets)
|
||||
|
||||
@mock.patch('nailgun.task.task.rpc.cast')
|
||||
def test_baremetal_ranges_with_default_gateway_ok(self, _):
|
||||
self.check_baremetal_gateway_vs_iprange({
|
||||
'cidr': '192.168.3.0/24',
|
||||
'ip_range': ['192.168.3.2', '192.168.3.50'],
|
||||
'use_gateway': False,
|
||||
'notation': 'ip_ranges'
|
||||
}, True)
|
||||
|
||||
@mock.patch('nailgun.task.task.rpc.cast')
|
||||
def test_baremetal_ranges_with_default_gateway_fail(self, _):
|
||||
# if IP ranges start with X.X.X.1 when gateway is not set explicitly
|
||||
# it results in IP intersection if multiple node groups are in use
|
||||
# because all networks must have gateways in this case and gateways are
|
||||
# set to default values X.X.X.1 if they are missing for some networks
|
||||
resp = self.check_baremetal_gateway_vs_iprange({
|
||||
'cidr': '192.168.3.0/24',
|
||||
'ip_range': ['192.168.3.1', '192.168.3.50'],
|
||||
'use_gateway': False,
|
||||
'notation': 'ip_ranges'
|
||||
}, False)
|
||||
self.assertIn(
|
||||
u"Gateway address belongs to the network's IP range "
|
||||
u"[192.168.3.1-192.168.3.50].",
|
||||
resp['message']
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue