Renaming new argument

Signed-off-by: Viktor Adam <rycus86@gmail.com>
This commit is contained in:
Viktor Adam 2017-12-14 09:55:36 +00:00
parent 828b865bd7
commit a66c89247a
3 changed files with 41 additions and 48 deletions

View File

@ -62,6 +62,21 @@ def _check_api_features(version, task_template, update_config):
raise_version_error('ContainerSpec.privileges', '1.30') raise_version_error('ContainerSpec.privileges', '1.30')
def _merge_task_template(current, override):
merged = current.copy()
if override is not None:
for ts_key, ts_value in override.items():
if ts_key == 'ContainerSpec':
if 'ContainerSpec' not in merged:
merged['ContainerSpec'] = {}
for cs_key, cs_value in override['ContainerSpec'].items():
if cs_value is not None:
merged['ContainerSpec'][cs_key] = cs_value
elif ts_value is not None:
merged[ts_key] = ts_value
return merged
class ServiceApiMixin(object): class ServiceApiMixin(object):
@utils.minimum_version('1.24') @utils.minimum_version('1.24')
def create_service( def create_service(
@ -306,7 +321,7 @@ class ServiceApiMixin(object):
def update_service(self, service, version, task_template=None, name=None, def update_service(self, service, version, task_template=None, name=None,
labels=None, mode=None, update_config=None, labels=None, mode=None, update_config=None,
networks=None, endpoint_config=None, networks=None, endpoint_config=None,
endpoint_spec=None, use_current_spec=False): endpoint_spec=None, fetch_current_spec=False):
""" """
Update a service. Update a service.
@ -328,8 +343,8 @@ class ServiceApiMixin(object):
the service to. Default: ``None``. the service to. Default: ``None``.
endpoint_spec (EndpointSpec): Properties that can be configured to endpoint_spec (EndpointSpec): Properties that can be configured to
access and load balance a service. Default: ``None``. access and load balance a service. Default: ``None``.
use_current_spec (boolean): Use the undefined settings from the fetch_current_spec (boolean): Use the undefined settings from the
previous specification of the service. Default: ``False`` current specification of the service. Default: ``False``
Returns: Returns:
``True`` if successful. ``True`` if successful.
@ -347,11 +362,10 @@ class ServiceApiMixin(object):
_check_api_features(self._version, task_template, update_config) _check_api_features(self._version, task_template, update_config)
if use_current_spec: if fetch_current_spec:
inspect_defaults = True
if utils.version_lt(self._version, '1.29'): if utils.version_lt(self._version, '1.29'):
inspect_defaults = None inspect_defaults = None
else:
inspect_defaults = True
current = self.inspect_service( current = self.inspect_service(
service, insert_defaults=inspect_defaults service, insert_defaults=inspect_defaults
)['Spec'] )['Spec']
@ -363,15 +377,9 @@ class ServiceApiMixin(object):
data = {} data = {}
headers = {} headers = {}
if name is not None: data['Name'] = current.get('Name') if name is None else name
data['Name'] = name
else:
data['Name'] = current.get('Name')
if labels is not None: data['Labels'] = current.get('Labels') if labels is None else labels
data['Labels'] = labels
else:
data['Labels'] = current.get('Labels')
if mode is not None: if mode is not None:
if not isinstance(mode, dict): if not isinstance(mode, dict):
@ -380,7 +388,7 @@ class ServiceApiMixin(object):
else: else:
data['Mode'] = current.get('Mode') data['Mode'] = current.get('Mode')
data['TaskTemplate'] = self._merge_task_template( data['TaskTemplate'] = _merge_task_template(
current.get('TaskTemplate', {}), task_template current.get('TaskTemplate', {}), task_template
) )
@ -418,18 +426,3 @@ class ServiceApiMixin(object):
) )
self._raise_for_status(resp) self._raise_for_status(resp)
return True return True
@staticmethod
def _merge_task_template(current, override):
merged = current.copy()
if override is not None:
for ts_key, ts_value in override.items():
if ts_key == 'ContainerSpec':
if 'ContainerSpec' not in merged:
merged['ContainerSpec'] = {}
for cs_key, cs_value in override['ContainerSpec'].items():
if cs_value is not None:
merged['ContainerSpec'][cs_key] = cs_value
elif ts_value is not None:
merged[ts_key] = ts_value
return merged

View File

@ -299,10 +299,10 @@ def _get_create_service_kwargs(func_name, kwargs):
if 'force_update' in kwargs: if 'force_update' in kwargs:
task_template_kwargs['force_update'] = kwargs.pop('force_update') task_template_kwargs['force_update'] = kwargs.pop('force_update')
# use the current spec by default if updating the service # fetch the current spec by default if updating the service
# through the model # through the model
use_current_spec = kwargs.pop('use_current_spec', True) fetch_current_spec = kwargs.pop('fetch_current_spec', True)
create_kwargs['use_current_spec'] = use_current_spec create_kwargs['fetch_current_spec'] = fetch_current_spec
# All kwargs should have been consumed by this point, so raise # All kwargs should have been consumed by this point, so raise
# error if any are left # error if any are left

View File

@ -726,7 +726,7 @@ class ServiceTest(BaseAPIIntegrationTest):
task_tmpl = docker.types.TaskTemplate(container_spec, force_update=10) task_tmpl = docker.types.TaskTemplate(container_spec, force_update=10)
self._update_service( self._update_service(
svc_id, name, version_index, task_tmpl, use_current_spec=True svc_id, name, version_index, task_tmpl, fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -753,7 +753,7 @@ class ServiceTest(BaseAPIIntegrationTest):
task_tmpl = docker.types.TaskTemplate(container_spec, force_update=10) task_tmpl = docker.types.TaskTemplate(container_spec, force_update=10)
self._update_service( self._update_service(
svc_id, name, version_index, task_tmpl, name=name, svc_id, name, version_index, task_tmpl, name=name,
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -781,7 +781,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, version_index, labels={'force': 'update'}, svc_id, name, version_index, labels={'force': 'update'},
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -811,7 +811,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, version_index, labels={'force': 'update'}, svc_id, name, version_index, labels={'force': 'update'},
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -827,7 +827,7 @@ class ServiceTest(BaseAPIIntegrationTest):
) )
task_tmpl = docker.types.TaskTemplate(container_spec) task_tmpl = docker.types.TaskTemplate(container_spec)
self._update_service( self._update_service(
svc_id, name, new_index, task_tmpl, use_current_spec=True svc_id, name, new_index, task_tmpl, fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
newer_index = svc_info['Version']['Index'] newer_index = svc_info['Version']['Index']
@ -858,7 +858,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, version_index, labels={'force': 'update'}, svc_id, name, version_index, labels={'force': 'update'},
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -896,7 +896,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, version_index, labels={'force': 'update'}, svc_id, name, version_index, labels={'force': 'update'},
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -908,7 +908,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, new_index, networks=[net1['Id']], svc_id, name, new_index, networks=[net1['Id']],
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
assert 'Networks' in svc_info['Spec']['TaskTemplate'] assert 'Networks' in svc_info['Spec']['TaskTemplate']
@ -951,7 +951,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, version_index, labels={'force': 'update'}, svc_id, name, version_index, labels={'force': 'update'},
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -1003,7 +1003,7 @@ class ServiceTest(BaseAPIIntegrationTest):
version_index = svc_info['Version']['Index'] version_index = svc_info['Version']['Index']
self._update_service( self._update_service(
svc_id, name, version_index, task_tmpl, use_current_spec=True svc_id, name, version_index, task_tmpl, fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -1030,7 +1030,7 @@ class ServiceTest(BaseAPIIntegrationTest):
version_index = svc_info['Version']['Index'] version_index = svc_info['Version']['Index']
self._update_service( self._update_service(
svc_id, name, version_index, labels={}, use_current_spec=True svc_id, name, version_index, labels={}, fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -1061,7 +1061,7 @@ class ServiceTest(BaseAPIIntegrationTest):
) )
task_tmpl = docker.types.TaskTemplate(container_spec) task_tmpl = docker.types.TaskTemplate(container_spec)
self._update_service( self._update_service(
svc_id, name, version_index, task_tmpl, use_current_spec=True svc_id, name, version_index, task_tmpl, fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
new_index = svc_info['Version']['Index'] new_index = svc_info['Version']['Index']
@ -1100,7 +1100,7 @@ class ServiceTest(BaseAPIIntegrationTest):
task_tmpl = docker.types.TaskTemplate(container_spec) task_tmpl = docker.types.TaskTemplate(container_spec)
self._update_service( self._update_service(
svc_id, name, version_index, task_tmpl, name=name, svc_id, name, version_index, task_tmpl, name=name,
networks=[net2['Id']], use_current_spec=True networks=[net2['Id']], fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
task_template = svc_info['Spec']['TaskTemplate'] task_template = svc_info['Spec']['TaskTemplate']
@ -1114,7 +1114,7 @@ class ServiceTest(BaseAPIIntegrationTest):
self._update_service( self._update_service(
svc_id, name, new_index, name=name, networks=[net1['Id']], svc_id, name, new_index, name=name, networks=[net1['Id']],
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
task_template = svc_info['Spec']['TaskTemplate'] task_template = svc_info['Spec']['TaskTemplate']
@ -1136,7 +1136,7 @@ class ServiceTest(BaseAPIIntegrationTest):
) )
self._update_service( self._update_service(
svc_id, name, new_index, task_tmpl, name=name, svc_id, name, new_index, task_tmpl, name=name,
use_current_spec=True fetch_current_spec=True
) )
svc_info = self.client.inspect_service(svc_id) svc_info = self.client.inspect_service(svc_id)
task_template = svc_info['Spec']['TaskTemplate'] task_template = svc_info['Spec']['TaskTemplate']