Beispiel #1
0
def untag(shoebox_dir, tag):
    shoebox_dir = os.path.expanduser(shoebox_dir)
    container_dir = os.path.join(shoebox_dir, 'containers')

    if is_container_id(tag):
        raise RuntimeError('Tag cannot be a valid container id')

    tag_path = os.path.join(container_dir, tag)

    if os.path.islink(tag_path):
        os.unlink(tag_path)
Beispiel #2
0
def ls(shoebox_dir, quiet):
    shoebox_dir = os.path.expanduser(shoebox_dir)
    container_dir = os.path.join(shoebox_dir, 'containers')
    for container_id in os.listdir(container_dir):
        if is_container_id(container_id):
            if quiet:
                print container_id
                continue
            print 'container id:', container_id
            container = Container(shoebox_dir, container_id)
            tags = list(container.tags())
            if tags:
                print '  tags:', ' '.join(tags)
Beispiel #3
0
def tag_container(shoebox_dir, container_id, tag, force):
    shoebox_dir = os.path.expanduser(shoebox_dir)
    container_dir = os.path.join(shoebox_dir, 'containers')

    if not is_container_id(container_id):
        raise RuntimeError('Invalid container_id format')

    if is_container_id(tag):
        raise RuntimeError('Tag cannot be a valid container id')

    container_path = os.path.join(container_dir, container_id)
    tag_path = os.path.join(container_dir, tag)

    if not os.path.isdir(container_path):
        raise RuntimeError('Container does not exist')

    if os.path.exists(tag_path):
        if not force:
            raise RuntimeError('Tag already exists')
        else:
            os.unlink(tag_path)

    os.symlink(container_id, tag_path)
Beispiel #4
0
def ps(shoebox_dir):
    shoebox_dir = os.path.expanduser(shoebox_dir)
    container_dir = os.path.join(shoebox_dir, 'containers')
    for container_id in os.listdir(container_dir):
        if not is_container_id(container_id):
            continue
        container = Container(shoebox_dir, container_id)
        pid = container.pid()
        if not pid:
            continue
        print container_id
        ip = container.ip_address()
        if ip:
            print '  ip address:', ip
        tags = list(container.tags())
        if tags:
            print '  tags:', ' '.join(tags)
        print '  process tree:'
        pstree = subprocess.check_output(['pstree', '-ap', str(pid)])
        for line in pstree.splitlines():
            print '    ' + line
        print