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])
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)
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)
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)