def image_delete_and_containers(image): """ WARNING: This will remove an image and all its dependant containers """ for container in utils.extract_column(utils.filter_column(utils.Command('docker ps').stdout, 1, eq=image), -1): container_stop(container) for container in utils.extract_column(utils.filter_column(utils.Command('docker ps -a').stdout, 1, eq=image), -1): container_delete(container) return image_delete(image)
def get_networks(filter=None, driver=None): docker_cmd = 'docker network ls' if driver: networks = utils.extract_column(utils.filter_column(utils.Command(docker_cmd).stdout, 2, 1, eq=driver), 1) else: networks = utils.Command(docker_cmd).stdout_column(1, 1) if filter: if isinstance(filter, basestring): return [x for x in networks if filter in x] else: return [x for x in networks if x in filter] return networks
def get_containers(filter=None, image=None, all=True): """ Get containers names, with optional filter on name. :param filter: if string, get containers names containing it, if python container (list, set, ...), get containers in this set. :param image: if string, get containers from this image (ignore filter). :param all: if False, get only running containers, else get all containers. :return: a list of containers names """ docker_cmd = 'docker ps -a' if all else 'docker ps' if image: return utils.extract_column(utils.filter_column(utils.Command(docker_cmd).stdout, 1, eq=image), -1) else: containers = utils.Command(docker_cmd).stdout_column(-1, 1) if filter: if isinstance(filter, basestring): return [x for x in containers if filter in x] else: return [x for x in containers if x in filter] return containers
def get_version(app, container): output = docker_exec('apt-cache policy {}'.format(app), container, user='******') try: return utils.extract_column(utils.filter_column(output, 0, startswith='Install'), 1, sep=':')[0] except IndexError: pass