From 6b1586748fc9a15aed3268a3d0d0ab1276e148ad Mon Sep 17 00:00:00 2001 From: Kash Date: Fri, 9 Dec 2016 19:39:02 +0000 Subject: [PATCH] Fixes #4538 passing int params as required by boto (#18999) --- .../cloud/amazon/ecs_taskdefinition.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py b/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py index 4ee9003aab..85221a1043 100644 --- a/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py +++ b/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py @@ -48,7 +48,7 @@ options: type: int containers: description: - - A list of containers definitions + - A list of containers definitions required: False type: list of dicts with container definitions volumes: @@ -138,8 +138,24 @@ class EcsTaskManager: return None def register_task(self, family, container_definitions, volumes): + validated_containers = [] + + # Ensures the number parameters are int as required by boto + for container in container_definitions: + for param in ('memory', 'cpu', 'memoryReservation'): + if param in container: + container[param] = int(container[param]) + + if 'portMappings' in container: + for port_mapping in container['portMappings']: + for port in ('hostPort', 'containerPort'): + if port in port_mapping: + port_mapping[port] = int(port_mapping[port]) + + validated_containers.append(container) + response = self.ecs.register_task_definition(family=family, - containerDefinitions=container_definitions, volumes=volumes) + containerDefinitions=validated_containers, volumes=volumes) return response['taskDefinition'] def describe_task_definitions(self, family):