def test_check_public_floating_ranges_intersection(self, mocked_db):
        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)
    def test_check_network_address_spaces_intersection(self, mocked_db):
        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)
Exemple #3
0
    def test_check_public_floating_ranges_intersection(self, mocked_db):
        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)
    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)
    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_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)
 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"])
     checker = NetworkCheck(FakeTask(cluster_db), {})
     checker.networks = [
         {
             "id": 1,
             "cidr": "192.168.0.0/24",
             "name": consts.NETWORKS.storage,
             "vlan_start": None,
             "meta": {"notation": "cidr"},
         },
         {
             "id": 2,
             "cidr": "192.168.0.0/26",
             "name": consts.NETWORKS.management,
             "vlan_start": None,
             "meta": {"notation": "cidr"},
         },
     ]
     ng1 = NetworkGroup()
     ng1.name = consts.NETWORKS.storage
     ng1.id = 1
     ng2 = NetworkGroup()
     ng2.name = consts.NETWORKS.management
     ng2.id = 2
     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)
 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_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'])
        checker = NetworkCheck(FakeTask(cluster_db), {})
        checker.networks = [{'id': 1,
                             'cidr': '192.168.0.0/24',
                             'name': 'fake1',
                             'vlan_start': None,
                             'meta': {'notation': 'cidr'}},
                            {'id': 2,
                             'cidr': '192.168.0.0/26',
                             'name': 'fake2',
                             'vlan_start': None,
                             'meta': {'notation': 'cidr'}}]
        ng1 = NetworkGroup()
        ng1.name = 'fake1'
        ng1.id = 1
        ng2 = NetworkGroup()
        ng2.name = 'fake2'
        ng2.id = 2
        checker.cluster.nodes[0].interfaces[0].assigned_networks_list = \
            [ng1, ng2]
        checker.cluster.nodes[0].interfaces[1].assigned_networks_list = \
            [ng1, ng2]

        self.assertRaises(errors.NetworkCheckError,
                          checker.check_untagged_intersection)
Exemple #11
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)
Exemple #12
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)
Exemple #13
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)
    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)
Exemple #15
0
 def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(self, mocked_db):
     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.networks = [{"id": 1, "cidr": "192.168.0.0/24", "gateway": "192.168.0.1", "name": "public"}]
     self.assertRaises(errors.NetworkCheckError, checker.neutron_check_l3_addresses_not_match_subnet_and_broadcast)
     self.assertEqual(len(checker.err_msgs), 2)
Exemple #16
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)
Exemple #18
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)
    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)
Exemple #20
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)
    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)
Exemple #22
0
    def test_check_public_floating_ranges_intersection(self, mocked_db):
        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)
Exemple #23
0
    def test_check_network_address_spaces_intersection(self, mocked_db):
        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)
Exemple #24
0
    def test_check_network_address_spaces_intersection(self, mocked_db):
        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)
Exemple #25
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)
 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)
    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)
 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)
Exemple #29
0
 def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
         self, mocked_db):
     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.networks = [{'id': 1,
                          'cidr': '192.168.0.0/24',
                          'gateway': '192.168.0.1',
                          'name': 'public'}]
     self.assertRaises(
         errors.NetworkCheckError,
         checker.neutron_check_l3_addresses_not_match_subnet_and_broadcast)
     self.assertEqual(len(checker.err_msgs), 2)
Exemple #30
0
 def test_neutron_check_l3_addresses_not_match_subnet_and_broadcast(
         self, mocked_db):
     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.networks = [{'id': 1,
                          'cidr': '192.168.0.0/24',
                          'gateway': '192.168.0.1',
                          'name': 'public'}]
     self.assertRaises(
         errors.NetworkCheckError,
         checker.neutron_check_l3_addresses_not_match_subnet_and_broadcast)
     self.assertEqual(len(checker.err_msgs), 2)
Exemple #31
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)
    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)
Exemple #33
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)
    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)
 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)
    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",
            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",
            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",
            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)
    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)
    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",
            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",
            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",
            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)