From f89721328ae003d152f63f96e9d0a06a6f2e911f Mon Sep 17 00:00:00 2001 From: beeva-antonioirizar Date: Tue, 9 Feb 2016 16:59:16 +0100 Subject: [PATCH 1/3] add method describe_clusters for service ecs --- moto/ecs/models.py | 14 ++++++++++++++ moto/ecs/responses.py | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/moto/ecs/models.py b/moto/ecs/models.py index 820c99fd1..d62d7ffa2 100644 --- a/moto/ecs/models.py +++ b/moto/ecs/models.py @@ -117,6 +117,20 @@ class EC2ContainerServiceBackend(BaseBackend): """ return [cluster.arn for cluster in self.clusters.values()] + def describe_clusters(self, list_clusters_name=None): + list_clusters = [] + if list_clusters_name is None: + if 'default' in self.clusters: + list_clusters.append(self.clusters['default'].response_object) + else: + for cluster in list_clusters_name: + cluster_name = cluster.split('/')[-1] + if cluster_name in self.clusters: + list_clusters.append(self.clusters[cluster_name].response_object) + else: + raise Exception("{0} is not a cluster".format(cluster_name)) + return list_clusters + def delete_cluster(self, cluster_str): cluster_name = cluster_str.split('/')[-1] if cluster_name in self.clusters: diff --git a/moto/ecs/responses.py b/moto/ecs/responses.py index de2fdb48b..3278dd77a 100644 --- a/moto/ecs/responses.py +++ b/moto/ecs/responses.py @@ -35,6 +35,14 @@ class EC2ContainerServiceResponse(BaseResponse): 'nextToken': str(uuid.uuid1()) }) + def describe_clusters(self): + list_clusters_name = self._get_param('clusters') + clusters = self.ecs_backend.describe_clusters(list_clusters_name) + return json.dumps({ + 'clusters': clusters, + 'failures': [] + }) + def delete_cluster(self): cluster_str = self._get_param('cluster') cluster = self.ecs_backend.delete_cluster(cluster_str) From e7d469f21d68d66c2311aab67df3ec9ac34bd7df Mon Sep 17 00:00:00 2001 From: beeva-antonioirizar Date: Tue, 9 Feb 2016 17:03:25 +0100 Subject: [PATCH 2/3] when create_cluster without name it should create a cluster with name default. Reference documentation http://docs.aws.amazon.com/cli/latest/reference/ecs/create-cluster.html --- moto/ecs/responses.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/moto/ecs/responses.py b/moto/ecs/responses.py index 3278dd77a..644b2c345 100644 --- a/moto/ecs/responses.py +++ b/moto/ecs/responses.py @@ -23,6 +23,8 @@ class EC2ContainerServiceResponse(BaseResponse): def create_cluster(self): cluster_name = self._get_param('clusterName') + if cluster_name is None: + cluster_name = 'default' cluster = self.ecs_backend.create_cluster(cluster_name) return json.dumps({ 'cluster': cluster.response_object From d13199ba063836ff8395ea0d35723e806d845e1a Mon Sep 17 00:00:00 2001 From: beeva-antonioirizar Date: Tue, 9 Feb 2016 18:08:55 +0100 Subject: [PATCH 3/3] remove nextToken if the library doesn't support pagination, because it doesn't send nextToken if it doesn't exceed maxResults. See documentation http://docs.aws.amazon.com/cli/latest/reference/ecs/list-clusters.html --- moto/ecs/responses.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/moto/ecs/responses.py b/moto/ecs/responses.py index 644b2c345..1cf88bd4d 100644 --- a/moto/ecs/responses.py +++ b/moto/ecs/responses.py @@ -33,8 +33,9 @@ class EC2ContainerServiceResponse(BaseResponse): def list_clusters(self): cluster_arns = self.ecs_backend.list_clusters() return json.dumps({ - 'clusterArns': cluster_arns, - 'nextToken': str(uuid.uuid1()) + 'clusterArns': cluster_arns + #, + #'nextToken': str(uuid.uuid1()) }) def describe_clusters(self): @@ -64,8 +65,9 @@ class EC2ContainerServiceResponse(BaseResponse): def list_task_definitions(self): task_definition_arns = self.ecs_backend.list_task_definitions() return json.dumps({ - 'taskDefinitionArns': task_definition_arns, - 'nextToken': str(uuid.uuid1()) + 'taskDefinitionArns': task_definition_arns + #, + #'nextToken': str(uuid.uuid1()) }) def deregister_task_definition(self): @@ -89,8 +91,9 @@ class EC2ContainerServiceResponse(BaseResponse): cluster_str = self._get_param('cluster') service_arns = self.ecs_backend.list_services(cluster_str) return json.dumps({ - 'serviceArns': service_arns, - 'nextToken': str(uuid.uuid1()) + 'serviceArns': service_arns + # , + # 'nextToken': str(uuid.uuid1()) }) def update_service(self):