view portops.py @ 12:1730494d9ecc

add create
author taiki
date Mon, 02 Feb 2015 16:38:32 +0900
parents
children 8e1f57c91210
line wrap: on
line source

#!/usr/bin/python

portlist_file = "iedockerport.list"
testuser = "testuser"
delimiter = ","

def remove_port_list(user, projectname):
    portlist = read_port_list()
    delete_line = ""
    release_port = ""
    for port in portlist:
        portline = port.split(delimiter)
        if (len(portline) < 3):
            continue
        if (portline[1] == user and portline[2] == projectname):
            delete_line = port
            release_port = portline[0]
            break

    if release_port == "":
        print("[!] No remove port.")
        return
    portlist.remove(delete_line)
    portlist.append(release_port)
    write_port_list(portlist)

def read_port_list():
    f = open(portlist_file, "r")
    portlist = []
    for port in f:
        portlist.append(port.rstrip())
    f.close()
    return portlist

def write_port_list(portlist):
    portlist_tmp = []
    for port in portlist:
        portlist_tmp.append(port + "\n")
    f = open(portlist_file, "w")
    f.writelines(portlist_tmp)
    f.close()

def is_limit(portlist, user):
    count = 0
    for port in portlist:
        portline = port.split(delimiter)
        if len(portline) < 2:
            continue
        if portline[1] == user:
            count = count + 1
    if count < 4:
        return True
    else:
        return False

def mark_use_port(user, projectname):
    portlist = read_port_list()
    port_num = ""
    for port in portlist:
        portline = port.split(delimiter)
        if len(portline) == 1:
            port_num = portline[0]
            break
    portlist.remove(port_num)
    portlist.append(port_num + delimiter + user + delimiter + projectname)
    write_port_list(portlist)

def get_marked_port(user):
    ports = read_port_list()
    for port in ports:
        portline = port.split(delimiter)
        if len(portline) < 2:
            continue
        if portline[1] == user:
            return portline[0]

def reserve_port(user, projectname):
    portlist = read_port_list()
    if not is_limit(portlist, user):
        return False
    mark_use_port(user,projectname)
    return True

if __name__ == "__main__":
    print("put test source.")
    remove_port_list("taira", "sample")