Merge pull request #2078 from kyledecot/kd-describe-clusters

Returns an empty list when the cluster does not exist
This commit is contained in:
Mike Grima 2019-03-28 16:23:17 -07:00 committed by GitHub
commit 62da0839ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 5 deletions

View File

@ -358,6 +358,20 @@ class ContainerInstance(BaseObject):
return formatted_attr return formatted_attr
class ClusterFailure(BaseObject):
def __init__(self, reason, cluster_name):
self.reason = reason
self.arn = "arn:aws:ecs:us-east-1:012345678910:cluster/{0}".format(
cluster_name)
@property
def response_object(self):
response_object = self.gen_response_object()
response_object['reason'] = self.reason
response_object['arn'] = self.arn
return response_object
class ContainerInstanceFailure(BaseObject): class ContainerInstanceFailure(BaseObject):
def __init__(self, reason, container_instance_id): def __init__(self, reason, container_instance_id):
@ -419,6 +433,7 @@ class EC2ContainerServiceBackend(BaseBackend):
def describe_clusters(self, list_clusters_name=None): def describe_clusters(self, list_clusters_name=None):
list_clusters = [] list_clusters = []
failures = []
if list_clusters_name is None: if list_clusters_name is None:
if 'default' in self.clusters: if 'default' in self.clusters:
list_clusters.append(self.clusters['default'].response_object) list_clusters.append(self.clusters['default'].response_object)
@ -429,9 +444,8 @@ class EC2ContainerServiceBackend(BaseBackend):
list_clusters.append( list_clusters.append(
self.clusters[cluster_name].response_object) self.clusters[cluster_name].response_object)
else: else:
raise Exception( failures.append(ClusterFailure('MISSING', cluster_name))
"{0} is not a cluster".format(cluster_name)) return list_clusters, failures
return list_clusters
def delete_cluster(self, cluster_str): def delete_cluster(self, cluster_str):
cluster_name = cluster_str.split('/')[-1] cluster_name = cluster_str.split('/')[-1]

View File

@ -45,10 +45,10 @@ class EC2ContainerServiceResponse(BaseResponse):
def describe_clusters(self): def describe_clusters(self):
list_clusters_name = self._get_param('clusters') list_clusters_name = self._get_param('clusters')
clusters = self.ecs_backend.describe_clusters(list_clusters_name) clusters, failures = self.ecs_backend.describe_clusters(list_clusters_name)
return json.dumps({ return json.dumps({
'clusters': clusters, 'clusters': clusters,
'failures': [] 'failures': [cluster.response_object for cluster in failures]
}) })
def delete_cluster(self): def delete_cluster(self):

View File

@ -47,6 +47,15 @@ def test_list_clusters():
'arn:aws:ecs:us-east-1:012345678910:cluster/test_cluster1') 'arn:aws:ecs:us-east-1:012345678910:cluster/test_cluster1')
@mock_ecs
def test_describe_clusters():
client = boto3.client('ecs', region_name='us-east-1')
response = client.describe_clusters(clusters=["some-cluster"])
response['failures'].should.contain({
'arn': 'arn:aws:ecs:us-east-1:012345678910:cluster/some-cluster',
'reason': 'MISSING'
})
@mock_ecs @mock_ecs
def test_delete_cluster(): def test_delete_cluster():
client = boto3.client('ecs', region_name='us-east-1') client = boto3.client('ecs', region_name='us-east-1')