diff options
author | Joffrey F <joffrey@docker.com> | 2015-06-30 01:49:33 +0200 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2015-06-30 01:49:33 +0200 |
commit | 37fb96334290eae49e17411a6b3af3f4f0fac0c9 (patch) | |
tree | ace5d47bce5994dea0ffcf662f3a9175ebed6ad6 | |
parent | 64dcd5a19179f73077b54d9b25ac5ae8b878b459 (diff) | |
parent | c2d98c204bdb3ddc4380e16e503b71788eb74b85 (diff) | |
download | docker-py-37fb96334290eae49e17411a6b3af3f4f0fac0c9.tar.gz |
Merge branch 'posita-id-resolution-in-check-resource'
-rw-r--r-- | docker/client.py | 51 | ||||
-rw-r--r-- | docker/utils/decorators.py | 3 | ||||
-rw-r--r-- | tests/test.py | 38 |
3 files changed, 22 insertions, 70 deletions
diff --git a/docker/client.py b/docker/client.py index 8bcc419..998ebac 100644 --- a/docker/client.py +++ b/docker/client.py @@ -246,8 +246,6 @@ class Client(requests.Session): @check_resource def attach(self, container, stdout=True, stderr=True, stream=False, logs=False): - if isinstance(container, dict): - container = container.get('Id') params = { 'logs': logs and 1 or 0, 'stdout': stdout and 1 or 0, @@ -292,9 +290,6 @@ class Client(requests.Session): if ws: return self._attach_websocket(container, params) - if isinstance(container, dict): - container = container.get('Id') - u = self._url("/containers/{0}/attach".format(container)) return self._get_raw_response_socket(self.post( u, None, params=self._attach_params(params), stream=True)) @@ -409,8 +404,6 @@ class Client(requests.Session): @check_resource def commit(self, container, repository=None, tag=None, message=None, author=None, conf=None): - if isinstance(container, dict): - container = container.get('Id') params = { 'container': container, 'repo': repository, @@ -447,8 +440,6 @@ class Client(requests.Session): @check_resource def copy(self, container, resource): - if isinstance(container, dict): - container = container.get('Id') res = self._post_json( self._url("/containers/{0}/copy".format(container)), data={"Resource": resource}, @@ -493,8 +484,6 @@ class Client(requests.Session): @check_resource def diff(self, container): - if isinstance(container, dict): - container = container.get('Id') return self._result(self._get(self._url("/containers/{0}/changes". format(container))), True) @@ -539,8 +528,6 @@ class Client(requests.Session): raise errors.InvalidVersion( 'Privileged exec is not supported in API < 1.19' ) - if isinstance(container, dict): - container = container.get('Id') if isinstance(cmd, six.string_types): cmd = shlex.split(str(cmd)) @@ -605,8 +592,6 @@ class Client(requests.Session): @check_resource def export(self, container): - if isinstance(container, dict): - container = container.get('Id') res = self._get(self._url("/containers/{0}/export".format(container)), stream=True) self._raise_for_status(res) @@ -744,16 +729,12 @@ class Client(requests.Session): @check_resource def inspect_container(self, container): - if isinstance(container, dict): - container = container.get('Id') return self._result( self._get(self._url("/containers/{0}/json".format(container))), True) @check_resource def inspect_image(self, image): - if isinstance(image, dict): - image = image.get('Id') return self._result( self._get(self._url("/images/{0}/json".format(image))), True @@ -761,8 +742,6 @@ class Client(requests.Session): @check_resource def kill(self, container, signal=None): - if isinstance(container, dict): - container = container.get('Id') url = self._url("/containers/{0}/kill".format(container)) params = {} if signal is not None: @@ -810,8 +789,6 @@ class Client(requests.Session): @check_resource def logs(self, container, stdout=True, stderr=True, stream=False, timestamps=False, tail='all'): - if isinstance(container, dict): - container = container.get('Id') if utils.compare_version('1.11', self._version) >= 0: params = {'stderr': stderr and 1 or 0, 'stdout': stdout and 1 or 0, @@ -844,8 +821,6 @@ class Client(requests.Session): @check_resource def pause(self, container): - if isinstance(container, dict): - container = container.get('Id') url = self._url('/containers/{0}/pause'.format(container)) res = self._post(url) self._raise_for_status(res) @@ -855,8 +830,6 @@ class Client(requests.Session): @check_resource def port(self, container, private_port): - if isinstance(container, dict): - container = container.get('Id') res = self._get(self._url("/containers/{0}/json".format(container))) self._raise_for_status(res) json_ = res.json() @@ -961,8 +934,6 @@ class Client(requests.Session): @check_resource def remove_container(self, container, v=False, link=False, force=False): - if isinstance(container, dict): - container = container.get('Id') params = {'v': v, 'link': link, 'force': force} res = self._delete(self._url("/containers/" + container), params=params) @@ -970,8 +941,6 @@ class Client(requests.Session): @check_resource def remove_image(self, image, force=False, noprune=False): - if isinstance(image, dict): - image = image.get('Id') params = {'force': force, 'noprune': noprune} res = self._delete(self._url("/images/" + image), params=params) self._raise_for_status(res) @@ -982,8 +951,6 @@ class Client(requests.Session): raise errors.InvalidVersion( 'rename was only introduced in API version 1.17' ) - if isinstance(container, dict): - container = container.get('Id') url = self._url("/containers/{0}/rename".format(container)) params = {'name': name} res = self._post(url, params=params) @@ -991,9 +958,6 @@ class Client(requests.Session): @check_resource def resize(self, container, height, width): - if isinstance(container, dict): - container = container.get('Id') - params = {'h': height, 'w': width} url = self._url("/containers/{0}/resize".format(container)) res = self._post(url, params=params) @@ -1001,8 +965,6 @@ class Client(requests.Session): @check_resource def restart(self, container, timeout=10): - if isinstance(container, dict): - container = container.get('Id') params = {'t': timeout} url = self._url("/containers/{0}/restart".format(container)) res = self._post(url, params=params) @@ -1067,9 +1029,6 @@ class Client(requests.Session): ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits ) - if isinstance(container, dict): - container = container.get('Id') - url = self._url("/containers/{0}/start".format(container)) if not start_config: start_config = None @@ -1088,15 +1047,11 @@ class Client(requests.Session): raise errors.InvalidVersion( 'Stats retrieval is not supported in API < 1.17!') - if isinstance(container, dict): - container = container.get('Id') url = self._url("/containers/{0}/stats".format(container)) return self._stream_helper(self._get(url, stream=True), decode=decode) @check_resource def stop(self, container, timeout=10): - if isinstance(container, dict): - container = container.get('Id') params = {'t': timeout} url = self._url("/containers/{0}/stop".format(container)) @@ -1118,8 +1073,6 @@ class Client(requests.Session): @check_resource def top(self, container): - if isinstance(container, dict): - container = container.get('Id') u = self._url("/containers/{0}/top".format(container)) return self._result(self._get(u), True) @@ -1129,16 +1082,12 @@ class Client(requests.Session): @check_resource def unpause(self, container): - if isinstance(container, dict): - container = container.get('Id') url = self._url('/containers/{0}/unpause'.format(container)) res = self._post(url) self._raise_for_status(res) @check_resource def wait(self, container, timeout=None): - if isinstance(container, dict): - container = container.get('Id') url = self._url("/containers/{0}/wait".format(container)) res = self._post(url, timeout=timeout) self._raise_for_status(res) diff --git a/docker/utils/decorators.py b/docker/utils/decorators.py index a4be50c..5da3df8 100644 --- a/docker/utils/decorators.py +++ b/docker/utils/decorators.py @@ -4,7 +4,6 @@ from .. import errors def check_resource(f): - @functools.wraps(f) def wrapped(self, resource_id=None, *args, **kwargs): if resource_id is None: @@ -16,5 +15,7 @@ def check_resource(f): raise errors.NullResource( 'image or container param is undefined' ) + if isinstance(resource_id, dict): + resource_id = resource_id.get('Id') return f(self, resource_id, *args, **kwargs) return wrapped diff --git a/tests/test.py b/tests/test.py index bac9592..40a7e30 100644 --- a/tests/test.py +++ b/tests/test.py @@ -1894,15 +1894,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase): timeout=DEFAULT_TIMEOUT_SECONDS ) - def test_inspect_container_empty_id(self): - try: - self.client.inspect_container('') - except docker.errors.NullResource as e: - self.assertEqual( - e.args[0], 'image or container param is undefined' - ) - else: - self.fail('Command expected NullResource exception') + def test_inspect_container_undefined_id(self): + for arg in None, '', {True: True}: + try: + self.client.inspect_container(arg) + except docker.errors.NullResource as e: + self.assertEqual( + e.args[0], 'image or container param is undefined' + ) + else: + self.fail('Command expected NullResource exception') def test_container_stats(self): try: @@ -2075,15 +2076,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase): timeout=DEFAULT_TIMEOUT_SECONDS ) - def test_inspect_image_empty_id(self): - try: - self.client.inspect_image('') - except docker.errors.NullResource as e: - self.assertEqual( - e.args[0], 'image or container param is undefined' - ) - else: - self.fail('Command expected NullResource exception') + def test_inspect_image_undefined_id(self): + for arg in None, '', {True: True}: + try: + self.client.inspect_image(arg) + except docker.errors.NullResource as e: + self.assertEqual( + e.args[0], 'image or container param is undefined' + ) + else: + self.fail('Command expected NullResource exception') def test_insert_image(self): try: |