diff options
author | Joffrey F <joffrey@docker.com> | 2014-08-22 17:09:05 +0200 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2014-08-22 17:09:05 +0200 |
commit | c76fd8d91481d33cee6fcfaa61025c12caa95b98 (patch) | |
tree | 725217375dc9f38c265c464baca4fde98973d331 | |
parent | 710f3725b69c8c8ed25c5e8f8561710e7144a23a (diff) | |
parent | 9999cb066384724149d5f0613c4e262b1c70609b (diff) | |
download | docker-py-c76fd8d91481d33cee6fcfaa61025c12caa95b98.tar.gz |
Merge branch 'cameronmaske-push-tags'
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | docker/client.py | 12 | ||||
-rw-r--r-- | tests/test.py | 27 |
3 files changed, 37 insertions, 4 deletions
@@ -201,7 +201,7 @@ c.pull(repository, tag=None, stream=False) Identical to the `docker pull` command. ```python -c.push(repository, stream=False) +c.push(repository, tag=None, stream=False) ``` Identical to the `docker push` command. diff --git a/docker/client.py b/docker/client.py index d826727..c4871a6 100644 --- a/docker/client.py +++ b/docker/client.py @@ -747,9 +747,14 @@ class Client(requests.Session): else: return self._result(response) - def push(self, repository, stream=False): + def push(self, repository, tag=None, stream=False): + if not tag: + repository, tag = utils.parse_repository_tag(repository) registry, repo_name = auth.resolve_repository_name(repository) u = self._url("/images/{0}/push".format(repository)) + params = { + 'tag': tag + } headers = {} if utils.compare_version('1.5', self._version) >= 0: @@ -765,9 +770,10 @@ class Client(requests.Session): if authcfg: headers['X-Registry-Auth'] = auth.encode_header(authcfg) - response = self._post_json(u, None, headers=headers, stream=stream) + response = self._post_json(u, None, headers=headers, + stream=stream, params=params) else: - response = self._post_json(u, None, stream=stream) + response = self._post_json(u, None, stream=stream, params=params) return stream and self._stream_helper(response) \ or self._result(response) diff --git a/tests/test.py b/tests/test.py index 5b21a81..4fced93 100644 --- a/tests/test.py +++ b/tests/test.py @@ -1306,6 +1306,30 @@ class DockerClientTest(Cleanup, unittest.TestCase): fake_request.assert_called_with( url_prefix + 'images/test_image/push', + params={ + 'tag': None + }, + data='{}', + headers={'Content-Type': 'application/json'}, + stream=False, + timeout=docker.client.DEFAULT_TIMEOUT_SECONDS + ) + + def test_push_image_with_tag(self): + try: + with mock.patch('docker.auth.auth.resolve_authconfig', + fake_resolve_authconfig): + self.client.push( + fake_api.FAKE_IMAGE_NAME, tag=fake_api.FAKE_TAG_NAME + ) + except Exception as e: + self.fail('Command should not raise exception: {0}'.format(e)) + + fake_request.assert_called_with( + url_prefix + 'images/test_image/push', + params={ + 'tag': fake_api.FAKE_TAG_NAME, + }, data='{}', headers={'Content-Type': 'application/json'}, stream=False, @@ -1322,6 +1346,9 @@ class DockerClientTest(Cleanup, unittest.TestCase): fake_request.assert_called_with( url_prefix + 'images/test_image/push', + params={ + 'tag': None + }, data='{}', headers={'Content-Type': 'application/json'}, stream=True, |