def __init__(self): if not data.DAO().exists(): self.namespace = [] self.namespace.append(ns.Namespace()) data.DAO(self).save() else: data.DAO().load(self)
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)
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)
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
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 ""
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"
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 ""
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"
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 ""
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 ""
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
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
def serialize(self): return data.DAO(self).serialize()