From 0be75d54cada06d1c9bd0ac66d118e9007defe09 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 12 Jul 2019 01:28:41 +0200 Subject: [PATCH 01/11] Update credentials-helpers to v0.6.2 Signed-off-by: Sebastiaan van Stijn --- tests/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Dockerfile b/tests/Dockerfile index df8468ab..27a12673 100644 --- a/tests/Dockerfile +++ b/tests/Dockerfile @@ -4,7 +4,7 @@ FROM python:${PYTHON_VERSION} ARG APT_MIRROR RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \ - && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list + && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list RUN apt-get update && apt-get -y install \ gnupg2 \ From 70cdb08f9ad2e462423b0c4b42af3e6307cd392a Mon Sep 17 00:00:00 2001 From: Till Riedel Date: Sun, 14 Apr 2019 10:38:07 +0200 Subject: [PATCH 02/11] set logging level of paramiko to warn Signed-off-by: Till Riedel --- docker/transport/sshconn.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/transport/sshconn.py b/docker/transport/sshconn.py index 7de0e590..57b55c9e 100644 --- a/docker/transport/sshconn.py +++ b/docker/transport/sshconn.py @@ -2,7 +2,10 @@ import paramiko import requests.adapters import six import logging +<<<<<<< HEAD import os +======= +>>>>>>> 2dc569a... set logging level of paramiko to warn from docker.transport.basehttpadapter import BaseHTTPAdapter from .. import constants From fcd0093050714de06bcaf05781a995f044f20ce2 Mon Sep 17 00:00:00 2001 From: Till Riedel Date: Sun, 14 Apr 2019 13:52:12 +0200 Subject: [PATCH 03/11] obey Hostname Username Port and ProxyCommand settings from .ssh/config Signed-off-by: Till Riedel --- docker/transport/sshconn.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/docker/transport/sshconn.py b/docker/transport/sshconn.py index 57b55c9e..7de0e590 100644 --- a/docker/transport/sshconn.py +++ b/docker/transport/sshconn.py @@ -2,10 +2,7 @@ import paramiko import requests.adapters import six import logging -<<<<<<< HEAD import os -======= ->>>>>>> 2dc569a... set logging level of paramiko to warn from docker.transport.basehttpadapter import BaseHTTPAdapter from .. import constants From 087b3f0a4956f059ea5998c6dfb34ec581c25c6b Mon Sep 17 00:00:00 2001 From: Anca Iordache Date: Fri, 17 Jan 2020 19:25:55 +0100 Subject: [PATCH 04/11] Implement context management, lifecycle and unittests. Signed-off-by: Anca Iordache --- docker/context/api.py | 16 ++++++++++++ docker/context/context.py | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/docker/context/api.py b/docker/context/api.py index c45115bc..d903d9c6 100644 --- a/docker/context/api.py +++ b/docker/context/api.py @@ -38,7 +38,13 @@ class ContextAPI(object): >>> print(ctx.Metadata) { "Name": "test", +<<<<<<< HEAD "Metadata": {}, +======= + "Metadata": { + "StackOrchestrator": "swarm" + }, +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "Endpoints": { "docker": { "Host": "unix:///var/run/docker.sock", @@ -55,9 +61,13 @@ class ContextAPI(object): ctx = Context.load_context(name) if ctx: raise errors.ContextAlreadyExists(name) +<<<<<<< HEAD endpoint = "docker" if orchestrator and orchestrator != "swarm": endpoint = orchestrator +======= + endpoint = "docker" if orchestrator == "swarm" else orchestrator +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. ctx = Context(name, orchestrator) ctx.set_endpoint( endpoint, host, tls_cfg, @@ -79,7 +89,13 @@ class ContextAPI(object): >>> print(ctx.Metadata) { "Name": "test", +<<<<<<< HEAD "Metadata": {}, +======= + "Metadata": { + "StackOrchestrator": "swarm" + }, +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "Endpoints": { "docker": { "Host": "unix:///var/run/docker.sock", diff --git a/docker/context/context.py b/docker/context/context.py index 2413b2ec..3859db2b 100644 --- a/docker/context/context.py +++ b/docker/context/context.py @@ -57,7 +57,11 @@ class Context: self, name="docker", host=None, tls_cfg=None, skip_tls_verify=False, def_namespace=None): self.endpoints[name] = { +<<<<<<< HEAD "Host": get_context_host(host, not skip_tls_verify), +======= + "Host": get_context_host(host), +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "SkipTLSVerify": skip_tls_verify } if def_namespace: @@ -71,6 +75,7 @@ class Context: @classmethod def load_context(cls, name): +<<<<<<< HEAD meta = Context._load_meta(name) if meta: instance = cls( @@ -78,6 +83,11 @@ class Context: orchestrator=meta["Metadata"].get("StackOrchestrator", None), endpoints=meta.get("Endpoints", None)) instance.context_type = meta["Metadata"].get("Type", None) +======= + name, orchestrator, endpoints = Context._load_meta(name) + if name: + instance = cls(name, orchestrator, endpoints=endpoints) +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. instance._load_certs() instance.meta_path = get_meta_dir(name) return instance @@ -85,6 +95,7 @@ class Context: @classmethod def _load_meta(cls, name): +<<<<<<< HEAD meta_file = get_meta_file(name) if not os.path.isfile(meta_file): return None @@ -109,6 +120,27 @@ class Context: v.get("SkipTLSVerify", True)) return metadata +======= + metadata = {} + meta_file = get_meta_file(name) + if os.path.isfile(meta_file): + with open(meta_file) as f: + try: + with open(meta_file) as f: + metadata = json.load(f) + for k, v in metadata["Endpoints"].items(): + metadata["Endpoints"][k]["SkipTLSVerify"] = bool( + v["SkipTLSVerify"]) + except (IOError, KeyError, ValueError) as e: + # unknown format + raise Exception("""Detected corrupted meta file for + context {} : {}""".format(name, e)) + + return ( + metadata["Name"], metadata["Metadata"]["StackOrchestrator"], + metadata["Endpoints"]) + return None, None, None +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. def _load_certs(self): certs = {} @@ -177,15 +209,19 @@ class Context: result.update(self.Storage) return result +<<<<<<< HEAD def is_docker_host(self): return self.context_type is None +======= +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. @property def Name(self): return self.name @property def Host(self): +<<<<<<< HEAD if not self.orchestrator or self.orchestrator == "swarm": endpoint = self.endpoints.get("docker", None) if endpoint: @@ -193,6 +229,11 @@ class Context: return None return self.endpoints[self.orchestrator].get("Host", None) +======= + if self.orchestrator == "swarm": + return self.endpoints["docker"]["Host"] + return self.endpoints[self.orchestrator]["Host"] +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. @property def Orchestrator(self): @@ -200,19 +241,31 @@ class Context: @property def Metadata(self): +<<<<<<< HEAD meta = {} if self.orchestrator: meta = {"StackOrchestrator": self.orchestrator} return { "Name": self.name, "Metadata": meta, +======= + return { + "Name": self.name, + "Metadata": { + "StackOrchestrator": self.orchestrator + }, +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "Endpoints": self.endpoints } @property def TLSConfig(self): key = self.orchestrator +<<<<<<< HEAD if not key or key == "swarm": +======= + if key == "swarm": +>>>>>>> 64fdb32... Implement context management, lifecycle and unittests. key = "docker" if key in self.tls_cfg.keys(): return self.tls_cfg[key] From 67b77f2fa30ad97e8699c744ac43fafdbad6127c Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Fri, 7 Feb 2020 01:00:18 +0100 Subject: [PATCH 05/11] Post release 4.2.0 update: - Changelog - Next Version Signed-off-by: Ulysses Souza --- docs/change-log.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/change-log.md b/docs/change-log.md index f0be8ac1..829333b7 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -36,6 +36,7 @@ Change log - Add support for docker contexts through `docker.ContextAPI` + 4.1.0 ----- From 2e274d00b3009e800e4bfa135b0875eb8a7127a3 Mon Sep 17 00:00:00 2001 From: Ulysses Souza Date: Thu, 28 May 2020 20:53:45 +0200 Subject: [PATCH 06/11] Specify when to use `tls` on Context constructor Signed-off-by: Ulysses Souza --- docker/context/context.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docker/context/context.py b/docker/context/context.py index 3859db2b..026a6941 100644 --- a/docker/context/context.py +++ b/docker/context/context.py @@ -57,11 +57,15 @@ class Context: self, name="docker", host=None, tls_cfg=None, skip_tls_verify=False, def_namespace=None): self.endpoints[name] = { +<<<<<<< HEAD <<<<<<< HEAD "Host": get_context_host(host, not skip_tls_verify), ======= "Host": get_context_host(host), >>>>>>> 64fdb32... Implement context management, lifecycle and unittests. +======= + "Host": get_context_host(host, not skip_tls_verify), +>>>>>>> 3ce2d89... Specify when to use `tls` on Context constructor "SkipTLSVerify": skip_tls_verify } if def_namespace: From 3999707fb3fb5f7cea7d3d92eeda5cf160abb496 Mon Sep 17 00:00:00 2001 From: aiordache Date: Sat, 30 May 2020 11:01:22 +0200 Subject: [PATCH 07/11] Make orchestrator field optional Signed-off-by: aiordache --- docker/context/api.py | 16 ----------- docker/context/context.py | 56 ++++++++++++--------------------------- 2 files changed, 17 insertions(+), 55 deletions(-) diff --git a/docker/context/api.py b/docker/context/api.py index d903d9c6..c45115bc 100644 --- a/docker/context/api.py +++ b/docker/context/api.py @@ -38,13 +38,7 @@ class ContextAPI(object): >>> print(ctx.Metadata) { "Name": "test", -<<<<<<< HEAD "Metadata": {}, -======= - "Metadata": { - "StackOrchestrator": "swarm" - }, ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "Endpoints": { "docker": { "Host": "unix:///var/run/docker.sock", @@ -61,13 +55,9 @@ class ContextAPI(object): ctx = Context.load_context(name) if ctx: raise errors.ContextAlreadyExists(name) -<<<<<<< HEAD endpoint = "docker" if orchestrator and orchestrator != "swarm": endpoint = orchestrator -======= - endpoint = "docker" if orchestrator == "swarm" else orchestrator ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. ctx = Context(name, orchestrator) ctx.set_endpoint( endpoint, host, tls_cfg, @@ -89,13 +79,7 @@ class ContextAPI(object): >>> print(ctx.Metadata) { "Name": "test", -<<<<<<< HEAD "Metadata": {}, -======= - "Metadata": { - "StackOrchestrator": "swarm" - }, ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. "Endpoints": { "docker": { "Host": "unix:///var/run/docker.sock", diff --git a/docker/context/context.py b/docker/context/context.py index 026a6941..8158803d 100644 --- a/docker/context/context.py +++ b/docker/context/context.py @@ -57,15 +57,7 @@ class Context: self, name="docker", host=None, tls_cfg=None, skip_tls_verify=False, def_namespace=None): self.endpoints[name] = { -<<<<<<< HEAD -<<<<<<< HEAD "Host": get_context_host(host, not skip_tls_verify), -======= - "Host": get_context_host(host), ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. -======= - "Host": get_context_host(host, not skip_tls_verify), ->>>>>>> 3ce2d89... Specify when to use `tls` on Context constructor "SkipTLSVerify": skip_tls_verify } if def_namespace: @@ -79,7 +71,6 @@ class Context: @classmethod def load_context(cls, name): -<<<<<<< HEAD meta = Context._load_meta(name) if meta: instance = cls( @@ -87,11 +78,6 @@ class Context: orchestrator=meta["Metadata"].get("StackOrchestrator", None), endpoints=meta.get("Endpoints", None)) instance.context_type = meta["Metadata"].get("Type", None) -======= - name, orchestrator, endpoints = Context._load_meta(name) - if name: - instance = cls(name, orchestrator, endpoints=endpoints) ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. instance._load_certs() instance.meta_path = get_meta_dir(name) return instance @@ -99,7 +85,6 @@ class Context: @classmethod def _load_meta(cls, name): -<<<<<<< HEAD meta_file = get_meta_file(name) if not os.path.isfile(meta_file): return None @@ -124,27 +109,6 @@ class Context: v.get("SkipTLSVerify", True)) return metadata -======= - metadata = {} - meta_file = get_meta_file(name) - if os.path.isfile(meta_file): - with open(meta_file) as f: - try: - with open(meta_file) as f: - metadata = json.load(f) - for k, v in metadata["Endpoints"].items(): - metadata["Endpoints"][k]["SkipTLSVerify"] = bool( - v["SkipTLSVerify"]) - except (IOError, KeyError, ValueError) as e: - # unknown format - raise Exception("""Detected corrupted meta file for - context {} : {}""".format(name, e)) - - return ( - metadata["Name"], metadata["Metadata"]["StackOrchestrator"], - metadata["Endpoints"]) - return None, None, None ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. def _load_certs(self): certs = {} @@ -213,18 +177,16 @@ class Context: result.update(self.Storage) return result -<<<<<<< HEAD def is_docker_host(self): return self.context_type is None -======= ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. @property def Name(self): return self.name @property def Host(self): +<<<<<<< HEAD <<<<<<< HEAD if not self.orchestrator or self.orchestrator == "swarm": endpoint = self.endpoints.get("docker", None) @@ -235,6 +197,9 @@ class Context: return self.endpoints[self.orchestrator].get("Host", None) ======= if self.orchestrator == "swarm": +======= + if not self.orchestrator or self.orchestrator == "swarm": +>>>>>>> 1e11ece... Make orchestrator field optional return self.endpoints["docker"]["Host"] return self.endpoints[self.orchestrator]["Host"] >>>>>>> 64fdb32... Implement context management, lifecycle and unittests. @@ -245,6 +210,7 @@ class Context: @property def Metadata(self): +<<<<<<< HEAD <<<<<<< HEAD meta = {} if self.orchestrator: @@ -259,17 +225,29 @@ class Context: "StackOrchestrator": self.orchestrator }, >>>>>>> 64fdb32... Implement context management, lifecycle and unittests. +======= + meta = {} + if self.orchestrator: + meta = {"StackOrchestrator": self.orchestrator} + return { + "Name": self.name, + "Metadata": meta, +>>>>>>> 1e11ece... Make orchestrator field optional "Endpoints": self.endpoints } @property def TLSConfig(self): key = self.orchestrator +<<<<<<< HEAD <<<<<<< HEAD if not key or key == "swarm": ======= if key == "swarm": >>>>>>> 64fdb32... Implement context management, lifecycle and unittests. +======= + if not key or key == "swarm": +>>>>>>> 1e11ece... Make orchestrator field optional key = "docker" if key in self.tls_cfg.keys(): return self.tls_cfg[key] From 746a2509ab7cb0656f62de0440be9ce442775e8c Mon Sep 17 00:00:00 2001 From: aiordache Date: Mon, 10 Aug 2020 15:29:34 +0200 Subject: [PATCH 08/11] Prepare release 4.3.0 Signed-off-by: aiordache --- docker/version.py | 2 +- docs/change-log.md | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docker/version.py b/docker/version.py index a7546092..29c6b00e 100644 --- a/docker/version.py +++ b/docker/version.py @@ -1,2 +1,2 @@ -version = "4.3.0-dev" +version = "4.3.0" version_info = tuple([int(d) for d in version.split("-")[0].split(".")]) diff --git a/docs/change-log.md b/docs/change-log.md index 829333b7..c753ffd3 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -1,6 +1,21 @@ Change log ========== +4.3.0 +----- + +[List of PRs / issues for this release](https://github.com/docker/docker-py/milestone/66?closed=1) + +### Features +- Add `DeviceRequest` type to expose host resources such as GPUs +- Add support for `DriverOpts` in EndpointConfig +- Disable compression by default when using container.get_archive method + +### Miscellaneous +- Update default API version to v1.39 +- Update test engine version to 19.03.12 + + 4.2.2 ----- From 8080fbb4ed7a5c25fa0bf1deb39bcdf4cdfb7ddd Mon Sep 17 00:00:00 2001 From: aiordache Date: Mon, 10 Aug 2020 18:15:18 +0200 Subject: [PATCH 09/11] Fix merge Signed-off-by: aiordache --- docker/context/context.py | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/docker/context/context.py b/docker/context/context.py index 8158803d..2413b2ec 100644 --- a/docker/context/context.py +++ b/docker/context/context.py @@ -186,8 +186,6 @@ class Context: @property def Host(self): -<<<<<<< HEAD -<<<<<<< HEAD if not self.orchestrator or self.orchestrator == "swarm": endpoint = self.endpoints.get("docker", None) if endpoint: @@ -195,14 +193,6 @@ class Context: return None return self.endpoints[self.orchestrator].get("Host", None) -======= - if self.orchestrator == "swarm": -======= - if not self.orchestrator or self.orchestrator == "swarm": ->>>>>>> 1e11ece... Make orchestrator field optional - return self.endpoints["docker"]["Host"] - return self.endpoints[self.orchestrator]["Host"] ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. @property def Orchestrator(self): @@ -210,44 +200,19 @@ class Context: @property def Metadata(self): -<<<<<<< HEAD -<<<<<<< HEAD meta = {} if self.orchestrator: meta = {"StackOrchestrator": self.orchestrator} return { "Name": self.name, "Metadata": meta, -======= - return { - "Name": self.name, - "Metadata": { - "StackOrchestrator": self.orchestrator - }, ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. -======= - meta = {} - if self.orchestrator: - meta = {"StackOrchestrator": self.orchestrator} - return { - "Name": self.name, - "Metadata": meta, ->>>>>>> 1e11ece... Make orchestrator field optional "Endpoints": self.endpoints } @property def TLSConfig(self): key = self.orchestrator -<<<<<<< HEAD -<<<<<<< HEAD if not key or key == "swarm": -======= - if key == "swarm": ->>>>>>> 64fdb32... Implement context management, lifecycle and unittests. -======= - if not key or key == "swarm": ->>>>>>> 1e11ece... Make orchestrator field optional key = "docker" if key in self.tls_cfg.keys(): return self.tls_cfg[key] From 9579b7ac0e43eadf6e3a62d61ed67aff25839143 Mon Sep 17 00:00:00 2001 From: aiordache Date: Mon, 10 Aug 2020 18:21:57 +0200 Subject: [PATCH 10/11] Fix changelog merge Signed-off-by: aiordache --- docs/change-log.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/change-log.md b/docs/change-log.md index c753ffd3..cecce9d8 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -4,7 +4,7 @@ Change log 4.3.0 ----- -[List of PRs / issues for this release](https://github.com/docker/docker-py/milestone/66?closed=1) +[List of PRs / issues for this release](https://github.com/docker/docker-py/milestone/64?closed=1) ### Features - Add `DeviceRequest` type to expose host resources such as GPUs @@ -51,7 +51,6 @@ Change log - Add support for docker contexts through `docker.ContextAPI` - 4.1.0 ----- From 5cdbbab3eedeea5b73151c604209d576722fb24d Mon Sep 17 00:00:00 2001 From: aiordache Date: Mon, 10 Aug 2020 19:21:44 +0200 Subject: [PATCH 11/11] Update version to the next dev version Signed-off-by: aiordache --- docker/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/version.py b/docker/version.py index 29c6b00e..f40347aa 100644 --- a/docker/version.py +++ b/docker/version.py @@ -1,2 +1,2 @@ -version = "4.3.0" +version = "4.4.0-dev" version_info = tuple([int(d) for d in version.split("-")[0].split(".")])