Merge in master.
This commit is contained in:
commit
3b4ef2cf15
26 changed files with 565 additions and 65 deletions
|
|
@ -382,9 +382,11 @@ class EC2ContainerServiceBackend(BaseBackend):
|
|||
if not container_instances:
|
||||
raise Exception(
|
||||
"No instances found in cluster {}".format(cluster_name))
|
||||
active_container_instances = [x for x in container_instances if
|
||||
self.container_instances[cluster_name][x].status == 'ACTIVE']
|
||||
for _ in range(count or 1):
|
||||
container_instance_arn = self.container_instances[cluster_name][
|
||||
container_instances[randint(0, len(container_instances) - 1)]
|
||||
active_container_instances[randint(0, len(active_container_instances) - 1)]
|
||||
].containerInstanceArn
|
||||
task = Task(cluster, task_definition, container_instance_arn,
|
||||
overrides or {}, started_by or '')
|
||||
|
|
@ -574,6 +576,25 @@ class EC2ContainerServiceBackend(BaseBackend):
|
|||
|
||||
return container_instance_objects, failures
|
||||
|
||||
def update_container_instances_state(self, cluster_str, list_container_instance_ids, status):
|
||||
cluster_name = cluster_str.split('/')[-1]
|
||||
if cluster_name not in self.clusters:
|
||||
raise Exception("{0} is not a cluster".format(cluster_name))
|
||||
status = status.upper()
|
||||
if status not in ['ACTIVE', 'DRAINING']:
|
||||
raise Exception("An error occurred (InvalidParameterException) when calling the UpdateContainerInstancesState operation: Container instances status should be one of [ACTIVE,DRAINING]")
|
||||
failures = []
|
||||
container_instance_objects = []
|
||||
for container_instance_id in list_container_instance_ids:
|
||||
container_instance = self.container_instances[cluster_name].get(container_instance_id, None)
|
||||
if container_instance is not None:
|
||||
container_instance.status = status
|
||||
container_instance_objects.append(container_instance)
|
||||
else:
|
||||
failures.append(ContainerInstanceFailure('MISSING', container_instance_id))
|
||||
|
||||
return container_instance_objects, failures
|
||||
|
||||
def deregister_container_instance(self, cluster_str, container_instance_str):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -220,3 +220,13 @@ class EC2ContainerServiceResponse(BaseResponse):
|
|||
'failures': [ci.response_object for ci in failures],
|
||||
'containerInstances': [ci.response_object for ci in container_instances]
|
||||
})
|
||||
|
||||
def update_container_instances_state(self):
|
||||
cluster_str = self._get_param('cluster')
|
||||
list_container_instance_arns = self._get_param('containerInstances')
|
||||
status_str = self._get_param('status')
|
||||
container_instances, failures = self.ecs_backend.update_container_instances_state(cluster_str, list_container_instance_arns, status_str)
|
||||
return json.dumps({
|
||||
'failures': [ci.response_object for ci in failures],
|
||||
'containerInstances': [ci.response_object for ci in container_instances]
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue