Example #1
0
def resume_node(name):
    check_not_null(name, "the image name cannot be null")

    try:
        __resume(name=name)
    except Exception as ex:
        raise RuntimeError(ex.__cause__)
Example #2
0
def get_control_ip(name):
    check_not_null(name, "the image name cannot be null")

    try:
        return __control_ip(name=name)
    except Exception as ex:
        raise RuntimeError(ex.__cause__)
Example #3
0
def _create_pair(ifname, peer, netns=None, mtu=1500):
    check_not_null(ifname, "the interface name cannot be null")
    check_not_null(peer, "the peer interface name cannot be null")

    def create():
        with IPRoute() as ipr:
            ipr.link("add", ifname=ifname, kind="veth", peer=peer)

            ifnet = ipr.link_lookup(ifname=ifname)[0]
            ifpeer = ipr.link_lookup(ifname=peer)[0]

            ipr.link("set", index=ifnet, mtu=mtu)
            ipr.link("set", index=ifnet, state="up")
            ipr.link("set", index=ifpeer, mtu=mtu)
            ipr.link("set", index=ifpeer, state="up")

    def create_ns():
        with NetNS(netns=netns) as ipr:
            ipr.link("add", ifname=ifname, kind="veth", peer=peer)

            ifnet = ipr.link_lookup(ifname=ifname)[0]
            ifpeer = ipr.link_lookup(ifname=peer)[0]

            ipr.link("set", index=ifnet, mtu=mtu)
            ipr.link("set", index=ifnet, state="up")
            ipr.link("set", index=ifpeer, mtu=mtu)
            ipr.link("set", index=ifpeer, state="up")

    if netns is None:
        create()
    else:
        create_ns()
Example #4
0
def create_node(name, image, **params):
    check_not_null(image, "the image value cannot be null")
    try:
        params.update(name=name, hostname=name)
        return __create(image=image, **params)
    except Exception as ex:
        raise RuntimeError(ex)
Example #5
0
def _create_bridge(ifname, slaves=None, netns=None, mtu=1500):
    check_not_null(ifname, "the interface name cannot be null")

    def create():
        with IPRoute() as ipr:
            ipr.link("add", ifname=ifname, kind="bridge")

            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("set", index=inet, mtu=mtu)

            if slaves is not None:
                for i in slaves:
                    port = ipr.link_lookup(ifname=i)[0]
                    ipr.link("set", index=port, master=inet)

            ipr.link("set", index=inet, state="up")

    def create_ns():
        with NetNS(netns=netns) as ipr:
            ipr.link("add", ifname=ifname, kind="bridge")

            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("set", index=inet, mtu=mtu)

            if slaves is not None:
                for i in slaves:
                    port = ipr.link_lookup(ifname=i)[0]
                    ipr.link("set", index=port, master=inet)

            ipr.link("set", index=inet, state="up")

    if netns is None:
        create()
    else:
        create_ns()
Example #6
0
def services_node(name):
    check_not_null(name, "the image name cannot be null")

    try:
        return __services(name=name)
    except Exception as ex:
        raise RuntimeError(ex.__cause__)
Example #7
0
def __rename(name, new_name):
    check_not_null(name, "the container name cannot be null")
    check_not_null(new_name, "the container new name cannot be null")

    client = docker.from_env()
    container = client.containers.get(container_id=name)
    container.rename(new_name)
Example #8
0
def _add_port_ns(ifname, netns, new_name=None):
    check_not_null(ifname, "the interface name cannot be null")
    check_not_null(netns, "the namespace node cannot be null")

    with IPRoute() as ipr:
        idx = ipr.link_lookup(ifname=ifname)[0]
        if new_name is not None:
            ipr.link('set',
                     index=idx,
                     net_ns_fd=netns,
                     ifname=new_name,
                     state="up")
        else:
            ipr.link('set', index=idx, net_ns_fd=netns, state="up")
Example #9
0
def _get_interface_addr(ifname, netns=None):
    check_not_null(ifname, "the interface name cannot be null")

    def get_addr():
        with IPRoute() as ipr:
            inet = ipr.get_addr(label=ifname)
            ret = inet[0]["attrs"][0][1]
            return ret

    def get_ns_addr():
        with NetNS(netns=netns) as ipr:
            inet = ipr.get_addr(label=ifname)
            ret = inet[0]["attrs"][0][1]
            return ret

    return (get_addr() if netns is None else get_ns_addr())
Example #10
0
def _delete_interface(ifname, netns=None):
    check_not_null(ifname, "the interface name cannot be null")

    def delport():
        with IPRoute() as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("del", index=inet)

    def delportns():
        with NetNS(netns=netns) as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("del", index=inet)

    if netns is None:
        delport()
    else:
        delportns()
Example #11
0
def _get_interface_mac(ifname, netns=None):
    check_not_null(ifname, "the interface name cannot be null")

    def get_mac():
        with IPRoute() as ipr:
            idx = ipr.link_lookup(ifname=ifname)
            inet = ipr.link("get", index=idx)
            ret = inet[0]['attrs'][18][1]
            return ret

    def get_mac_ns():
        with NetNS(netns=netns) as ipr:
            idx = ipr.link_lookup(ifname=ifname)
            inet = ipr.link("get", index=idx)
            ret = inet[0]['attrs'][19][1]
            return ret

    return (get_mac() if netns is None else get_mac_ns())
Example #12
0
def _switch_off(ifname, netns=None):
    check_not_null(ifname, "the interface name cannot be null")

    def switchoff():
        with IPRoute() as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("set", index=inet, state="down")
            ipr.close()

    def switchoffns():
        with NetNS(netns=netns) as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.link("set", index=inet, state="down")
            ipr.close()

    if netns is None:
        switchoff()
    else:
        switchoffns()
Example #13
0
def _bridge_del_port(master, slaves=[], netns=None):
    check_not_null(master, "the master bridge name cannot be null")

    def delport():
        with IPRoute() as ipr:
            for i in slaves:
                slave = ipr.link_lookup(ifname=i)[0]
                ipr.link("set", index=slave, master=0)

    def delportns():
        with NetNS(netns=netns) as ipr:
            for i in slaves:
                slave = ipr.link_lookup(ifname=i)[0]
                ipr.link("set", index=slave, master=0)

    if netns is None:
        delport()
    else:
        delportns()
Example #14
0
def _bridge_add_port(master, slaves=[], netns=None):
    check_not_null(master, "the master bridge name cannot be null")

    def addport():
        with IPRoute() as ipr:
            inet = ipr.link_lookup(ifname=master)[0]

            for i in slaves:
                slave = ipr.link_lookup(ifname=i)[0]
                ipr.link("set", index=slave, master=inet)

    def addporns():
        with NetNS(netns=netns) as ipr:
            inet = ipr.link_lookup(ifname=master)[0]

            for i in slaves:
                slave = ipr.link_lookup(ifname=i)[0]
                ipr.link("set", index=slave, master=inet)

    if netns is None:
        addport()
    else:
        addporns()
Example #15
0
def _config_ip_address(ifname, ip_addr, mask, gateway=None, netns=None):
    check_not_null(ifname, "the interface name cannot be null")
    check_not_null(ip_addr, "the ip address of the interface cannot be null")

    def configip():
        with IPRoute() as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.addr("add", index=inet, address=ip_addr, mask=int(mask))

            if gateway is not None:
                ipr.route("add", dst="default", gateway=gateway)

    def configipns():
        with NetNS(netns=netns) as ipr:
            inet = ipr.link_lookup(ifname=ifname)[0]
            ipr.addr("add", index=inet, address=ip_addr, mask=int(mask))

            if gateway is not None:
                ipr.route("add", dst="default", gateway=gateway)

    if netns is None:
        configip()
    else:
        configipns()
Example #16
0
def __control_ip(name):
    check_not_null(name, "the container name cannot be null")
    client = docker.from_env()
    container = client.containers.get(container_id=name)
    return container.attrs["NetworkSettings"]["IPAddress"]
Example #17
0
def run_cmd(name, cmd):
    check_not_null(name, "the image name cannot be null")
    try:
        return __exec(name=name, cmd=cmd)
    except Exception as ex:
        raise RuntimeError(ex.__cause__)
Example #18
0
def __services(name):
    check_not_null(name, "the container name cannot be null")
    client = docker.from_env()
    container = client.containers.get(container_id=name)
    return container.attrs["Config"]["ExposedPorts"]
Example #19
0
def get_shell(name, shell="bash"):
    check_not_null(name, "the image name cannot be null")
    try:
        __shell(name=name, shell=shell)
    except Exception as ex:
        raise RuntimeError(ex.__cause__)