tests: PEP8 cleanup of docker.py, mostly white space

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>
This commit is contained in:
Alex Bennée 2019-01-23 17:13:55 +00:00
parent d10404b193
commit 432d8ad5f6

View file

@ -30,7 +30,7 @@ except ImportError:
from io import StringIO from io import StringIO
from shutil import copy, rmtree from shutil import copy, rmtree
from pwd import getpwuid from pwd import getpwuid
from datetime import datetime,timedelta from datetime import datetime, timedelta
FILTERED_ENV_NAMES = ['ftp_proxy', 'http_proxy', 'https_proxy'] FILTERED_ENV_NAMES = ['ftp_proxy', 'http_proxy', 'https_proxy']
@ -43,9 +43,11 @@ def _text_checksum(text):
"""Calculate a digest string unique to the text content""" """Calculate a digest string unique to the text content"""
return hashlib.sha1(text).hexdigest() return hashlib.sha1(text).hexdigest()
def _file_checksum(filename): def _file_checksum(filename):
return _text_checksum(open(filename, 'rb').read()) return _text_checksum(open(filename, 'rb').read())
def _guess_docker_command(): def _guess_docker_command():
""" Guess a working docker command or raise exception if not found""" """ Guess a working docker command or raise exception if not found"""
commands = [["docker"], ["sudo", "-n", "docker"]] commands = [["docker"], ["sudo", "-n", "docker"]]
@ -59,9 +61,10 @@ def _guess_docker_command():
except OSError: except OSError:
pass pass
commands_txt = "\n".join([" " + " ".join(x) for x in commands]) 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) commands_txt)
def _copy_with_mkdir(src, root_dir, sub_path='.'): def _copy_with_mkdir(src, root_dir, sub_path='.'):
"""Copy src into root_dir, creating sub_path as needed.""" """Copy src into root_dir, creating sub_path as needed."""
dest_dir = os.path.normpath("%s/%s" % (root_dir, sub_path)) dest_dir = os.path.normpath("%s/%s" % (root_dir, sub_path))
@ -96,6 +99,7 @@ def _get_so_libs(executable):
return libs return libs
def _copy_binary_with_libs(src, bin_dest, dest_dir): def _copy_binary_with_libs(src, bin_dest, dest_dir):
"""Maybe copy a binary and all its dependent libraries. """Maybe copy a binary and all its dependent libraries.
@ -117,7 +121,7 @@ def _copy_binary_with_libs(src, bin_dest, dest_dir):
if libs: if libs:
for l in libs: for l in libs:
so_path = os.path.dirname(l) 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): def _check_binfmt_misc(executable):
@ -142,7 +146,7 @@ def _check_binfmt_misc(executable):
with open(binfmt_entry) as x: entry = x.read() with open(binfmt_entry) as x: entry = x.read()
if re.search("flags:.*F.*\n", entry): 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)) (binary))
return None, True return None, True
@ -164,6 +168,7 @@ def _read_qemu_dockerfile(img_name):
img_name + ".docker") img_name + ".docker")
return open(df, "r").read() return open(df, "r").read()
def _dockerfile_preprocess(df): def _dockerfile_preprocess(df):
out = "" out = ""
for l in df.splitlines(): for l in df.splitlines():
@ -181,6 +186,7 @@ def _dockerfile_preprocess(df):
out += l + "\n" out += l + "\n"
return out return out
class Docker(object): class Docker(object):
""" Running Docker commands """ """ Running Docker commands """
def __init__(self): def __init__(self):
@ -248,7 +254,7 @@ class Docker(object):
def build_image(self, tag, docker_dir, dockerfile, def build_image(self, tag, docker_dir, dockerfile,
quiet=True, user=False, argv=None, extra_files_cksum=[]): quiet=True, user=False, argv=None, extra_files_cksum=[]):
if argv == None: if argv is None:
argv = [] argv = []
tmp_df = tempfile.NamedTemporaryFile(dir=docker_dir, suffix=".docker") tmp_df = tempfile.NamedTemporaryFile(dir=docker_dir, suffix=".docker")
@ -269,7 +275,7 @@ class Docker(object):
tmp_df.flush() 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], [docker_dir],
quiet=quiet) quiet=quiet)
@ -299,9 +305,11 @@ class Docker(object):
def command(self, cmd, argv, quiet): def command(self, cmd, argv, quiet):
return self._do([cmd] + argv, quiet=quiet) return self._do([cmd] + argv, quiet=quiet)
class SubCommand(object): class SubCommand(object):
"""A SubCommand template base class""" """A SubCommand template base class"""
name = None # Subcommand name name = None # Subcommand name
def shared_args(self, parser): def shared_args(self, parser):
parser.add_argument("--quiet", action="store_true", parser.add_argument("--quiet", action="store_true",
help="Run quietly unless an error occurred") help="Run quietly unless an error occurred")
@ -309,6 +317,7 @@ class SubCommand(object):
def args(self, parser): def args(self, parser):
"""Setup argument parser""" """Setup argument parser"""
pass pass
def run(self, args, argv): def run(self, args, argv):
"""Run command. """Run command.
args: parsed argument by argument parser. args: parsed argument by argument parser.
@ -316,18 +325,23 @@ class SubCommand(object):
""" """
pass pass
class RunCommand(SubCommand): class RunCommand(SubCommand):
"""Invoke docker run and take care of cleaning up""" """Invoke docker run and take care of cleaning up"""
name = "run" name = "run"
def args(self, parser): def args(self, parser):
parser.add_argument("--keep", action="store_true", parser.add_argument("--keep", action="store_true",
help="Don't remove image when command completes") help="Don't remove image when command completes")
def run(self, args, argv): def run(self, args, argv):
return Docker().run(argv, args.keep, quiet=args.quiet) return Docker().run(argv, args.keep, quiet=args.quiet)
class BuildCommand(SubCommand): 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" name = "build"
def args(self, parser): def args(self, parser):
parser.add_argument("--include-executable", "-e", parser.add_argument("--include-executable", "-e",
help="""Specify a binary that will be copied to the help="""Specify a binary that will be copied to the
@ -392,8 +406,8 @@ class BuildCommand(SubCommand):
cksum += [(filename, _file_checksum(filename))] cksum += [(filename, _file_checksum(filename))]
argv += ["--build-arg=" + k.lower() + "=" + v argv += ["--build-arg=" + k.lower() + "=" + v
for k, v in os.environ.iteritems() for k, v in os.environ.iteritems()
if k.lower() in FILTERED_ENV_NAMES] if k.lower() in FILTERED_ENV_NAMES]
dkr.build_image(tag, docker_dir, dockerfile, dkr.build_image(tag, docker_dir, dockerfile,
quiet=args.quiet, user=args.user, argv=argv, quiet=args.quiet, user=args.user, argv=argv,
extra_files_cksum=cksum) extra_files_cksum=cksum)
@ -402,9 +416,11 @@ class BuildCommand(SubCommand):
return 0 return 0
class UpdateCommand(SubCommand): 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" name = "update"
def args(self, parser): def args(self, parser):
parser.add_argument("tag", parser.add_argument("tag",
help="Image Tag") help="Image Tag")
@ -457,16 +473,20 @@ class UpdateCommand(SubCommand):
return 0 return 0
class CleanCommand(SubCommand): class CleanCommand(SubCommand):
"""Clean up docker instances""" """Clean up docker instances"""
name = "clean" name = "clean"
def run(self, args, argv): def run(self, args, argv):
Docker().clean() Docker().clean()
return 0 return 0
class ImagesCommand(SubCommand): class ImagesCommand(SubCommand):
"""Run "docker images" command""" """Run "docker images" command"""
name = "images" name = "images"
def run(self, args, argv): def run(self, args, argv):
return Docker().command("images", argv, args.quiet) return Docker().command("images", argv, args.quiet)
@ -539,7 +559,7 @@ class CheckCommand(SubCommand):
try: try:
dkr = Docker() dkr = Docker()
except: except subprocess.CalledProcessError:
print("Docker not set up") print("Docker not set up")
return 1 return 1
@ -578,7 +598,8 @@ class CheckCommand(SubCommand):
def main(): def main():
parser = argparse.ArgumentParser(description="A Docker helper", 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) subparsers = parser.add_subparsers(title="subcommands", help=None)
for cls in SubCommand.__subclasses__(): for cls in SubCommand.__subclasses__():
cmd = cls() cmd = cls()
@ -589,5 +610,6 @@ def main():
args, argv = parser.parse_known_args() args, argv = parser.parse_known_args()
return args.cmdobj.run(args, argv) return args.cmdobj.run(args, argv)
if __name__ == "__main__": if __name__ == "__main__":
sys.exit(main()) sys.exit(main())