コード例 #1
0
    def __init__(self):
        if not data.DAO().exists():
            self.namespace = []
            self.namespace.append(ns.Namespace())
            data.DAO(self).save()

        else:
            data.DAO().load(self)
コード例 #2
0
    def __init__(self):
        if not data.DAO().exists():
            self.pools = []
            self.pools.append(
                pool.Pool("default",
                          ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]))
            data.DAO(self).save()
            data.DAO().load(self)

        else:
            data.DAO().load(self)
コード例 #3
0
    def __init__(self):
        if not data.DAO().exists():
            self.channels = []
            self.channels.append(
                channel.Channel("default", ['http://hcli.io'],
                                ['http://hcli.io']))
            data.DAO(self).save()
            data.DAO().load(self)

        else:
            data.DAO().load(self)
コード例 #4
0
    def release(self, channelname):
        for pindex, c in enumerate(self.channels):
            if c["name"] == channelname:
                c["ptt"] = "inactive"
                data.DAO(self).save()
                return True

        return False
コード例 #5
0
    def removeLogicalGroup(self, groupname):
        cleanname = groupname.replace("'", "").replace("\"", "")
        for pindex, pool in enumerate(self.pools):
            if pool["name"] == cleanname:
                del self.pools[pindex]
                data.DAO(self).save()
                return cleanname + "\n"

        return ""
コード例 #6
0
    def createLogicalGroup(self, groupname):
        cleanname = groupname.replace("'", "").replace("\"", "")
        for pindex, p in enumerate(self.pools):
            if p["name"] == cleanname:
                return ""

        self.pools.append(pool.Pool(cleanname))
        data.DAO(self).save()
        return cleanname + "\n"
コード例 #7
0
    def removeLogicalChannel(self, channelname):
        cleanname = channelname.replace("'", "").replace("\"", "")
        for pindex, channel in enumerate(self.channels):
            if channel["name"] == cleanname:
                del self.channels[pindex]
                data.DAO(self).save()
                return cleanname + "\n"

        return ""
コード例 #8
0
    def createLogicalChannel(self, channelname):
        cleanname = channelname.replace("'", "").replace("\"", "")
        for pindex, p in enumerate(self.channels):
            if p["name"] == cleanname:
                return ""

        self.channels.append(channel.Channel(cleanname))
        data.DAO(self).save()
        return cleanname + "\n"
コード例 #9
0
    def renameLogicalGroup(self, oldname, newname):
        cleanold = oldname.replace("'", "").replace("\"", "")
        cleannew = newname.replace("'", "").replace("\"", "")

        for pindex, p in enumerate(self.pools):
            if p["name"] == cleannew:
                return ""

        for pindex, p in enumerate(self.pools):
            if p["name"] == cleanold:
                p["name"] = cleannew
                data.DAO(self).save()
                return cleannew + "\n"

        return ""
コード例 #10
0
    def addSpecificFreeNetwork(self, groupname, network):
        network = network.replace("'", "").replace("\"", "")
        ipnetwork = ip_network(network)
        prefix = network.split("/")[1]
        for pindex, pool in enumerate(self.pools):
            if pool["name"] == groupname.replace("'", "").replace("\"", ""):
                for index, value in enumerate(pool["free"]):
                    ipnetworks = ip_network(pool["free"][index])
                    if ipnetwork.overlaps(ipnetworks):
                        return ""
                for jindex, jvalue in enumerate(pool["allocated"]):
                    jipnetworks = ip_network(pool["allocated"][jindex])
                    if ipnetwork.overlaps(jipnetworks):
                        return ""

                pool["free"].append(network)
                self.compactFreeNetworks(groupname)
                data.DAO(self).save()
                return network + "\n"

        return ""
コード例 #11
0
    def allocateSpecificNetwork(self, groupname, network):
        subnet = ""
        network = network.replace("'", "").replace("\"", "")
        ipnetwork = ip_network(network)
        prefix = network.split("/")[1]
        for pindex, pool in enumerate(self.pools):
            if pool["name"] == groupname.replace("'", "").replace("\"", ""):
                for index, value in enumerate(pool["free"]):
                    ip = ip_network(pool["free"][index])
                    try:
                        s = list(ip.subnets(new_prefix=int(prefix)))
                        if len(s) != 0:
                            if ipnetwork in s:
                                if str(ipnetwork) not in pool["allocated"]:
                                    pool["allocated"].append(str(ipnetwork))
                                else:
                                    return subnet
                                pool["free"].remove(value)
                                s.remove(ipnetwork)
                                t = collapse_addresses(s)
                                for i in t:
                                    try:
                                        if i not in pool["free"]:
                                            pool["free"].append(str(i))
                                    except:
                                        pass

                                pool["free"].sort(key=lambda network: int(
                                    network.split("/")[1]),
                                                  reverse=True)
                                data.DAO(self).save()
                                subnet = subnet + str(ipnetwork) + "\n"
                                return subnet

                        else:
                            return subnet
                    except:
                        pass

        return subnet
コード例 #12
0
    def deallocateSpecificNetwork(self, groupname, network):
        self.compactFreeNetworks(groupname)
        subnet = ""
        network = network.replace("'", "").replace("\"", "")
        prefix = network.split("/")[1]
        for pindex, pool in enumerate(self.pools):
            if pool["name"] == groupname.replace("'", "").replace("\"", ""):
                for index, value in enumerate(pool["allocated"]):
                    ip = pool["allocated"][index]
                    try:
                        if network == ip:
                            pool["allocated"].remove(network)
                            pool["free"].append(network)
                            self.compactFreeNetworks(groupname)
                            data.DAO(self).save()
                            subnet = subnet + network + "\n"
                            return subnet

                    except:
                        pass

        return subnet
コード例 #13
0
ファイル: namespace.py プロジェクト: cometaj2/hcli_core
 def serialize(self):
     return data.DAO(self).serialize()