Fix regression on API < 1.25

Signed-off-by: Viktor Adam <rycus86@gmail.com>
This commit is contained in:
Viktor Adam 2018-01-12 22:18:47 +00:00
parent bf5e7702df
commit e75a03fd6d
2 changed files with 32 additions and 1 deletions

View File

@ -137,6 +137,8 @@ class ServiceApiMixin(object):
auth_header = auth.get_config_header(self, registry)
if auth_header:
headers['X-Registry-Auth'] = auth_header
if utils.version_lt(self._version, '1.25'):
networks = networks or task_template.pop('Networks', None)
data = {
'Name': name,
'Labels': labels,
@ -411,7 +413,12 @@ class ServiceApiMixin(object):
if networks is not None:
converted_networks = utils.convert_service_networks(networks)
data['TaskTemplate']['Networks'] = converted_networks
if utils.version_lt(self._version, '1.25'):
data['Networks'] = converted_networks
else:
data['TaskTemplate']['Networks'] = converted_networks
elif utils.version_lt(self._version, '1.25'):
data['Networks'] = current.get('Networks')
elif data['TaskTemplate'].get('Networks') is None:
current_task_template = current.get('TaskTemplate', {})
current_networks = current_task_template.get('Networks')

View File

@ -179,6 +179,30 @@ class ServiceTest(unittest.TestCase):
service.reload()
assert not service.attrs['Spec'].get('Labels')
def test_update_retains_networks(self):
client = docker.from_env(version=TEST_API_VERSION)
network_name = helpers.random_name()
network = client.networks.create(
network_name, driver='overlay'
)
service = client.services.create(
# create arguments
name=helpers.random_name(),
networks=[network.id],
# ContainerSpec arguments
image="alpine",
command="sleep 300"
)
service.update(
# create argument
name=service.name,
# ContainerSpec argument
command="sleep 600"
)
service.reload()
networks = service.attrs['Spec']['TaskTemplate']['Networks']
assert networks == [{'Target': network.id}]
def test_scale_service(self):
client = docker.from_env(version=TEST_API_VERSION)
service = client.services.create(