Esempio n. 1
0
    def test_check_network_addresses_not_match_subnet_and_broadcast(
            self, mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{
            'id': 1,
            'cidr': '192.168.0.0/24',
            'gateway': '192.168.0.1',
            'name': 'fake1',
            'meta': {
                'notation': 'ip_ranges'
            }
        }]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{
            'id': 1,
            'cidr': '192.168.0.0/24',
            'gateway': '192.168.0.0',
            'name': 'fake1',
            'meta': {
                'notation': 'ip_ranges'
            }
        }]
        self.assertRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{
            'id': 1,
            'cidr': '192.168.0.0/24',
            'ip_ranges': ['192.168.0.1', '192.168.0.100'],
            'gateway': '192.168.0.0',
            'name': 'fake1',
            'meta': {
                'notation': 'ip_ranges'
            }
        }]
        self.assertRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{
            'id': 1,
            'cidr': '192.168.0.0/24',
            'ip_ranges': ['192.168.1.1', '192.168.1.100'],
            'gateway': '192.168.0.1',
            'name': 'fake1',
            'meta': {
                'notation': 'ip_ranges'
            }
        }]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)
Esempio n. 2
0
    def test_check_network_address_spaces_intersection(self, _):
        cluster = self.env.create(
            cluster_kwargs={
                'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network},
            nodes_kwargs=[
                {"api": True,
                 "pending_addition": True},
            ]
        )
        self.task = FakeTask(self.db.query(Cluster).get(cluster['id']))

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '192.168.0.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]

        self.assertRaises(errors.NetworkCheckError,
                          checker.check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})

        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '192.168.1.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['fixed_networks_cidr'] = '10.20.0.0/24'
        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})

        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '10.20.0.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['fixed_networks_cidr'] = '10.20.0.0/24'
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_network_address_spaces_intersection)
    def test_check_network_address_spaces_intersection(self, _):
        cluster = self.env.create(
            cluster_kwargs={
                'net_provider': consts.CLUSTER_NET_PROVIDERS.nova_network},
            nodes_kwargs=[
                {"api": True,
                 "pending_addition": True},
            ]
        )
        self.task = FakeTask(self.db.query(Cluster).get(cluster['id']))

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '192.168.0.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]

        self.assertRaises(errors.NetworkCheckError,
                          checker.check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})

        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '192.168.1.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['fixed_networks_cidr'] = '10.20.0.0/24'
        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})

        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '10.20.0.0/26',
                             'name': 'fake2',
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['fixed_networks_cidr'] = '10.20.0.0/24'
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_network_address_spaces_intersection)
    def test_check_untagged_intersection_failed(self, mocked_db):
        cluster = self.env.create(
            nodes_kwargs=[
                {'roles': ['controller'], 'pending_addition': True}
            ]
        )
        cluster_db = self.db.query(Cluster).get(cluster['id'])

        ng1 = NetworkGroup()
        ng1.name = consts.NETWORKS.storage
        ng2 = NetworkGroup()
        ng2.name = consts.NETWORKS.management
        self.env.db().add_all([ng1, ng2])
        self.env.db().flush()

        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.networks = [{'id': ng1.id,
                             'cidr': '192.168.0.0/24',
                             'name': ng1.name,
                             'vlan_start': None,
                             'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                             },
                            {'id': ng2.id,
                             'cidr': '192.168.0.0/26',
                             'name': ng2.name,
                             'vlan_start': None,
                             'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                             }]
        checker.cluster.nodes[0].interfaces[0].assigned_networks_list = \
            [ng1, ng2]
        checker.cluster.nodes[0].interfaces[1].assigned_networks_list = \
            [ng1, ng2]
        self.env.db.flush()
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_untagged_intersection)
Esempio n. 5
0
    def test_check_untagged_intersection_failed(self, mocked_db):
        cluster = self.env.create(
            nodes_kwargs=[
                {'roles': ['controller'], 'pending_addition': True}
            ]
        )
        cluster_db = self.db.query(Cluster).get(cluster['id'])

        ng1 = NetworkGroup()
        ng1.name = consts.NETWORKS.storage
        ng2 = NetworkGroup()
        ng2.name = consts.NETWORKS.management
        self.env.db().add_all([ng1, ng2])
        self.env.db().flush()

        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.networks = [{'id': ng1.id,
                             'cidr': '192.168.0.0/24',
                             'name': ng1.name,
                             'vlan_start': None,
                             'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                             },
                            {'id': ng2.id,
                             'cidr': '192.168.0.0/26',
                             'name': ng2.name,
                             'vlan_start': None,
                             'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                             }]
        checker.cluster.nodes[0].interfaces[0].assigned_networks_list = \
            [ng1, ng2]
        checker.cluster.nodes[0].interfaces[1].assigned_networks_list = \
            [ng1, ng2]
        self.env.db.flush()
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_untagged_intersection)
Esempio n. 6
0
    def test_check_untagged_intersection(self):
        cluster = self.env.create(nodes_kwargs=[{
            'roles': ['controller'],
            'pending_addition': True
        }])
        cluster_db = self.db.query(Cluster).get(cluster['id'])
        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.networks = [{
            'id': 1,
            'cidr': '192.168.0.0/24',
            'name': 'fake1',
            'vlan_start': None,
            'meta': {
                'notation': 'cidr'
            }
        }]
        ng1 = NetworkGroup()
        ng1.name = 'fake3'
        ng1.id = 3
        ng2 = NetworkGroup()
        ng2.name = 'fake4'
        ng2.id = 4
        checker.cluster.nodes[0].interfaces[0].assigned_networks_list = \
            [ng1, ng2]

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_untagged_intersection)
Esempio n. 7
0
 def test_check_network_classes_exclude_loopback_fail(self, mocked_db):
     checker = NetworkCheck(self.task, {})
     networks = ['224.0.0.0/3', '127.0.0.0/8']
     for network in networks:
         checker.networks = [{'id': 1, 'cidr': network, 'name': 'fake'}]
         self.assertRaises(errors.NetworkCheckError,
                           checker.check_network_classes_exclude_loopback)
     self.assertEqual(mocked_db.call_count, 4)
 def test_check_network_classes_exclude_loopback_fail(self, mocked_db):
     checker = NetworkCheck(self.task, {})
     networks = ['224.0.0.0/3', '127.0.0.0/8']
     for network in networks:
         checker.networks = [{'id': 1, 'cidr': network, 'name': 'fake'}]
         self.assertRaises(errors.NetworkCheckError,
                           checker.check_network_classes_exclude_loopback)
     self.assertEqual(mocked_db.call_count, 4)
    def test_check_calculated_network_cidr(self, mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.99.0/16',
                             'name': 'storage',
                             'gateway': '192.168.0.1',
                             'vlan_start': 1}]

        self.assertRaises(errors.NetworkCheckError,
                          checker.check_calculated_network_cidr)
Esempio n. 10
0
    def test_check_network_addresses_not_match_subnet_and_broadcast(self,
                                                                    mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'gateway': '192.168.0.1',
                             'name': 'fake1',
                             'meta': {'notation': 'ip_ranges'}}]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'gateway': '192.168.0.0',
                             'name': 'fake1',
                             'meta': {'notation': 'ip_ranges'}}]
        self.assertRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'ip_ranges': ['192.168.0.1', '192.168.0.100'],
                             'gateway': '192.168.0.0',
                             'name': 'fake1',
                             'meta': {'notation': 'ip_ranges'}}]
        self.assertRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'ip_ranges': ['192.168.1.1', '192.168.1.100'],
                             'gateway': '192.168.0.1',
                             'name': 'fake1',
                             'meta': {'notation': 'ip_ranges'}}]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_network_addresses_not_match_subnet_and_broadcast)
Esempio n. 11
0
    def test_check_calculated_network_cidr(self, mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.99.0/16',
                             'name': 'storage',
                             'gateway': '192.168.0.1',
                             'vlan_start': 1}]

        self.assertRaises(errors.NetworkCheckError,
                          checker.check_calculated_network_cidr)
Esempio n. 12
0
 def test_neutron_check_gateways_gw_outside(self, get_by_cluster_id_mock,
                                            mocked_db):
     checker = NetworkCheck(self.task, {})
     checker.networks = [{'id': 1,
                          'cidr': '192.168.0.0/24',
                          'gateway': '192.168.1.1',
                          'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                          }]
     nodegroup_mock = MagicMock(**{'count.return_value': 2})
     get_by_cluster_id_mock.return_value = nodegroup_mock
     self.assertRaises(errors.NetworkCheckError,
                       checker.neutron_check_gateways)
Esempio n. 13
0
    def test_check_vlan_ids_range_and_intersection(self, mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fixed',
                             'gateway': '192.168.0.1',
                             'vlan_start': 200}]
        checker.network_config['fixed_networks_vlan_start'] = 2
        checker.network_config['fixed_networks_amount'] = 10

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_vlan_ids_range_and_intersection)
Esempio n. 14
0
 def test_neutron_check_gateways_gw_outside(self, get_by_cluster_id_mock,
                                            mocked_db):
     checker = NetworkCheck(self.task, {})
     checker.networks = [{'id': 1,
                          'cidr': '192.168.0.0/24',
                          'gateway': '192.168.1.1',
                          'meta': {'notation': consts.NETWORK_NOTATION.cidr}
                          }]
     nodegroup_mock = MagicMock(**{'count.return_value': 2})
     get_by_cluster_id_mock.return_value = nodegroup_mock
     self.assertRaises(errors.NetworkCheckError,
                       checker.neutron_check_gateways)
Esempio n. 15
0
    def test_check_vlan_ids_range_and_intersection(self, mocked_db):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fixed',
                             'gateway': '192.168.0.1',
                             'vlan_start': 200}]
        checker.network_config['fixed_networks_vlan_start'] = 2
        checker.network_config['fixed_networks_amount'] = 10

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_vlan_ids_range_and_intersection)
Esempio n. 16
0
    def test_check_ironic_intersect_with_baremetal(self, mocked_db):
        cluster = self.env.create(
            nodes_kwargs=[
                {'roles': ['controller'], 'pending_addition': True},
                {'roles': ['compute'], 'pending_addition': True},
            ],
            cluster_kwargs={'editable_attributes': {
                'additional_components': {'ironic': {'value': True}}}}
        )
        cluster_db = self.db.query(Cluster).get(cluster['id'])

        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.network_config['baremetal_range'] = ['192.168.3.52',
                                                     '192.168.3.254']
        checker.network_config['baremetal_gateway'] = '192.168.3.51'
        checker.networks = [
            {'id': 1,
             'cidr': '192.168.0.0/24',
             'name': 'public',
             'gateway': '192.168.0.1',
             'ip_ranges': ['192.168.0.1', '192.168.0.100'],
             'meta': {'notation': 'cidr'}},
            {'cidr': '192.168.3.0/24',
             'gateway': None,
             'group_id': 2,
             'id': 11,
             'ip_ranges': [['192.168.3.1', '192.168.3.254']],
             'meta': {
                 'cidr': '192.168.3.0/24',
                 'configurable': True,
                 'ip_range': ['192.168.3.2', '192.168.3.50'],
                 'map_priority': 2,
                 'name': 'baremetal',
                 'notation': 'ip_ranges',
                 'render_type': None,
                 'restrictions': [
                     {'condition':
                      'settings:additional_components.ironic.value == false'}],
                 'use_gateway': False,
                 'vlan_start': 104},
             'name': 'baremetal',
             'vlan_start': 105}]
        self.assertRaises(
            errors.NetworkCheckError,
            checker.neutron_check_l3_addresses_not_match_subnet_and_broadcast)
Esempio n. 17
0
    def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
            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'},
            {'cidr': '192.168.3.0/24',
             'gateway': None,
             'group_id': 2,
             'id': 11,
             'ip_ranges': [['192.168.3.1', '192.168.3.50']],
             'meta': {
                 'cidr': '192.168.3.0/24',
                 'configurable': True,
                 'ip_range': ['192.168.3.2', '192.168.3.50'],
                 'map_priority': 2,
                 'name': 'baremetal',
                 'notation': 'ip_ranges',
                 'render_type': None,
                 'restrictions': [
                     {'condition':
                      'settings:additional_components.ironic.value == false'}],
                 'use_gateway': False,
                 'vlan_start': 104},
             'name': 'baremetal',
             'vlan_start': 105}]

        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), 3)
Esempio n. 18
0
    def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
            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), 3)
Esempio n. 19
0
    def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
            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), 3)
Esempio n. 20
0
    def test_check_untagged_intersection(self):
        cluster = self.env.create(
            nodes_kwargs=[
                {'roles': ['controller'], 'pending_addition': True}
            ]
        )
        cluster_db = self.db.query(Cluster).get(cluster['id'])
        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'vlan_start': None,
                             'meta': {'notation': 'cidr'}}]
        ng1 = NetworkGroup()
        ng1.name = 'fake3'
        ng1.id = 3
        ng2 = NetworkGroup()
        ng2.name = 'fake4'
        ng2.id = 4
        checker.cluster.nodes[0].interfaces[0].assigned_networks_list = \
            [ng1, ng2]

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_untagged_intersection)
Esempio n. 21
0
    def test_check_public_floating_ranges_intersection(self, _):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': ['192.168.0.1', '192.168.0.100'],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.0.100',
                                                     '192.168.0.199']
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_public_floating_ranges_intersection)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': [('192.168.0.1', '192.168.0.254')],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.2.0/24']
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_public_floating_ranges_intersection)
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': [('192.168.0.2', '192.168.0.254')],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.2.0/24']

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_public_floating_ranges_intersection)

        checker = NetworkCheck(self.task, {})

        # 'floating_ranges' and 'ip_ranges' have to be in the same 'cidr'
        # but don't intersect.
        checker.networks = [
            {'id': 1,
             'cidr': '192.168.0.0/25',
             'name': 'public',
             'gateway': '192.168.0.1',
             'ip_ranges': [['192.168.0.10', '192.168.0.40']],
             'meta': {'notation': 'cidr'},
             'group_id': 1,
             },
            {'id': 2,
             'cidr': '192.168.0.128/25',
             'name': 'public',
             'gateway': '192.168.0.129',
             'ip_ranges': [['192.168.0.130', '192.168.0.150']],
             'meta': {'notation': 'cidr'},
             'group_id': 2,
             }
        ]

        checker.network_config['floating_ranges'] = [
            ['192.168.0.50', '192.168.0.100'],
            ['192.168.0.160', '192.168.0.200']
        ]

        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Floating address ranges 192.168.0.50-192.168.0.100, "
            "192.168.0.160-192.168.0.200 are not in the same public CIDR.",
            checker.neutron_check_network_address_spaces_intersection)
Esempio n. 22
0
    def test_check_non_shared_networks_intersection(self, _):
        checker = NetworkCheck(self.task, {})
        networks = [
            {'id': 1,
             'cidr': '192.168.0.0/25',
             'name': consts.NETWORKS.public,
             'gateway': '192.168.0.1',
             'ip_ranges': [['192.168.0.10', '192.168.0.40']],
             'meta': {'notation': consts.NETWORK_NOTATION.ip_ranges},
             'vlan_start': 111,
             'group_id': 1,
             },
            {'id': 2,
             'cidr': '192.168.0.0/25',
             'name': consts.NETWORKS.management,
             'gateway': '192.168.0.2',
             'ip_ranges': [['192.168.0.50', '192.168.0.110']],
             'meta': {'notation': consts.NETWORK_NOTATION.ip_ranges},
             'vlan_start': 222,
             'group_id': 1,
             }
        ]
        # different networks from one node group, different gateways
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, management (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # different networks from different node groups, different gateways
        networks[1]['group_id'] = 2
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, management (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, different gateways
        networks[1]['name'] = consts.NETWORKS.public
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, public (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, same gateway
        networks[1]['gateway'] = '192.168.0.1'
        checker.networks = networks
        checker.network_config['floating_ranges'] = [
            ['192.168.0.111', '192.168.0.126']
        ]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_configuration)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, same gateway,
        # intersection in ip_ranges
        networks[1]['ip_ranges'] = [['192.168.0.30', '192.168.0.60']]
        checker.networks = networks
        checker.network_config['floating_ranges'] = [
            ['192.168.0.111', '192.168.0.126']
        ]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_configuration)
Esempio n. 23
0
 def test_check_network_classes_exclude_loopback(self):
     checker = NetworkCheck(self.task, {})
     checker.networks = [{'cidr': '192.168.0.0/24'}]
     self.assertNotRaises(errors.NetworkCheckError,
                          checker.check_network_classes_exclude_loopback)
Esempio n. 24
0
    def test_check_public_floating_ranges_intersection(self, _):
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': ['192.168.0.1', '192.168.0.100'],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.0.100',
                                                     '192.168.0.199']
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_public_floating_ranges_intersection)

        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': [('192.168.0.1', '192.168.0.254')],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.2.0/24']
        self.assertRaises(errors.NetworkCheckError,
                          checker.check_public_floating_ranges_intersection)
        checker = NetworkCheck(self.task, {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'public',
                             'gateway': '192.168.0.1',
                             'ip_ranges': [('192.168.0.2', '192.168.0.254')],
                             'meta': {'notation': 'cidr'}}]
        checker.network_config['floating_ranges'] = ['192.168.2.0/24']

        self.assertNotRaises(errors.NetworkCheckError,
                             checker.check_public_floating_ranges_intersection)

        checker = NetworkCheck(self.task, {})

        # 'floating_ranges' and 'ip_ranges' have to be in the same 'cidr'
        # but don't intersect.
        checker.networks = [
            {'id': 1,
             'cidr': '192.168.0.0/25',
             'name': 'public',
             'gateway': '192.168.0.1',
             'ip_ranges': [['192.168.0.10', '192.168.0.40']],
             'meta': {'notation': 'cidr'},
             'group_id': 1,
             },
            {'id': 2,
             'cidr': '192.168.0.128/25',
             'name': 'public',
             'gateway': '192.168.0.129',
             'ip_ranges': [['192.168.0.130', '192.168.0.150']],
             'meta': {'notation': 'cidr'},
             'group_id': 2,
             }
        ]

        checker.network_config['floating_ranges'] = [
            ['192.168.0.50', '192.168.0.100'],
            ['192.168.0.160', '192.168.0.200']
        ]

        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Floating address ranges 192.168.0.50-192.168.0.100, "
            "192.168.0.160-192.168.0.200 are not in the same public CIDR.",
            checker.neutron_check_network_address_spaces_intersection)
Esempio n. 25
0
 def test_check_network_classes_exclude_loopback(self):
     checker = NetworkCheck(self.task, {})
     checker.networks = [{'cidr': '192.168.0.0/24'}]
     self.assertNotRaises(errors.NetworkCheckError,
                          checker.check_network_classes_exclude_loopback)
Esempio n. 26
0
    def test_check_non_shared_networks_intersection(self, _):
        checker = NetworkCheck(self.task, {})
        networks = [
            {'id': 1,
             'cidr': '192.168.0.0/25',
             'name': consts.NETWORKS.public,
             'gateway': '192.168.0.1',
             'ip_ranges': [['192.168.0.10', '192.168.0.40']],
             'meta': {'notation': consts.NETWORK_NOTATION.ip_ranges},
             'vlan_start': 111,
             'group_id': 1,
             },
            {'id': 2,
             'cidr': '192.168.0.0/25',
             'name': consts.NETWORKS.management,
             'gateway': '192.168.0.2',
             'ip_ranges': [['192.168.0.50', '192.168.0.110']],
             'meta': {'notation': consts.NETWORK_NOTATION.ip_ranges},
             'vlan_start': 222,
             'group_id': 1,
             }
        ]
        # different networks from one node group, different gateways
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, management (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # different networks from different node groups, different gateways
        networks[1]['group_id'] = 2
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, management (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, different gateways
        networks[1]['name'] = consts.NETWORKS.public
        checker.networks = networks
        self.assertRaisesWithMessage(
            errors.NetworkCheckError,
            "Address space intersection between networks:\n"
            "public, public (Network IDs: 1, 2)",
            checker.neutron_check_network_address_spaces_intersection)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, same gateway
        networks[1]['gateway'] = '192.168.0.1'
        checker.networks = networks
        checker.network_config['floating_ranges'] = [
            ['192.168.0.111', '192.168.0.126']
        ]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_configuration)

        checker = NetworkCheck(self.task, {})
        # same networks from different node groups, same gateway,
        # intersection in ip_ranges
        networks[1]['ip_ranges'] = [['192.168.0.30', '192.168.0.60']]
        checker.networks = networks
        checker.network_config['floating_ranges'] = [
            ['192.168.0.111', '192.168.0.126']
        ]
        self.assertNotRaises(
            errors.NetworkCheckError,
            checker.check_configuration)