Hello community,

here is the log from the commit of package python-docker for openSUSE:Factory 
checked in at 2020-06-15 20:28:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-docker (Old)
 and      /work/SRC/openSUSE:Factory/.python-docker.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-docker"

Mon Jun 15 20:28:36 2020 rev:18 rq:814541 version:4.2.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-docker/python-docker.changes      
2020-02-11 22:24:30.899538305 +0100
+++ /work/SRC/openSUSE:Factory/.python-docker.new.3606/python-docker.changes    
2020-06-15 20:28:48.066019001 +0200
@@ -1,0 +2,7 @@
+Mon Jun  8 13:35:57 UTC 2020 - Dirk Mueller <[email protected]>
+
+- update to 4.2.1:
+  - Add option on when to use `tls` on Context constructor
+  - Make context orchestrator field optional
+
+-------------------------------------------------------------------

Old:
----
  4.2.0.tar.gz

New:
----
  4.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-docker.spec ++++++
--- /var/tmp/diff_new_pack.SkleJf/_old  2020-06-15 20:28:50.150026221 +0200
+++ /var/tmp/diff_new_pack.SkleJf/_new  2020-06-15 20:28:50.154026235 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define oldpython python
 Name:           python-docker
-Version:        4.2.0
+Version:        4.2.1
 Release:        0
 Summary:        Docker API Client
 License:        Apache-2.0

++++++ 4.2.0.tar.gz -> 4.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/Jenkinsfile 
new/docker-py-4.2.1/Jenkinsfile
--- old/docker-py-4.2.0/Jenkinsfile     2020-02-06 11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/Jenkinsfile     2020-06-02 16:15:59.000000000 +0200
@@ -31,7 +31,7 @@
 }
 
 def getDockerVersions = { ->
-  def dockerVersions = ["17.06.2-ce"]
+  def dockerVersions = ["19.03.5"]
   wrappedNode(label: "ubuntu && !zfs && amd64") {
     def result = sh(script: """docker run --rm \\
         --entrypoint=python \\
@@ -46,8 +46,6 @@
 
 def getAPIVersion = { engineVersion ->
   def versionMap = [
-    '17.06': '1.30',
-    '18.03': '1.37',
     '18.09': '1.39',
     '19.03': '1.40'
   ]
@@ -84,7 +82,7 @@
         try {
           sh """docker network create ${testNetwork}"""
           sh """docker run -d --name  ${dindContainerName} -v /tmp 
--privileged --network ${testNetwork} \\
-            dockerswarm/dind:${dockerVersion} dockerd -H tcp://0.0.0.0:2375
+            docker:${dockerVersion}-dind dockerd -H tcp://0.0.0.0:2375
           """
           sh """docker run \\
             --name ${testContainerName} \\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/Makefile new/docker-py-4.2.1/Makefile
--- old/docker-py-4.2.0/Makefile        2020-02-06 11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/Makefile        2020-06-02 16:15:59.000000000 +0200
@@ -42,7 +42,7 @@
        docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock 
docker-sdk-python3 py.test -v tests/integration/${file}
 
 TEST_API_VERSION ?= 1.35
-TEST_ENGINE_VERSION ?= 18.09.5
+TEST_ENGINE_VERSION ?= 19.03.5
 
 .PHONY: setup-network
 setup-network:
@@ -55,7 +55,7 @@
 integration-dind-py2: build setup-network
        docker rm -vf dpy-dind-py2 || :
        docker run -d --network dpy-tests --name dpy-dind-py2 --privileged\
-               dockerswarm/dind:${TEST_ENGINE_VERSION} dockerd -H 
tcp://0.0.0.0:2375 --experimental
+               docker:${TEST_ENGINE_VERSION}-dind dockerd -H 
tcp://0.0.0.0:2375 --experimental
        docker run -t --rm --env="DOCKER_HOST=tcp://dpy-dind-py2:2375" 
--env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
                --network dpy-tests docker-sdk-python py.test tests/integration
        docker rm -vf dpy-dind-py2
@@ -64,7 +64,7 @@
 integration-dind-py3: build-py3 setup-network
        docker rm -vf dpy-dind-py3 || :
        docker run -d --network dpy-tests --name dpy-dind-py3 --privileged\
-               dockerswarm/dind:${TEST_ENGINE_VERSION} dockerd -H 
tcp://0.0.0.0:2375 --experimental
+               docker:${TEST_ENGINE_VERSION}-dind dockerd -H 
tcp://0.0.0.0:2375 --experimental
        docker run -t --rm --env="DOCKER_HOST=tcp://dpy-dind-py3:2375" 
--env="DOCKER_TEST_API_VERSION=${TEST_API_VERSION}"\
                --network dpy-tests docker-sdk-python3 py.test tests/integration
        docker rm -vf dpy-dind-py3
@@ -76,7 +76,7 @@
        docker run -d --env="DOCKER_HOST=tcp://localhost:2375" 
--env="DOCKER_TLS_VERIFY=1"\
                --env="DOCKER_CERT_PATH=/certs" --volumes-from dpy-dind-certs 
--name dpy-dind-ssl\
                --network dpy-tests --network-alias docker -v /tmp --privileged\
-               dockerswarm/dind:${TEST_ENGINE_VERSION}\
+               docker:${TEST_ENGINE_VERSION}-dind\
                dockerd --tlsverify --tlscacert=/certs/ca.pem 
--tlscert=/certs/server-cert.pem\
                --tlskey=/certs/server-key.pem -H tcp://0.0.0.0:2375 
--experimental
        docker run -t --rm --volumes-from dpy-dind-ssl 
--env="DOCKER_HOST=tcp://docker:2375"\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/docker/context/api.py 
new/docker-py-4.2.1/docker/context/api.py
--- old/docker-py-4.2.0/docker/context/api.py   2020-02-06 11:43:03.000000000 
+0100
+++ new/docker-py-4.2.1/docker/context/api.py   2020-06-02 16:15:59.000000000 
+0200
@@ -14,11 +14,11 @@
     Contains methods for context management:
     create, list, remove, get, inspect.
     """
-    DEFAULT_CONTEXT = Context("default")
+    DEFAULT_CONTEXT = Context("default", "swarm")
 
     @classmethod
     def create_context(
-            cls, name, orchestrator="swarm", host=None, tls_cfg=None,
+            cls, name, orchestrator=None, host=None, tls_cfg=None,
             default_namespace=None, skip_tls_verify=False):
         """Creates a new context.
         Returns:
@@ -38,9 +38,7 @@
         >>> print(ctx.Metadata)
         {
             "Name": "test",
-            "Metadata": {
-                "StackOrchestrator": "swarm"
-            },
+            "Metadata": {},
             "Endpoints": {
                 "docker": {
                     "Host": "unix:///var/run/docker.sock",
@@ -57,7 +55,9 @@
         ctx = Context.load_context(name)
         if ctx:
             raise errors.ContextAlreadyExists(name)
-        endpoint = "docker" if orchestrator == "swarm" else orchestrator
+        endpoint = "docker"
+        if orchestrator and orchestrator != "swarm":
+            endpoint = orchestrator
         ctx = Context(name, orchestrator)
         ctx.set_endpoint(
             endpoint, host, tls_cfg,
@@ -79,9 +79,7 @@
         >>> print(ctx.Metadata)
         {
             "Name": "test",
-            "Metadata": {
-                "StackOrchestrator": "swarm"
-            },
+            "Metadata": {},
             "Endpoints": {
                 "docker": {
                 "Host": "unix:///var/run/docker.sock",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/docker/context/config.py 
new/docker-py-4.2.1/docker/context/config.py
--- old/docker-py-4.2.0/docker/context/config.py        2020-02-06 
11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/docker/context/config.py        2020-06-02 
16:15:59.000000000 +0200
@@ -73,8 +73,8 @@
     return os.path.join(context_dir, "tls")
 
 
-def get_context_host(path=None):
-    host = utils.parse_host(path, IS_WINDOWS_PLATFORM)
+def get_context_host(path=None, tls=False):
+    host = utils.parse_host(path, IS_WINDOWS_PLATFORM, tls)
     if host == DEFAULT_UNIX_SOCKET:
         # remove http+ from default docker socket url
         return host.strip("http+")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/docker/context/context.py 
new/docker-py-4.2.1/docker/context/context.py
--- old/docker-py-4.2.0/docker/context/context.py       2020-02-06 
11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/docker/context/context.py       2020-06-02 
16:15:59.000000000 +0200
@@ -11,19 +11,20 @@
 
 class Context:
     """A context."""
-    def __init__(self, name, orchestrator="swarm", host=None, endpoints=None):
+    def __init__(self, name, orchestrator=None, host=None, endpoints=None,
+                 tls=False):
         if not name:
             raise Exception("Name not provided")
         self.name = name
         self.orchestrator = orchestrator
         if not endpoints:
             default_endpoint = "docker" if (
-                orchestrator == "swarm"
+                not orchestrator or orchestrator == "swarm"
                 ) else orchestrator
             self.endpoints = {
                 default_endpoint: {
-                    "Host": get_context_host(host),
-                    "SkipTLSVerify": False
+                    "Host": get_context_host(host, tls),
+                    "SkipTLSVerify": not tls
                 }
             }
         else:
@@ -44,7 +45,7 @@
             self, name="docker", host=None, tls_cfg=None,
             skip_tls_verify=False, def_namespace=None):
         self.endpoints[name] = {
-            "Host": get_context_host(host),
+            "Host": get_context_host(host, not skip_tls_verify),
             "SkipTLSVerify": skip_tls_verify
         }
         if def_namespace:
@@ -84,7 +85,8 @@
                         context {} : {}""".format(name, e))
 
             return (
-                metadata["Name"], metadata["Metadata"]["StackOrchestrator"],
+                metadata["Name"],
+                metadata["Metadata"].get("StackOrchestrator", None),
                 metadata["Endpoints"])
         return None, None, None
 
@@ -161,7 +163,7 @@
 
     @property
     def Host(self):
-        if self.orchestrator == "swarm":
+        if not self.orchestrator or self.orchestrator == "swarm":
             return self.endpoints["docker"]["Host"]
         return self.endpoints[self.orchestrator]["Host"]
 
@@ -171,18 +173,19 @@
 
     @property
     def Metadata(self):
+        meta = {}
+        if self.orchestrator:
+            meta = {"StackOrchestrator": self.orchestrator}
         return {
             "Name": self.name,
-            "Metadata": {
-                "StackOrchestrator": self.orchestrator
-            },
+            "Metadata": meta,
             "Endpoints": self.endpoints
         }
 
     @property
     def TLSConfig(self):
         key = self.orchestrator
-        if key == "swarm":
+        if not key or key == "swarm":
             key = "docker"
         if key in self.tls_cfg.keys():
             return self.tls_cfg[key]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/docker/version.py 
new/docker-py-4.2.1/docker/version.py
--- old/docker-py-4.2.0/docker/version.py       2020-02-06 11:43:03.000000000 
+0100
+++ new/docker-py-4.2.1/docker/version.py       2020-06-02 16:15:59.000000000 
+0200
@@ -1,2 +1,2 @@
-version = "4.2.0"
+version = "4.2.1"
 version_info = tuple([int(d) for d in version.split("-")[0].split(".")])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/docs/change-log.md 
new/docker-py-4.2.1/docs/change-log.md
--- old/docker-py-4.2.0/docs/change-log.md      2020-02-06 11:43:03.000000000 
+0100
+++ new/docker-py-4.2.1/docs/change-log.md      2020-06-02 16:15:59.000000000 
+0200
@@ -1,6 +1,16 @@
 Change log
 ==========
 
+4.2.1
+-----
+
+[List of PRs / issues for this 
release](https://github.com/docker/docker-py/milestone/65?closed=1)
+
+### Features
+
+- Add option on when to use `tls` on Context constructor
+- Make context orchestrator field optional
+
 4.2.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-py-4.2.0/tests/integration/api_container_test.py 
new/docker-py-4.2.1/tests/integration/api_container_test.py
--- old/docker-py-4.2.0/tests/integration/api_container_test.py 2020-02-06 
11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/tests/integration/api_container_test.py 2020-06-02 
16:15:59.000000000 +0200
@@ -273,11 +273,14 @@
 
     def test_invalid_log_driver_raises_exception(self):
         log_config = docker.types.LogConfig(
-            type='asdf-nope',
+            type='asdf',
             config={}
         )
 
-        expected_msg = "logger: no log driver named 'asdf-nope' is registered"
+        expected_msgs = [
+            "logger: no log driver named 'asdf' is registered",
+            "looking up logging plugin asdf: plugin \"asdf\" not found",
+        ]
         with pytest.raises(docker.errors.APIError) as excinfo:
             # raises an internal server error 500
             container = self.client.create_container(
@@ -287,7 +290,7 @@
             )
             self.client.start(container)
 
-        assert excinfo.value.explanation == expected_msg
+        assert excinfo.value.explanation in expected_msgs
 
     def test_valid_no_log_driver_specified(self):
         log_config = docker.types.LogConfig(
@@ -1102,6 +1105,8 @@
 
 
 class ContainerTopTest(BaseAPIIntegrationTest):
+    @pytest.mark.xfail(reason='Output of docker top depends on host distro, '
+                              'and is not formalized.')
     def test_top(self):
         container = self.client.create_container(
             TEST_IMG, ['sleep', '60']
@@ -1112,9 +1117,7 @@
         self.client.start(container)
         res = self.client.top(container)
         if not IS_WINDOWS_PLATFORM:
-            assert res['Titles'] == [
-                'UID', 'PID', 'PPID', 'C', 'STIME', 'TTY', 'TIME', 'CMD'
-            ]
+            assert res['Titles'] == [u'PID', u'USER', u'TIME', u'COMMAND']
         assert len(res['Processes']) == 1
         assert res['Processes'][0][-1] == 'sleep 60'
         self.client.kill(container)
@@ -1122,6 +1125,8 @@
     @pytest.mark.skipif(
         IS_WINDOWS_PLATFORM, reason='No psargs support on windows'
     )
+    @pytest.mark.xfail(reason='Output of docker top depends on host distro, '
+                              'and is not formalized.')
     def test_top_with_psargs(self):
         container = self.client.create_container(
             TEST_IMG, ['sleep', '60'])
@@ -1129,11 +1134,8 @@
         self.tmp_containers.append(container)
 
         self.client.start(container)
-        res = self.client.top(container, 'waux')
-        assert res['Titles'] == [
-            'USER', 'PID', '%CPU', '%MEM', 'VSZ', 'RSS',
-            'TTY', 'STAT', 'START', 'TIME', 'COMMAND'
-        ]
+        res = self.client.top(container, '-eopid,user')
+        assert res['Titles'] == [u'PID', u'USER']
         assert len(res['Processes']) == 1
         assert res['Processes'][0][10] == 'sleep 60'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/docker-py-4.2.0/tests/integration/context_api_test.py 
new/docker-py-4.2.1/tests/integration/context_api_test.py
--- old/docker-py-4.2.0/tests/integration/context_api_test.py   2020-02-06 
11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/tests/integration/context_api_test.py   2020-06-02 
16:15:59.000000000 +0200
@@ -50,3 +50,10 @@
         ContextAPI.remove_context("test")
         with pytest.raises(errors.ContextNotFound):
             ContextAPI.inspect_context("test")
+
+    def test_load_context_without_orchestrator(self):
+        ContextAPI.create_context("test")
+        ctx = ContextAPI.get_context("test")
+        assert ctx
+        assert ctx.Name == "test"
+        assert ctx.Orchestrator is None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/docker-py-4.2.0/tests/unit/context_test.py 
new/docker-py-4.2.1/tests/unit/context_test.py
--- old/docker-py-4.2.0/tests/unit/context_test.py      2020-02-06 
11:43:03.000000000 +0100
+++ new/docker-py-4.2.1/tests/unit/context_test.py      2020-06-02 
16:15:59.000000000 +0200
@@ -37,6 +37,10 @@
     def test_get_current_context(self):
         assert ContextAPI.get_current_context().Name == "default"
 
+    def test_https_host(self):
+        c = Context("test", host="tcp://testdomain:8080", tls=True)
+        assert c.Host == "https://testdomain:8080";
+
     def test_context_inspect_without_params(self):
         ctx = ContextAPI.inspect_context()
         assert ctx["Name"] == "default"


Reply via email to