コード例 #1
0
        def handler():
            node = models.Node(mac='60:a4:4c:35:28:95',
                               timestamp=datetime.datetime.now())

            node.attributes = models.IPAddr()
            db.add(node)
            db.flush()
コード例 #2
0
    def assign_ips_in_node_group(cls, net_id, net_name, node_ids, ip_ranges):
        """Assigns IP addresses for nodes in given network."""
        ips_by_node_id = db().query(
            models.IPAddr.ip_addr,
            models.IPAddr.node).filter_by(network=net_id)

        nodes_dont_need_ip = set()
        ips_in_use = set()
        for ip_str, node_id in ips_by_node_id:
            ip_addr = netaddr.IPAddress(ip_str)
            for ip_range in ip_ranges:
                if ip_addr in ip_range:
                    nodes_dont_need_ip.add(node_id)
                    ips_in_use.add(ip_str)

        nodes_need_ip = node_ids - nodes_dont_need_ip

        free_ips = cls.get_free_ips_from_ranges(net_name, ip_ranges,
                                                ips_in_use, len(nodes_need_ip))

        for ip, node_id in zip(free_ips, nodes_need_ip):
            logger.info("Assigning IP for node '{0}' in network '{1}'".format(
                node_id, net_name))
            ip_db = models.IPAddr(node=node_id, ip_addr=ip, network=net_id)
            db().add(ip_db)
        db().flush()
コード例 #3
0
    def test_delete_network_group_cleanup_ip_addrs(self):
        ng_id = self.env._create_network_group().json["id"]
        node = self.env.create_node(api=False)

        ip_address = []
        for ip_addr in ('10.3.0.2', '10.3.0.3'):
            ip_addr_data = {'network': ng_id,
                            'node': node.id,
                            'ip_addr': ip_addr}
            ip_address.append(ip_addr_data)

        self.db.add_all([models.IPAddr(**ips) for ips in ip_address])
        self.db.flush()

        self.app.delete(
            reverse(
                'NetworkGroupHandler',
                kwargs={'obj_id': ng_id}
            ),
            headers=self.default_headers,
        )
        ips_db = self.db.query(models.IPAddr)\
            .filter_by(network=ng_id)\
            .all()
        self.assertFalse(ips_db)
コード例 #4
0
ファイル: handlers.py プロジェクト: zhadaevfm/octane
    def copy_vips(orig_cluster, new_cluster):
        orig_vips = {}
        for ng in orig_cluster.network_groups:
            vips = db.query(models.IPAddr).filter(
                models.IPAddr.network == ng.id,
                models.IPAddr.node.is_(None),
                models.IPAddr.vip_type.isnot(None),
            ).all()
            orig_vips[ng.name] = list(vips)

        new_vips = []
        for ng in new_cluster.network_groups:
            orig_ng_vips = orig_vips.get(ng.name)
            for vip in orig_ng_vips:
                ip_addr = models.IPAddr(
                    network=ng.id,
                    ip_addr=vip.ip_addr,
                    vip_type=vip.vip_type,
                )
                new_vips.append(ip_addr)
        db.add_all(new_vips)
        db.commit()
コード例 #5
0
        def handler():
            ip_addr = models.IPAddr()

            ip_addr.network_data = models.IPAddr()
            db.add(ip_addr)
            db.flush()