diff options
author | Joffrey F <joffrey@docker.com> | 2017-11-06 16:04:00 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2017-11-06 16:07:11 -0800 |
commit | 80efa204570ce6de64142f1558e818f901e72f1d (patch) | |
tree | 0714158c5945537cc2e2d0d7a4e97437762cbc21 | |
parent | 11a260225c5875584cc2c9af60e891dbed51bbba (diff) | |
download | docker-py-insert_defaults.tar.gz |
Add support for insert_defaults in inspect_serviceinsert_defaults
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r-- | docker/api/service.py | 16 | ||||
-rw-r--r-- | docker/models/services.py | 11 | ||||
-rw-r--r-- | tests/integration/api_service_test.py | 11 |
3 files changed, 33 insertions, 5 deletions
diff --git a/docker/api/service.py b/docker/api/service.py index e6b4876..4c10ef8 100644 --- a/docker/api/service.py +++ b/docker/api/service.py @@ -136,12 +136,14 @@ class ServiceApiMixin(object): @utils.minimum_version('1.24') @utils.check_resource('service') - def inspect_service(self, service): + def inspect_service(self, service, insert_defaults=None): """ Return information about a service. Args: - service (str): Service name or ID + service (str): Service name or ID. + insert_defaults (boolean): If true, default values will be merged + into the service inspect output. Returns: ``True`` if successful. @@ -151,7 +153,15 @@ class ServiceApiMixin(object): If the server returns an error. """ url = self._url('/services/{0}', service) - return self._result(self._get(url), True) + params = {} + if insert_defaults is not None: + if utils.version_lt(self._version, '1.29'): + raise errors.InvalidVersion( + 'insert_defaults is not supported in API version < 1.29' + ) + params['insertDefaults'] = insert_defaults + + return self._result(self._get(url, params=params), True) @utils.minimum_version('1.24') @utils.check_resource('task') diff --git a/docker/models/services.py b/docker/models/services.py index f2a5d35..6fc5c2a 100644 --- a/docker/models/services.py +++ b/docker/models/services.py @@ -177,12 +177,14 @@ class ServiceCollection(Collection): service_id = self.client.api.create_service(**create_kwargs) return self.get(service_id) - def get(self, service_id): + def get(self, service_id, insert_defaults=None): """ Get a service. Args: service_id (str): The ID of the service. + insert_defaults (boolean): If true, default values will be merged + into the output. Returns: (:py:class:`Service`): The service. @@ -192,8 +194,13 @@ class ServiceCollection(Collection): If the service does not exist. :py:class:`docker.errors.APIError` If the server returns an error. + :py:class:`docker.errors.InvalidVersion` + If one of the arguments is not supported with the current + API version. """ - return self.prepare_model(self.client.api.inspect_service(service_id)) + return self.prepare_model( + self.client.api.inspect_service(service_id, insert_defaults) + ) def list(self, **kwargs): """ diff --git a/tests/integration/api_service_test.py b/tests/integration/api_service_test.py index 8c6d4af..b931154 100644 --- a/tests/integration/api_service_test.py +++ b/tests/integration/api_service_test.py @@ -99,6 +99,17 @@ class ServiceTest(BaseAPIIntegrationTest): assert 'ID' in svc_info assert svc_info['ID'] == svc_id['ID'] + @requires_api_version('1.29') + def test_inspect_service_insert_defaults(self): + svc_name, svc_id = self.create_simple_service() + svc_info = self.client.inspect_service(svc_id) + svc_info_defaults = self.client.inspect_service( + svc_id, insert_defaults=True + ) + assert svc_info != svc_info_defaults + assert 'RollbackConfig' in svc_info_defaults['Spec'] + assert 'RollbackConfig' not in svc_info['Spec'] + def test_remove_service_by_id(self): svc_name, svc_id = self.create_simple_service() assert self.client.remove_service(svc_id) |