summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2017-11-06 16:04:00 -0800
committerJoffrey F <joffrey@docker.com>2017-11-06 16:07:11 -0800
commit80efa204570ce6de64142f1558e818f901e72f1d (patch)
tree0714158c5945537cc2e2d0d7a4e97437762cbc21
parent11a260225c5875584cc2c9af60e891dbed51bbba (diff)
downloaddocker-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.py16
-rw-r--r--docker/models/services.py11
-rw-r--r--tests/integration/api_service_test.py11
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)