Example #1
0
    def get_default(self, node):
        if node.cluster and node.cluster.net_provider == 'neutron':
            network_manager = NeutronManager()
        else:
            network_manager = NetworkManager()

        return network_manager.get_default_networks_assignment(node)
Example #2
0
    def test_gre_get_default_nic_assignment(self):
        self.env.create(
            cluster_kwargs={
                'net_provider': 'neutron',
                'net_segment_type': 'gre'},
            nodes_kwargs=[
                {'api': True,
                 'pending_addition': True}
            ])
        node_db = self.env.nodes[0]

        admin_nic_id = node_db.admin_interface.id
        admin_nets = [n.name for n in self.db.query(
            NodeNICInterface).get(admin_nic_id).assigned_networks_list]

        other_nic = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id
        ).filter(
            not_(NodeNICInterface.id == admin_nic_id)
        ).first()
        other_nets = [n.name for n in other_nic.assigned_networks_list]

        nics = NeutronManager.get_default_networks_assignment(node_db)

        def_admin_nic = [n for n in nics if n['id'] == admin_nic_id]
        def_other_nic = [n for n in nics if n['id'] == other_nic.id]

        self.assertEquals(len(def_admin_nic), 1)
        self.assertEquals(len(def_other_nic), 1)
        self.assertEquals(
            set(admin_nets),
            set([n['name'] for n in def_admin_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(other_nets),
            set([n['name'] for n in def_other_nic[0]['assigned_networks']]))
Example #3
0
    def get_default(self, node):
        if node.cluster and node.cluster.net_provider == 'neutron':
            network_manager = NeutronManager()
        else:
            network_manager = NetworkManager()

        return network_manager.get_default_networks_assignment(node)
Example #4
0
    def test_gre_get_default_nic_assignment(self):
        self.env.create(cluster_kwargs={
            'net_provider': 'neutron',
            'net_segment_type': 'gre'
        },
                        nodes_kwargs=[{
                            'api': True,
                            'pending_addition': True
                        }])
        node_db = self.env.nodes[0]

        admin_nic_id = node_db.admin_interface.id
        admin_nets = [
            n.name for n in self.db.query(NodeNICInterface).get(
                admin_nic_id).assigned_networks_list
        ]

        other_nic = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id).filter(
                not_(NodeNICInterface.id == admin_nic_id)).first()
        other_nets = [n.name for n in other_nic.assigned_networks_list]

        nics = NeutronManager.get_default_networks_assignment(node_db)

        def_admin_nic = [n for n in nics if n['id'] == admin_nic_id]
        def_other_nic = [n for n in nics if n['id'] == other_nic.id]

        self.assertEquals(len(def_admin_nic), 1)
        self.assertEquals(len(def_other_nic), 1)
        self.assertEquals(
            set(admin_nets),
            set([n['name'] for n in def_admin_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(other_nets),
            set([n['name'] for n in def_other_nic[0]['assigned_networks']]))
    def test_get_default_nic_networkgroups(self):
        cluster = self.env.create_cluster(api=True,
                                          net_provider='neutron',
                                          net_segment_type='gre')
        node = self.env.create_node(api=True)
        node_db = self.env.nodes[0]

        admin_nic = node_db.admin_interface
        other_iface = self.db.query(NodeNICInterface).filter_by(
            node_id=node['id']
        ).filter(
            not_(NodeNICInterface.id == admin_nic.id)
        ).first()

        interfaces = deepcopy(node_db.meta['interfaces'])

        # allocate ip from admin subnet
        admin_ip = str(IPNetwork(
            NetworkManager.get_admin_network_group().cidr)[0])
        for interface in interfaces:
            if interface['mac'] == admin_nic.mac:
                # reset admin ip for previous admin interface
                interface['ip'] = None
            elif interface['mac'] == other_iface.mac:
                # set new admin interface
                interface['ip'] = admin_ip

        node_db.meta['interfaces'] = interfaces

        self.app.put(
            reverse('NodeCollectionHandler'),
            json.dumps([{
                        'mac': admin_nic.mac,
                        'meta': node_db.meta,
                        'is_agent': True,
                        'cluster_id': cluster["id"]
                        }]),
            headers=self.default_headers,
            expect_errors=True
        )

        new_main_nic_id = node_db.admin_interface.id
        admin_nets = [n.name for n in self.db.query(
            NodeNICInterface).get(new_main_nic_id).assigned_networks]
        other_nets = [n.name for n in other_iface.assigned_networks]

        nics = NeutronManager.get_default_networks_assignment(node_db)
        def_admin_nic = [n for n in nics if n['id'] == new_main_nic_id]
        def_other_nic = [n for n in nics if n['id'] == other_iface.id]

        self.assertEquals(len(def_admin_nic), 1)
        self.assertEquals(len(def_other_nic), 1)
        self.assertEquals(new_main_nic_id, other_iface.id)
        self.assertEquals(
            set(admin_nets),
            set([n['name'] for n in def_admin_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(other_nets),
            set([n['name'] for n in def_other_nic[0]['assigned_networks']]))
Example #6
0
    def test_vlan_get_default_nic_assignment(self):
        meta = self.env.default_metadata()
        self.env.set_interfaces_in_meta(
            meta,
            [{'name': 'eth0', 'mac': '00:00:00:00:00:11'},
             {'name': 'eth1', 'mac': '00:00:00:00:00:22'},
             {'name': 'eth2', 'mac': '00:00:00:00:00:33'}])
        self.env.create(
            cluster_kwargs={
                'net_provider': 'neutron',
                'net_segment_type': 'vlan'},
            nodes_kwargs=[
                {'api': True,
                 'meta': meta,
                 'pending_addition': True}
            ])
        node_db = self.env.nodes[0]

        admin_nic_id = node_db.admin_interface.id
        admin_nets = [n.name for n in self.db.query(
            NodeNICInterface).get(admin_nic_id).assigned_networks_list]

        other_nics = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id
        ).filter(
            not_(NodeNICInterface.id == admin_nic_id)
        ).all()
        priv_nic, other_nic = None, None
        for nic in other_nics:
            names = [n.name for n in nic.assigned_networks_list]
            if names == ['private']:
                priv_nic = nic
                prin_nets = names
            elif names:
                other_nic = nic
                other_nets = names

        self.assertTrue(priv_nic and other_nic)
        nics = NeutronManager.get_default_networks_assignment(node_db)
        def_admin_nic = [n for n in nics if n['id'] == admin_nic_id]
        def_priv_nic = [n for n in nics if n['id'] == priv_nic.id]
        def_other_nic = [n for n in nics if n['id'] == other_nic.id]

        self.assertEquals(len(def_admin_nic), 1)
        self.assertEquals(len(def_priv_nic), 1)
        self.assertEquals(len(def_other_nic), 1)
        self.assertEquals(
            set(admin_nets),
            set([n['name'] for n in def_admin_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(prin_nets),
            set([n['name'] for n in def_priv_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(other_nets),
            set([n['name'] for n in def_other_nic[0]['assigned_networks']]))
Example #7
0
    def test_vlan_get_default_nic_assignment(self):
        meta = self.env.default_metadata()
        self.env.set_interfaces_in_meta(meta, [{
            'name': 'eth0',
            'mac': '00:00:00:00:00:11'
        }, {
            'name': 'eth1',
            'mac': '00:00:00:00:00:22'
        }, {
            'name': 'eth2',
            'mac': '00:00:00:00:00:33'
        }])
        self.env.create(cluster_kwargs={
            'net_provider': 'neutron',
            'net_segment_type': 'vlan'
        },
                        nodes_kwargs=[{
                            'api': True,
                            'meta': meta,
                            'pending_addition': True
                        }])
        node_db = self.env.nodes[0]

        admin_nic_id = node_db.admin_interface.id
        admin_nets = [
            n.name for n in self.db.query(NodeNICInterface).get(
                admin_nic_id).assigned_networks_list
        ]

        other_nics = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id).filter(
                not_(NodeNICInterface.id == admin_nic_id)).all()
        other_nic, empty_nic = None, None
        for nic in other_nics:
            names = [n.name for n in nic.assigned_networks_list]
            if 'public' in names:
                other_nic = nic
                other_nets = names
            elif names == []:
                empty_nic = nic

        self.assertTrue(other_nic and empty_nic)
        nics = NeutronManager.get_default_networks_assignment(node_db)
        def_admin_nic = [n for n in nics if n['id'] == admin_nic_id]
        def_other_nic = [n for n in nics if n['id'] == other_nic.id]

        self.assertEquals(len(def_admin_nic), 1)
        self.assertEquals(len(def_other_nic), 1)
        self.assertEquals(
            set(admin_nets),
            set([n['name'] for n in def_admin_nic[0]['assigned_networks']]))
        self.assertEquals(
            set(other_nets),
            set([n['name'] for n in def_other_nic[0]['assigned_networks']]))
Example #8
0
    def check_networks_assignment(self, node_db):
        node_nics = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id).all()

        def_nics = NeutronManager.get_default_networks_assignment(node_db)

        self.assertEqual(len(node_nics), len(def_nics))
        for n_nic in node_nics:
            n_assigned = set(n['name'] for n in n_nic.assigned_networks)
            for d_nic in def_nics:
                if d_nic['id'] == n_nic.id:
                    d_assigned = set(n['name']
                                     for n in d_nic['assigned_networks']) \
                        if d_nic.get('assigned_networks') else set()
                    self.assertEqual(n_assigned, d_assigned)
                    break
            else:
                self.fail("NIC is not found")
    def check_networks_assignment(self, node_db):
        node_nics = self.db.query(NodeNICInterface).filter_by(
            node_id=node_db.id
        ).all()

        def_nics = NeutronManager.get_default_networks_assignment(node_db)

        self.assertEqual(len(node_nics), len(def_nics))
        for n_nic in node_nics:
            n_assigned = set(n['name'] for n in n_nic.assigned_networks)
            for d_nic in def_nics:
                if d_nic['id'] == n_nic.id:
                    d_assigned = set(n['name']
                                     for n in d_nic['assigned_networks']) \
                        if d_nic.get('assigned_networks') else set()
                    self.assertEqual(n_assigned, d_assigned)
                    break
            else:
                self.fail("NIC is not found")