Kaydet (Commit) 37fb9633 authored tarafından Joffrey F's avatar Joffrey F

Merge branch 'posita-id-resolution-in-check-resource'

...@@ -246,8 +246,6 @@ class Client(requests.Session): ...@@ -246,8 +246,6 @@ class Client(requests.Session):
@check_resource @check_resource
def attach(self, container, stdout=True, stderr=True, def attach(self, container, stdout=True, stderr=True,
stream=False, logs=False): stream=False, logs=False):
if isinstance(container, dict):
container = container.get('Id')
params = { params = {
'logs': logs and 1 or 0, 'logs': logs and 1 or 0,
'stdout': stdout and 1 or 0, 'stdout': stdout and 1 or 0,
...@@ -292,9 +290,6 @@ class Client(requests.Session): ...@@ -292,9 +290,6 @@ class Client(requests.Session):
if ws: if ws:
return self._attach_websocket(container, params) return self._attach_websocket(container, params)
if isinstance(container, dict):
container = container.get('Id')
u = self._url("/containers/{0}/attach".format(container)) u = self._url("/containers/{0}/attach".format(container))
return self._get_raw_response_socket(self.post( return self._get_raw_response_socket(self.post(
u, None, params=self._attach_params(params), stream=True)) u, None, params=self._attach_params(params), stream=True))
...@@ -409,8 +404,6 @@ class Client(requests.Session): ...@@ -409,8 +404,6 @@ class Client(requests.Session):
@check_resource @check_resource
def commit(self, container, repository=None, tag=None, message=None, def commit(self, container, repository=None, tag=None, message=None,
author=None, conf=None): author=None, conf=None):
if isinstance(container, dict):
container = container.get('Id')
params = { params = {
'container': container, 'container': container,
'repo': repository, 'repo': repository,
...@@ -447,8 +440,6 @@ class Client(requests.Session): ...@@ -447,8 +440,6 @@ class Client(requests.Session):
@check_resource @check_resource
def copy(self, container, resource): def copy(self, container, resource):
if isinstance(container, dict):
container = container.get('Id')
res = self._post_json( res = self._post_json(
self._url("/containers/{0}/copy".format(container)), self._url("/containers/{0}/copy".format(container)),
data={"Resource": resource}, data={"Resource": resource},
...@@ -493,8 +484,6 @@ class Client(requests.Session): ...@@ -493,8 +484,6 @@ class Client(requests.Session):
@check_resource @check_resource
def diff(self, container): def diff(self, container):
if isinstance(container, dict):
container = container.get('Id')
return self._result(self._get(self._url("/containers/{0}/changes". return self._result(self._get(self._url("/containers/{0}/changes".
format(container))), True) format(container))), True)
...@@ -539,8 +528,6 @@ class Client(requests.Session): ...@@ -539,8 +528,6 @@ class Client(requests.Session):
raise errors.InvalidVersion( raise errors.InvalidVersion(
'Privileged exec is not supported in API < 1.19' 'Privileged exec is not supported in API < 1.19'
) )
if isinstance(container, dict):
container = container.get('Id')
if isinstance(cmd, six.string_types): if isinstance(cmd, six.string_types):
cmd = shlex.split(str(cmd)) cmd = shlex.split(str(cmd))
...@@ -605,8 +592,6 @@ class Client(requests.Session): ...@@ -605,8 +592,6 @@ class Client(requests.Session):
@check_resource @check_resource
def export(self, container): def export(self, container):
if isinstance(container, dict):
container = container.get('Id')
res = self._get(self._url("/containers/{0}/export".format(container)), res = self._get(self._url("/containers/{0}/export".format(container)),
stream=True) stream=True)
self._raise_for_status(res) self._raise_for_status(res)
...@@ -744,16 +729,12 @@ class Client(requests.Session): ...@@ -744,16 +729,12 @@ class Client(requests.Session):
@check_resource @check_resource
def inspect_container(self, container): def inspect_container(self, container):
if isinstance(container, dict):
container = container.get('Id')
return self._result( return self._result(
self._get(self._url("/containers/{0}/json".format(container))), self._get(self._url("/containers/{0}/json".format(container))),
True) True)
@check_resource @check_resource
def inspect_image(self, image): def inspect_image(self, image):
if isinstance(image, dict):
image = image.get('Id')
return self._result( return self._result(
self._get(self._url("/images/{0}/json".format(image))), self._get(self._url("/images/{0}/json".format(image))),
True True
...@@ -761,8 +742,6 @@ class Client(requests.Session): ...@@ -761,8 +742,6 @@ class Client(requests.Session):
@check_resource @check_resource
def kill(self, container, signal=None): def kill(self, container, signal=None):
if isinstance(container, dict):
container = container.get('Id')
url = self._url("/containers/{0}/kill".format(container)) url = self._url("/containers/{0}/kill".format(container))
params = {} params = {}
if signal is not None: if signal is not None:
...@@ -810,8 +789,6 @@ class Client(requests.Session): ...@@ -810,8 +789,6 @@ class Client(requests.Session):
@check_resource @check_resource
def logs(self, container, stdout=True, stderr=True, stream=False, def logs(self, container, stdout=True, stderr=True, stream=False,
timestamps=False, tail='all'): timestamps=False, tail='all'):
if isinstance(container, dict):
container = container.get('Id')
if utils.compare_version('1.11', self._version) >= 0: if utils.compare_version('1.11', self._version) >= 0:
params = {'stderr': stderr and 1 or 0, params = {'stderr': stderr and 1 or 0,
'stdout': stdout and 1 or 0, 'stdout': stdout and 1 or 0,
...@@ -844,8 +821,6 @@ class Client(requests.Session): ...@@ -844,8 +821,6 @@ class Client(requests.Session):
@check_resource @check_resource
def pause(self, container): def pause(self, container):
if isinstance(container, dict):
container = container.get('Id')
url = self._url('/containers/{0}/pause'.format(container)) url = self._url('/containers/{0}/pause'.format(container))
res = self._post(url) res = self._post(url)
self._raise_for_status(res) self._raise_for_status(res)
...@@ -855,8 +830,6 @@ class Client(requests.Session): ...@@ -855,8 +830,6 @@ class Client(requests.Session):
@check_resource @check_resource
def port(self, container, private_port): def port(self, container, private_port):
if isinstance(container, dict):
container = container.get('Id')
res = self._get(self._url("/containers/{0}/json".format(container))) res = self._get(self._url("/containers/{0}/json".format(container)))
self._raise_for_status(res) self._raise_for_status(res)
json_ = res.json() json_ = res.json()
...@@ -961,8 +934,6 @@ class Client(requests.Session): ...@@ -961,8 +934,6 @@ class Client(requests.Session):
@check_resource @check_resource
def remove_container(self, container, v=False, link=False, force=False): 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} params = {'v': v, 'link': link, 'force': force}
res = self._delete(self._url("/containers/" + container), res = self._delete(self._url("/containers/" + container),
params=params) params=params)
...@@ -970,8 +941,6 @@ class Client(requests.Session): ...@@ -970,8 +941,6 @@ class Client(requests.Session):
@check_resource @check_resource
def remove_image(self, image, force=False, noprune=False): def remove_image(self, image, force=False, noprune=False):
if isinstance(image, dict):
image = image.get('Id')
params = {'force': force, 'noprune': noprune} params = {'force': force, 'noprune': noprune}
res = self._delete(self._url("/images/" + image), params=params) res = self._delete(self._url("/images/" + image), params=params)
self._raise_for_status(res) self._raise_for_status(res)
...@@ -982,8 +951,6 @@ class Client(requests.Session): ...@@ -982,8 +951,6 @@ class Client(requests.Session):
raise errors.InvalidVersion( raise errors.InvalidVersion(
'rename was only introduced in API version 1.17' '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)) url = self._url("/containers/{0}/rename".format(container))
params = {'name': name} params = {'name': name}
res = self._post(url, params=params) res = self._post(url, params=params)
...@@ -991,9 +958,6 @@ class Client(requests.Session): ...@@ -991,9 +958,6 @@ class Client(requests.Session):
@check_resource @check_resource
def resize(self, container, height, width): def resize(self, container, height, width):
if isinstance(container, dict):
container = container.get('Id')
params = {'h': height, 'w': width} params = {'h': height, 'w': width}
url = self._url("/containers/{0}/resize".format(container)) url = self._url("/containers/{0}/resize".format(container))
res = self._post(url, params=params) res = self._post(url, params=params)
...@@ -1001,8 +965,6 @@ class Client(requests.Session): ...@@ -1001,8 +965,6 @@ class Client(requests.Session):
@check_resource @check_resource
def restart(self, container, timeout=10): def restart(self, container, timeout=10):
if isinstance(container, dict):
container = container.get('Id')
params = {'t': timeout} params = {'t': timeout}
url = self._url("/containers/{0}/restart".format(container)) url = self._url("/containers/{0}/restart".format(container))
res = self._post(url, params=params) res = self._post(url, params=params)
...@@ -1067,9 +1029,6 @@ class Client(requests.Session): ...@@ -1067,9 +1029,6 @@ class Client(requests.Session):
ipc_mode=ipc_mode, security_opt=security_opt, ulimits=ulimits 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)) url = self._url("/containers/{0}/start".format(container))
if not start_config: if not start_config:
start_config = None start_config = None
...@@ -1088,15 +1047,11 @@ class Client(requests.Session): ...@@ -1088,15 +1047,11 @@ class Client(requests.Session):
raise errors.InvalidVersion( raise errors.InvalidVersion(
'Stats retrieval is not supported in API < 1.17!') '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)) url = self._url("/containers/{0}/stats".format(container))
return self._stream_helper(self._get(url, stream=True), decode=decode) return self._stream_helper(self._get(url, stream=True), decode=decode)
@check_resource @check_resource
def stop(self, container, timeout=10): def stop(self, container, timeout=10):
if isinstance(container, dict):
container = container.get('Id')
params = {'t': timeout} params = {'t': timeout}
url = self._url("/containers/{0}/stop".format(container)) url = self._url("/containers/{0}/stop".format(container))
...@@ -1118,8 +1073,6 @@ class Client(requests.Session): ...@@ -1118,8 +1073,6 @@ class Client(requests.Session):
@check_resource @check_resource
def top(self, container): def top(self, container):
if isinstance(container, dict):
container = container.get('Id')
u = self._url("/containers/{0}/top".format(container)) u = self._url("/containers/{0}/top".format(container))
return self._result(self._get(u), True) return self._result(self._get(u), True)
...@@ -1129,16 +1082,12 @@ class Client(requests.Session): ...@@ -1129,16 +1082,12 @@ class Client(requests.Session):
@check_resource @check_resource
def unpause(self, container): def unpause(self, container):
if isinstance(container, dict):
container = container.get('Id')
url = self._url('/containers/{0}/unpause'.format(container)) url = self._url('/containers/{0}/unpause'.format(container))
res = self._post(url) res = self._post(url)
self._raise_for_status(res) self._raise_for_status(res)
@check_resource @check_resource
def wait(self, container, timeout=None): def wait(self, container, timeout=None):
if isinstance(container, dict):
container = container.get('Id')
url = self._url("/containers/{0}/wait".format(container)) url = self._url("/containers/{0}/wait".format(container))
res = self._post(url, timeout=timeout) res = self._post(url, timeout=timeout)
self._raise_for_status(res) self._raise_for_status(res)
......
...@@ -4,7 +4,6 @@ from .. import errors ...@@ -4,7 +4,6 @@ from .. import errors
def check_resource(f): def check_resource(f):
@functools.wraps(f) @functools.wraps(f)
def wrapped(self, resource_id=None, *args, **kwargs): def wrapped(self, resource_id=None, *args, **kwargs):
if resource_id is None: if resource_id is None:
...@@ -16,5 +15,7 @@ def check_resource(f): ...@@ -16,5 +15,7 @@ def check_resource(f):
raise errors.NullResource( raise errors.NullResource(
'image or container param is undefined' '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 f(self, resource_id, *args, **kwargs)
return wrapped return wrapped
...@@ -1894,15 +1894,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase): ...@@ -1894,15 +1894,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase):
timeout=DEFAULT_TIMEOUT_SECONDS timeout=DEFAULT_TIMEOUT_SECONDS
) )
def test_inspect_container_empty_id(self): def test_inspect_container_undefined_id(self):
try: for arg in None, '', {True: True}:
self.client.inspect_container('') try:
except docker.errors.NullResource as e: self.client.inspect_container(arg)
self.assertEqual( except docker.errors.NullResource as e:
e.args[0], 'image or container param is undefined' self.assertEqual(
) e.args[0], 'image or container param is undefined'
else: )
self.fail('Command expected NullResource exception') else:
self.fail('Command expected NullResource exception')
def test_container_stats(self): def test_container_stats(self):
try: try:
...@@ -2075,15 +2076,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase): ...@@ -2075,15 +2076,16 @@ class DockerClientTest(Cleanup, base.BaseTestCase):
timeout=DEFAULT_TIMEOUT_SECONDS timeout=DEFAULT_TIMEOUT_SECONDS
) )
def test_inspect_image_empty_id(self): def test_inspect_image_undefined_id(self):
try: for arg in None, '', {True: True}:
self.client.inspect_image('') try:
except docker.errors.NullResource as e: self.client.inspect_image(arg)
self.assertEqual( except docker.errors.NullResource as e:
e.args[0], 'image or container param is undefined' self.assertEqual(
) e.args[0], 'image or container param is undefined'
else: )
self.fail('Command expected NullResource exception') else:
self.fail('Command expected NullResource exception')
def test_insert_image(self): def test_insert_image(self):
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment