mirror of https://github.com/docker/docker-py.git
Fix regression on API < 1.25
Signed-off-by: Viktor Adam <rycus86@gmail.com>
This commit is contained in:
parent
bf5e7702df
commit
e75a03fd6d
|
@ -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)
|
||||
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')
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue