Kaydet (Commit) af007140 authored tarafından Joffrey F's avatar Joffrey F Kaydeden (comit) Joffrey F

Add support for insert_defaults in inspect_service

Signed-off-by: 's avatarJoffrey F <joffrey@docker.com>
üst ecca6e07
...@@ -136,12 +136,14 @@ class ServiceApiMixin(object): ...@@ -136,12 +136,14 @@ class ServiceApiMixin(object):
@utils.minimum_version('1.24') @utils.minimum_version('1.24')
@utils.check_resource('service') @utils.check_resource('service')
def inspect_service(self, service): def inspect_service(self, service, insert_defaults=None):
""" """
Return information about a service. Return information about a service.
Args: 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: Returns:
``True`` if successful. ``True`` if successful.
...@@ -151,7 +153,15 @@ class ServiceApiMixin(object): ...@@ -151,7 +153,15 @@ class ServiceApiMixin(object):
If the server returns an error. If the server returns an error.
""" """
url = self._url('/services/{0}', service) 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.minimum_version('1.24')
@utils.check_resource('task') @utils.check_resource('task')
......
...@@ -177,12 +177,14 @@ class ServiceCollection(Collection): ...@@ -177,12 +177,14 @@ class ServiceCollection(Collection):
service_id = self.client.api.create_service(**create_kwargs) service_id = self.client.api.create_service(**create_kwargs)
return self.get(service_id) return self.get(service_id)
def get(self, service_id): def get(self, service_id, insert_defaults=None):
""" """
Get a service. Get a service.
Args: Args:
service_id (str): The ID of the service. service_id (str): The ID of the service.
insert_defaults (boolean): If true, default values will be merged
into the output.
Returns: Returns:
(:py:class:`Service`): The service. (:py:class:`Service`): The service.
...@@ -192,8 +194,13 @@ class ServiceCollection(Collection): ...@@ -192,8 +194,13 @@ class ServiceCollection(Collection):
If the service does not exist. If the service does not exist.
:py:class:`docker.errors.APIError` :py:class:`docker.errors.APIError`
If the server returns an error. 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): def list(self, **kwargs):
""" """
......
...@@ -99,6 +99,17 @@ class ServiceTest(BaseAPIIntegrationTest): ...@@ -99,6 +99,17 @@ class ServiceTest(BaseAPIIntegrationTest):
assert 'ID' in svc_info assert 'ID' in svc_info
assert svc_info['ID'] == svc_id['ID'] 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): def test_remove_service_by_id(self):
svc_name, svc_id = self.create_simple_service() svc_name, svc_id = self.create_simple_service()
assert self.client.remove_service(svc_id) assert self.client.remove_service(svc_id)
......
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