Skip to content

Commit

Permalink
tests: PEP8 cleanup of docker.py, mostly white space
Browse files Browse the repository at this point in the history
My editor keeps putting squiggly lines under a bunch of the python
lines to remind me how non-PEP8 compliant it is. Clean that up so it's
easier to spot new errors.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
  • Loading branch information
stsquad committed Feb 8, 2019
1 parent d10404b commit 432d8ad
Showing 1 changed file with 35 additions and 13 deletions.
48 changes: 35 additions & 13 deletions tests/docker/docker.py
Expand Up @@ -30,7 +30,7 @@
from io import StringIO
from shutil import copy, rmtree
from pwd import getpwuid
from datetime import datetime,timedelta
from datetime import datetime, timedelta


FILTERED_ENV_NAMES = ['ftp_proxy', 'http_proxy', 'https_proxy']
Expand All @@ -43,9 +43,11 @@ def _text_checksum(text):
"""Calculate a digest string unique to the text content"""
return hashlib.sha1(text).hexdigest()


def _file_checksum(filename):
return _text_checksum(open(filename, 'rb').read())


def _guess_docker_command():
""" Guess a working docker command or raise exception if not found"""
commands = [["docker"], ["sudo", "-n", "docker"]]
Expand All @@ -59,9 +61,10 @@ def _guess_docker_command():
except OSError:
pass
commands_txt = "\n".join([" " + " ".join(x) for x in commands])
raise Exception("Cannot find working docker command. Tried:\n%s" % \
raise Exception("Cannot find working docker command. Tried:\n%s" %
commands_txt)


def _copy_with_mkdir(src, root_dir, sub_path='.'):
"""Copy src into root_dir, creating sub_path as needed."""
dest_dir = os.path.normpath("%s/%s" % (root_dir, sub_path))
Expand Down Expand Up @@ -96,6 +99,7 @@ def _get_so_libs(executable):

return libs


def _copy_binary_with_libs(src, bin_dest, dest_dir):
"""Maybe copy a binary and all its dependent libraries.
Expand All @@ -117,7 +121,7 @@ def _copy_binary_with_libs(src, bin_dest, dest_dir):
if libs:
for l in libs:
so_path = os.path.dirname(l)
_copy_with_mkdir(l , dest_dir, so_path)
_copy_with_mkdir(l, dest_dir, so_path)


def _check_binfmt_misc(executable):
Expand All @@ -142,7 +146,7 @@ def _check_binfmt_misc(executable):
with open(binfmt_entry) as x: entry = x.read()

if re.search("flags:.*F.*\n", entry):
print("binfmt_misc for %s uses persistent(F) mapping to host binary\n" %
print("binfmt_misc for %s uses persistent(F) mapping to host binary" %
(binary))
return None, True

Expand All @@ -164,6 +168,7 @@ def _read_qemu_dockerfile(img_name):
img_name + ".docker")
return open(df, "r").read()


def _dockerfile_preprocess(df):
out = ""
for l in df.splitlines():
Expand All @@ -181,6 +186,7 @@ def _dockerfile_preprocess(df):
out += l + "\n"
return out


class Docker(object):
""" Running Docker commands """
def __init__(self):
Expand Down Expand Up @@ -248,7 +254,7 @@ def get_image_dockerfile_checksum(self, tag):

def build_image(self, tag, docker_dir, dockerfile,
quiet=True, user=False, argv=None, extra_files_cksum=[]):
if argv == None:
if argv is None:
argv = []

tmp_df = tempfile.NamedTemporaryFile(dir=docker_dir, suffix=".docker")
Expand All @@ -269,7 +275,7 @@ def build_image(self, tag, docker_dir, dockerfile,

tmp_df.flush()

self._do_check(["build", "-t", tag, "-f", tmp_df.name] + argv + \
self._do_check(["build", "-t", tag, "-f", tmp_df.name] + argv +
[docker_dir],
quiet=quiet)

Expand Down Expand Up @@ -299,35 +305,43 @@ def run(self, cmd, keep, quiet):
def command(self, cmd, argv, quiet):
return self._do([cmd] + argv, quiet=quiet)


class SubCommand(object):
"""A SubCommand template base class"""
name = None # Subcommand name
name = None # Subcommand name

def shared_args(self, parser):
parser.add_argument("--quiet", action="store_true",
help="Run quietly unless an error occurred")

def args(self, parser):
"""Setup argument parser"""
pass

def run(self, args, argv):
"""Run command.
args: parsed argument by argument parser.
argv: remaining arguments from sys.argv.
"""
pass


class RunCommand(SubCommand):
"""Invoke docker run and take care of cleaning up"""
name = "run"

def args(self, parser):
parser.add_argument("--keep", action="store_true",
help="Don't remove image when command completes")

def run(self, args, argv):
return Docker().run(argv, args.keep, quiet=args.quiet)


class BuildCommand(SubCommand):
""" Build docker image out of a dockerfile. Arguments: <tag> <dockerfile>"""
""" Build docker image out of a dockerfile. Arg: <tag> <dockerfile>"""
name = "build"

def args(self, parser):
parser.add_argument("--include-executable", "-e",
help="""Specify a binary that will be copied to the
Expand Down Expand Up @@ -392,8 +406,8 @@ def run(self, args, argv):
cksum += [(filename, _file_checksum(filename))]

argv += ["--build-arg=" + k.lower() + "=" + v
for k, v in os.environ.iteritems()
if k.lower() in FILTERED_ENV_NAMES]
for k, v in os.environ.iteritems()
if k.lower() in FILTERED_ENV_NAMES]
dkr.build_image(tag, docker_dir, dockerfile,
quiet=args.quiet, user=args.user, argv=argv,
extra_files_cksum=cksum)
Expand All @@ -402,9 +416,11 @@ def run(self, args, argv):

return 0


class UpdateCommand(SubCommand):
""" Update a docker image with new executables. Arguments: <tag> <executable>"""
""" Update a docker image with new executables. Args: <tag> <executable>"""
name = "update"

def args(self, parser):
parser.add_argument("tag",
help="Image Tag")
Expand Down Expand Up @@ -457,16 +473,20 @@ def run(self, args, argv):

return 0


class CleanCommand(SubCommand):
"""Clean up docker instances"""
name = "clean"

def run(self, args, argv):
Docker().clean()
return 0


class ImagesCommand(SubCommand):
"""Run "docker images" command"""
name = "images"

def run(self, args, argv):
return Docker().command("images", argv, args.quiet)

Expand Down Expand Up @@ -539,7 +559,7 @@ def run(self, args, argv):

try:
dkr = Docker()
except:
except subprocess.CalledProcessError:
print("Docker not set up")
return 1

Expand Down Expand Up @@ -578,7 +598,8 @@ def run(self, args, argv):

def main():
parser = argparse.ArgumentParser(description="A Docker helper",
usage="%s <subcommand> ..." % os.path.basename(sys.argv[0]))
usage="%s <subcommand> ..." %
os.path.basename(sys.argv[0]))
subparsers = parser.add_subparsers(title="subcommands", help=None)
for cls in SubCommand.__subclasses__():
cmd = cls()
Expand All @@ -589,5 +610,6 @@ def main():
args, argv = parser.parse_known_args()
return args.cmdobj.run(args, argv)


if __name__ == "__main__":
sys.exit(main())

0 comments on commit 432d8ad

Please sign in to comment.