Adds validation for Ironic gateway
Currently, there is no backend validation for Ironic gateway. Added intersection check. Change-Id: I89dcf9414f11ccffd85e1b10b559bd8cae78a935 Closes-Bug: #1522386 Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
This commit is contained in:
parent
b756427d38
commit
4cfa3afcbd
@ -505,6 +505,22 @@ class NetworkCheck(object):
|
||||
self.result.append({"ids": [],
|
||||
"name": ["internal"],
|
||||
"errors": ["gateway"]})
|
||||
|
||||
if objects.Cluster.is_component_enabled(self.cluster, 'ironic'):
|
||||
bare_net = self.network_config['baremetal_range']
|
||||
bare_net_range = netaddr.IPRange(bare_net[0], bare_net[1])
|
||||
bare_gw = netaddr.IPAddress(
|
||||
self.network_config['baremetal_gateway'])
|
||||
|
||||
if bare_gw in bare_net_range:
|
||||
self.err_msgs.append(
|
||||
u"Neutron L3 address intersection between Ironic gateway "
|
||||
u"and Ironic IP range."
|
||||
)
|
||||
self.result.append({"ids": [],
|
||||
"name": ["baremetal"],
|
||||
"errors": ["gateway", "ip_ranges"]})
|
||||
|
||||
self.expose_error_messages()
|
||||
|
||||
def _get_net_range_for_ip(self, ip, net):
|
||||
|
@ -406,22 +406,28 @@ class TestNetworkCheck(BaseIntegrationTest):
|
||||
self.assertNotRaises(errors.NetworkCheckError,
|
||||
checker.check_networks_amount)
|
||||
|
||||
@patch('objects.Cluster.is_component_enabled')
|
||||
@patch.object(helpers, 'db')
|
||||
def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
|
||||
self, mocked_db):
|
||||
self, mocked_db, is_component_enabled):
|
||||
checker = NetworkCheck(self.task, {})
|
||||
checker.network_config['floating_ranges'] = [('192.168.0.1',
|
||||
'192.168.0.255')]
|
||||
checker.network_config['internal_cidr'] = '192.168.0.0/24'
|
||||
checker.network_config['internal_gateway'] = '192.168.0.0'
|
||||
checker.network_config['baremetal_range'] = ['192.168.3.52',
|
||||
'192.168.3.254']
|
||||
checker.network_config['baremetal_gateway'] = '192.168.3.53'
|
||||
checker.networks = [{'id': 1,
|
||||
'cidr': '192.168.0.0/24',
|
||||
'gateway': '192.168.0.1',
|
||||
'name': 'public'}]
|
||||
is_component_enabled.return_value = True
|
||||
|
||||
self.assertRaises(
|
||||
errors.NetworkCheckError,
|
||||
checker.neutron_check_l3_addresses_not_match_subnet_and_broadcast)
|
||||
self.assertEqual(len(checker.err_msgs), 2)
|
||||
self.assertEqual(len(checker.err_msgs), 3)
|
||||
|
||||
def test_check_network_classes_exclude_loopback(self):
|
||||
checker = NetworkCheck(self.task, {})
|
||||
|
Loading…
Reference in New Issue
Block a user