[Qemu-devel] [PATCH] tests/docker: support proxy / corporate firewall

Philippe Mathieu-Daudé posted 1 patch 7 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170304191230.11296-1-f4bug@amsat.org
Test checkpatch passed
Test docker passed
There is a newer version of this series
tests/docker/docker.py | 10 ++++++++++
1 file changed, 10 insertions(+)
[Qemu-devel] [PATCH] tests/docker: support proxy / corporate firewall
Posted by Philippe Mathieu-Daudé 7 years, 1 month ago
if FTP_PROXY/HTTP_PROXY/HTTPS_PROXY standard environment variables available,
pass them to the docker daemon to build images.
this is required when building behind corporate proxy/firewall, but also help
when using local cache server (ie: apt/yum).

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/docker/docker.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/docker/docker.py b/tests/docker/docker.py
index 9fd32ab5fa..02bf9363e1 100755
--- a/tests/docker/docker.py
+++ b/tests/docker/docker.py
@@ -22,12 +22,16 @@ import argparse
 import tempfile
 import re
 import signal
+import string
 from tarfile import TarFile, TarInfo
 from StringIO import StringIO
 from shutil import copy, rmtree
 from pwd import getpwuid
 
 
+FILTERED_ENV_NAMES = ['FTP_PROXY', 'HTTP_PROXY', 'HTTPS_PROXY']
+
+
 DEVNULL = open(os.devnull, 'wb')
 
 
@@ -272,6 +276,12 @@ class BuildCommand(SubCommand):
                 _copy_binary_with_libs(args.include_executable,
                                        docker_dir)
 
+            filtered_keys = map(string.upper, FILTERED_ENV_NAMES)
+            filtered_keys += map(string.lower, FILTERED_ENV_NAMES)
+            for filtered_key in filtered_keys:
+                if filtered_key in os.environ.keys():
+                    argv += ["--build-arg=" + filtered_key +
+                                "=" + os.environ[filtered_key]]
             dkr.build_image(tag, docker_dir, dockerfile,
                             quiet=args.quiet, user=args.user, argv=argv)
 
-- 
2.11.0


Re: [Qemu-devel] [PATCH] tests/docker: support proxy / corporate firewall
Posted by Fam Zheng 7 years, 1 month ago
On Sat, 03/04 16:12, Philippe Mathieu-Daudé wrote:
> if FTP_PROXY/HTTP_PROXY/HTTPS_PROXY standard environment variables available,
> pass them to the docker daemon to build images.
> this is required when building behind corporate proxy/firewall, but also help
> when using local cache server (ie: apt/yum).
> 
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  tests/docker/docker.py | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/tests/docker/docker.py b/tests/docker/docker.py
> index 9fd32ab5fa..02bf9363e1 100755
> --- a/tests/docker/docker.py
> +++ b/tests/docker/docker.py
> @@ -22,12 +22,16 @@ import argparse
>  import tempfile
>  import re
>  import signal
> +import string
>  from tarfile import TarFile, TarInfo
>  from StringIO import StringIO
>  from shutil import copy, rmtree
>  from pwd import getpwuid
>  
>  
> +FILTERED_ENV_NAMES = ['FTP_PROXY', 'HTTP_PROXY', 'HTTPS_PROXY']
> +
> +
>  DEVNULL = open(os.devnull, 'wb')
>  
>  
> @@ -272,6 +276,12 @@ class BuildCommand(SubCommand):
>                  _copy_binary_with_libs(args.include_executable,
>                                         docker_dir)
>  
> +            filtered_keys = map(string.upper, FILTERED_ENV_NAMES)
> +            filtered_keys += map(string.lower, FILTERED_ENV_NAMES)
> +            for filtered_key in filtered_keys:
> +                if filtered_key in os.environ.keys():
> +                    argv += ["--build-arg=" + filtered_key +
> +                                "=" + os.environ[filtered_key]]

Makes sense.

Could you simplify the above hunk as

    args += ["--build-arg=" + k + "=" + v for k, v in \
                os.environ.iteritems() if k.upper() in FILTERED_ENV_NAMES]

then 'import string' is not necessary.

Fam

>              dkr.build_image(tag, docker_dir, dockerfile,
>                              quiet=args.quiet, user=args.user, argv=argv)
>  
> -- 
> 2.11.0
> 
>