@ -334,32 +334,17 @@ class EcsServiceManager:
deploymentConfiguration = deployment_configuration ,
deploymentConfiguration = deployment_configuration ,
placementConstraints = placement_constraints ,
placementConstraints = placement_constraints ,
placementStrategy = placement_strategy )
placementStrategy = placement_strategy )
return self . jsonize ( response [ ' service ' ] )
return response [ ' service ' ]
def update_service ( self , service_name , cluster_name , task_definition ,
def update_service ( self , service_name , cluster_name , task_definition ,
load_balancers, desired_count, client_token , role , deployment_configuration ) :
desired_count, deployment_configuration ) :
response = self . ecs . update_service (
response = self . ecs . update_service (
cluster = cluster_name ,
cluster = cluster_name ,
service = service_name ,
service = service_name ,
taskDefinition = task_definition ,
taskDefinition = task_definition ,
desiredCount = desired_count ,
desiredCount = desired_count ,
deploymentConfiguration = deployment_configuration )
deploymentConfiguration = deployment_configuration )
return self . jsonize ( response [ ' service ' ] )
return response [ ' service ' ]
def jsonize ( self , service ) :
# some fields are datetime which is not JSON serializable
# make them strings
if ' deployments ' in service :
for d in service [ ' deployments ' ] :
if ' createdAt ' in d :
d [ ' createdAt ' ] = str ( d [ ' createdAt ' ] )
if ' updatedAt ' in d :
d [ ' updatedAt ' ] = str ( d [ ' updatedAt ' ] )
if ' events ' in service :
for e in service [ ' events ' ] :
if ' createdAt ' in e :
e [ ' createdAt ' ] = str ( e [ ' createdAt ' ] )
return service
def delete_service ( self , service , cluster = None ) :
def delete_service ( self , service , cluster = None ) :
return self . ecs . delete_service ( cluster = cluster , service = service )
return self . ecs . delete_service ( cluster = cluster , service = service )
@ -414,31 +399,30 @@ def main():
if existing and ' status ' in existing and existing [ ' status ' ] == " ACTIVE " :
if existing and ' status ' in existing and existing [ ' status ' ] == " ACTIVE " :
if service_mgr . is_matching_service ( module . params , existing ) :
if service_mgr . is_matching_service ( module . params , existing ) :
matching = True
matching = True
results [ ' service ' ] = service_mgr. jsonize ( existing)
results [ ' service ' ] = existing
else :
else :
update = True
update = True
if not matching :
if not matching :
if not module . check_mode :
if not module . check_mode :
loadBalancers = module . params [ ' load_balancers ' ]
for loadBalancer in loadBalancers :
if ' containerPort ' in loadBalancer :
loadBalancer [ ' containerPort ' ] = int ( loadBalancer [ ' containerPort ' ] )
role = module . params [ ' role ' ]
role = module . params [ ' role ' ]
clientToken = module . params [ ' client_token ' ]
clientToken = module . params [ ' client_token ' ]
loadBalancers = module . params [ ' load_balancers ' ]
if update :
if update :
if ( existing [ ' loadBalancers ' ] or [ ] ) != loadBalancers :
module . fail_json ( msg = " It is not possible to update the load balancers of an existing service " )
# update required
# update required
response = service_mgr . update_service ( module . params [ ' name ' ] ,
response = service_mgr . update_service ( module . params [ ' name ' ] ,
module . params [ ' cluster ' ] ,
module . params [ ' cluster ' ] ,
module . params [ ' task_definition ' ] ,
module . params [ ' task_definition ' ] ,
loadBalancers ,
module . params [ ' desired_count ' ] ,
module . params [ ' desired_count ' ] ,
clientToken ,
role ,
deploymentConfiguration )
deploymentConfiguration )
else :
else :
for loadBalancer in loadBalancers :
if ' containerPort ' in loadBalancer :
loadBalancer [ ' containerPort ' ] = int ( loadBalancer [ ' containerPort ' ] )
# doesn't exist. create it.
# doesn't exist. create it.
response = service_mgr . create_service ( module . params [ ' name ' ] ,
response = service_mgr . create_service ( module . params [ ' name ' ] ,
module . params [ ' cluster ' ] ,
module . params [ ' cluster ' ] ,