Fix resetting ContainerSpec properties to None

Signed-off-by: Viktor Adam <rycus86@gmail.com>
This commit is contained in:
Viktor Adam 2017-11-15 18:30:05 +00:00
parent c78e73bf7a
commit 828b865bd7
2 changed files with 7 additions and 6 deletions

View File

@ -428,7 +428,8 @@ class ServiceApiMixin(object):
if 'ContainerSpec' not in merged:
merged['ContainerSpec'] = {}
for cs_key, cs_value in override['ContainerSpec'].items():
merged['ContainerSpec'][cs_key] = cs_value
else:
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

@ -193,15 +193,15 @@ class ServiceTest(unittest.TestCase):
tasks = service.tasks()
assert len(tasks) == 1
service.update(
# create argument
name=service.name,
mode=docker.types.ServiceMode('replicated', replicas=2),
# ContainerSpec argument
command="sleep 600"
)
while len(tasks) == 1:
tasks = service.tasks()
assert len(tasks) >= 2
# check that the container spec is not overridden with None
service.reload()
spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec']
assert spec.get('Command') == ['sleep', '300']
@helpers.requires_api_version('1.25')
def test_restart_service(self):