[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 5/6] tests/docker/docker.py: expand images command
From: |
Alex Bennée |
Subject: |
[Qemu-devel] [PATCH 5/6] tests/docker/docker.py: expand images command |
Date: |
Fri, 28 Oct 2016 17:33:38 +0100 |
Modern docker cli commands can filter by repository but as we want to
work on all instances do this by hand in python:
/tests/docker/docker.py images --repo qemu
Will return a space delimited list for the benefit of our Makefile
recipes.
Signed-off-by: Alex Bennée <address@hidden>
---
tests/docker/docker.py | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 37d8319..03c0238 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -105,12 +105,15 @@ class Docker(object):
signal.signal(signal.SIGTERM, self._kill_instances)
signal.signal(signal.SIGHUP, self._kill_instances)
- def _do(self, cmd, quiet=True, infile=None, **kwargs):
+ def _do(self, cmd, quiet=True, infile=None, output=False, **kwargs):
if quiet:
kwargs["stdout"] = DEVNULL
if infile:
kwargs["stdin"] = infile
- return subprocess.call(self._command + cmd, **kwargs)
+ if output:
+ return subprocess.check_output(self._command + cmd, **kwargs)
+ else:
+ return subprocess.call(self._command + cmd, **kwargs)
def _do_kill_instances(self, only_known, only_active=True):
cmd = ["ps", "-q"]
@@ -188,8 +191,8 @@ class Docker(object):
self._instances.remove(label)
return ret
- def command(self, cmd, argv, quiet):
- return self._do([cmd] + argv, quiet=quiet)
+ def command(self, cmd, argv, quiet, output=False):
+ return self._do([cmd] + argv, quiet=quiet, output=output)
class SubCommand(object):
"""A SubCommand template base class"""
@@ -325,8 +328,22 @@ class CleanCommand(SubCommand):
class ImagesCommand(SubCommand):
"""Run "docker images" command"""
name = "images"
+ def args(self, parser):
+ parser.add_argument("--repo",
+ help="List images in the given repository")
+
def run(self, args, argv):
- return Docker().command("images", argv, args.quiet)
+ if args.repo:
+ images=[]
+ image_re = re.compile(r"^"+re.escape(args.repo)+r"\s+(\S*)")
+ output = Docker().command("images", argv, args.quiet, output=True)
+ for line in output.split("\n"):
+ search = image_re.search(line)
+ if search:
+ images.append(search.group(1))
+ print ' '.join(map(str,images))
+ else:
+ return Docker().command("images", argv, args.quiet)
def main():
parser = argparse.ArgumentParser(description="A Docker helper",
--
2.10.1
- [Qemu-devel] [PATCH 0/6] Expand the building of qemu-user docker images, Alex Bennée, 2016/10/28
- [Qemu-devel] [PATCH 1/6] tests/docker/Makefile.include: fix diff-index call, Alex Bennée, 2016/10/28
- [Qemu-devel] [PATCH 6/6] tests/docker/Makefile.include: expand docker help text, Alex Bennée, 2016/10/28
- [Qemu-devel] [PATCH 4/6] tests/docker/Makefile: Add a rule for Debian user images, Alex Bennée, 2016/10/28
- [Qemu-devel] [PATCH 5/6] tests/docker/docker.py: expand images command,
Alex Bennée <=
- [Qemu-devel] [PATCH 3/6] tests/docker: add optional libs to travis.docker, Alex Bennée, 2016/10/28
- [Qemu-devel] [PATCH 2/6] tests/docker/test-user: a simple linux-user test, Alex Bennée, 2016/10/28
- Re: [Qemu-devel] [PATCH 0/6] Expand the building of qemu-user docker images, Fam Zheng, 2016/10/30