Exemplo n.º 1
0
    def run(self):
        images = self.client.images()

        # Parse images information
        images_enhanced = []
        for img in images:
            for repotag in img["RepoTags"]:
                registry, repository = self.parse_repository(
                    ":".join(repotag.split(":")[:-1]))
                images_enhanced.append({"IMAGE ID": img["Id"][:10],
                                        "CREATED": img["Created"],
                                        "VIRTUAL SIZE": img["VirtualSize"],
                                        "TAG": repotag.split(":")[-1],
                                        "REPOSITORY": repository,
                                        "REGISTRY": registry,
                                        })

        # Sort images (with facilities for sort key)
        sort_by = self.args.sort_by
        for column in self._FIELDS_:
            if column.startswith(sort_by.upper()):
                sort_by = column
                break
        images = sorted(images_enhanced, key=lambda x: x.get(sort_by))

        # Print images information
        for img in images:
            img["VIRTUAL SIZE"] = ActionImages.printable_size(
                img["VIRTUAL SIZE"])
            img["CREATED"] = ActionImages.printable_date(img["CREATED"])

        Utils.print_table([self._FIELDS_] + [[img[k]
                                              for k in self._FIELDS_] for img in images])
Exemplo n.º 2
0
    def _clean_status_container(self, status):
        targets = []
        for container in self.client.containers(all=True):
            if container["Status"].startswith(status):
                # Sanitize
                if container["Names"] is None:
                    container["Names"] = ["NO_NAME"]
                targets.append(container)

        if len(targets) == 0:
            print "No containers %s found." % (status.lower())
            return

        # Display available elements
        print "%d containers %s founds." % (len(targets), status.lower())
        ligs = [["NAME", "IMAGE", "COMMAND"]]
        ligs += [[",".join(c["Names"]).replace("/", ""), c["Image"], c["Command"]]
                 for c in targets]
        Utils.print_table(ligs)

        if Utils.ask("Remove some of them", default="N"):
            for container in targets:
                if Utils.ask(
                        "\tRemove %s" % container["Names"][0].replace("/", ""),
                        default="N"):
                    # Force is false to avoid bad moves
                    print "\t-> Removing %s..." % container["Id"][:10]
                    self.client.remove_container(container["Id"], v=False,
                                                 link=False,
                                                 force=False)
Exemplo n.º 3
0
    def print_table(ligs):
        for lig_num, lig in enumerate(ligs):
            for element_num, element in enumerate(lig):
                ligs[lig_num][element_num] = ActionSearch._format_.get(element,
                                                                       element)

        Utils.print_table(ligs)
Exemplo n.º 4
0
from utils.utils import Utils
from utils.config import Config

from action import ACTIONS

if __name__ == "__main__":

    if len(sys.argv) < 2:
        print "Minimalist Docker client.\n"
        print "Actions:"
        # Sort actions by name and print them
        actions = [(a._name_, a._desc_) for _, a in sorted(ACTIONS.items(),
                                                           key=lambda x: x[0])]
        Utils.print_table(actions,
                          title=False,
                          separator=" ")
        exit(0)

    action = sys.argv[1]
    if action not in ACTIONS:
        # Try to guess action
        guessed = [act for act in ACTIONS.keys() if act.startswith(action)]
        if len(guessed) == 1:
            action = guessed[0]
        else:
            if len(guessed) == 0:
                print "Unknown action: %s" % action
            else:
                print "Ambiguous action: %s" % " ".join(guessed)
            exit(-1)