docker: docker.py add check sub-command
This command allows you to check if we need to re-build a docker image. If the image isn't in the repository or the checksums don't match then we return false and some text (for processing in makefiles). Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
f9172822e7
commit
f97da1f717
@ -184,8 +184,14 @@ class Docker(object):
|
||||
stderr=subprocess.STDOUT,
|
||||
**kwargs)
|
||||
|
||||
def inspect_tag(self, tag):
|
||||
try:
|
||||
return self._output(["inspect", tag])
|
||||
except subprocess.CalledProcessError:
|
||||
return None
|
||||
|
||||
def get_image_dockerfile_checksum(self, tag):
|
||||
resp = self._output(["inspect", tag])
|
||||
resp = self.inspect_tag(tag)
|
||||
labels = json.loads(resp)[0]["Config"].get("Labels", {})
|
||||
return labels.get("com.qemu.dockerfile-checksum", "")
|
||||
|
||||
@ -447,6 +453,36 @@ class CcCommand(SubCommand):
|
||||
return Docker().command("run", cmd, args.quiet)
|
||||
|
||||
|
||||
class CheckCommand(SubCommand):
|
||||
"""Check if we need to re-build a docker image out of a dockerfile.
|
||||
Arguments: <tag> <dockerfile>"""
|
||||
name = "check"
|
||||
|
||||
def args(self, parser):
|
||||
parser.add_argument("tag",
|
||||
help="Image Tag")
|
||||
parser.add_argument("dockerfile",
|
||||
help="Dockerfile name")
|
||||
|
||||
def run(self, args, argv):
|
||||
dockerfile = open(args.dockerfile, "rb").read()
|
||||
tag = args.tag
|
||||
|
||||
dkr = Docker()
|
||||
info = dkr.inspect_tag(tag)
|
||||
if info is None:
|
||||
print("Image does not exist")
|
||||
return 1
|
||||
|
||||
if dkr.image_matches_dockerfile(tag, dockerfile):
|
||||
if not args.quiet:
|
||||
print("Image is up to date")
|
||||
return 0
|
||||
else:
|
||||
print("Image needs updating")
|
||||
return 1
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="A Docker helper",
|
||||
usage="%s <subcommand> ..." % os.path.basename(sys.argv[0]))
|
||||
|
Loading…
Reference in New Issue
Block a user