summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2014-08-22 17:09:05 +0200
committerJoffrey F <joffrey@docker.com>2014-08-22 17:09:05 +0200
commitc76fd8d91481d33cee6fcfaa61025c12caa95b98 (patch)
tree725217375dc9f38c265c464baca4fde98973d331
parent710f3725b69c8c8ed25c5e8f8561710e7144a23a (diff)
parent9999cb066384724149d5f0613c4e262b1c70609b (diff)
downloaddocker-py-c76fd8d91481d33cee6fcfaa61025c12caa95b98.tar.gz
Merge branch 'cameronmaske-push-tags'
-rw-r--r--README.md2
-rw-r--r--docker/client.py12
-rw-r--r--tests/test.py27
3 files changed, 37 insertions, 4 deletions
diff --git a/README.md b/README.md
index ba06c86..442123b 100644
--- a/README.md
+++ b/README.md
@@ -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,