diff --git a/docker/utils/decorators.py b/docker/utils/decorators.py index 6f438249..1ed0b6a0 100644 --- a/docker/utils/decorators.py +++ b/docker/utils/decorators.py @@ -3,11 +3,14 @@ from .. import errors def check_resource(f): def wrapped(self, resource_id=None, *args, **kwargs): - if resource_id is None and ( - kwargs.get('container') is None and kwargs.get('image') is None - ): - raise errors.NullResource( - 'image or container param is None' - ) + if resource_id is None: + if kwargs.get('container'): + resource_id = kwargs.pop('container') + elif kwargs.get('image'): + resource_id = kwargs.pop('image') + else: + raise errors.NullResource( + 'image or container param is undefined' + ) return f(self, resource_id, *args, **kwargs) return wrapped diff --git a/docker/version.py b/docker/version.py index 4cec7446..7d51a51a 100644 --- a/docker/version.py +++ b/docker/version.py @@ -1,2 +1,2 @@ -version = "1.2.1-dev" +version = "1.2.1" version_info = tuple([int(d) for d in version.replace("-dev", "").split(".")]) diff --git a/docs/change_log.md b/docs/change_log.md index 54da5406..d0611593 100644 --- a/docs/change_log.md +++ b/docs/change_log.md @@ -1,6 +1,14 @@ Change Log ========== +1.2.1 +----- + +### Bugfixes + +* Fixed a bug where the check_resource decorator would break with some + argument-passing methods. (#573) + 1.2.0 ----- diff --git a/tests/test.py b/tests/test.py index d3df5c36..5d31958f 100644 --- a/tests/test.py +++ b/tests/test.py @@ -675,17 +675,23 @@ class DockerClientTest(Cleanup, base.BaseTestCase): try: self.client.start(container=None) except ValueError as e: - self.assertEqual(str(e), 'image or container param is None') + self.assertEqual(str(e), 'image or container param is undefined') else: self.fail('Command should raise ValueError') try: self.client.start(None) except ValueError as e: - self.assertEqual(str(e), 'image or container param is None') + self.assertEqual(str(e), 'image or container param is undefined') else: self.fail('Command should raise ValueError') + def test_start_container_regression_573(self): + try: + self.client.start(**{'container': fake_api.FAKE_CONTAINER_ID}) + except Exception as e: + self.fail('Command should not raise exception: {0}'.format(e)) + def test_create_container_with_lxc_conf(self): try: self.client.create_container(