From 28ba10b877e636bca2f9ef32987a4d7ab4374960 Mon Sep 17 00:00:00 2001 From: Dani Hodovic Date: Wed, 17 Oct 2018 20:58:09 +0300 Subject: [PATCH] fix: Parse docker_service scale parameter to int (#45508) --- lib/ansible/modules/cloud/docker/docker_service.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/ansible/modules/cloud/docker/docker_service.py b/lib/ansible/modules/cloud/docker/docker_service.py index 15492a97a76..7c92bcccb35 100644 --- a/lib/ansible/modules/cloud/docker/docker_service.py +++ b/lib/ansible/modules/cloud/docker/docker_service.py @@ -1009,17 +1009,25 @@ class ContainerManager(DockerBaseClass): scale=0 ) containers = service.containers(stopped=True) - if len(containers) != self.scale[service.name]: + scale = self.parse_scale(service.name) + if len(containers) != scale: result['changed'] = True - service_res['scale'] = self.scale[service.name] - len(containers) + service_res['scale'] = scale - len(containers) if not self.check_mode: try: - service.scale(int(self.scale[service.name])) + service.scale(scale) except Exception as exc: self.client.fail("Error scaling %s - %s" % (service.name, str(exc))) result['actions'].append(service_res) return result + def parse_scale(self, service_name): + try: + return int(self.scale[service_name]) + except ValueError: + self.client.fail("Error scaling %s - expected int, got %s", + service_name, str(type(self.scale[service_name]))) + def main(): argument_spec = dict(