Adds Support for filtering on schedulingStrategy in ECS#list_services (#2180)
This commit is contained in:
parent
1cb208580d
commit
8cb4db1896
@ -699,12 +699,15 @@ class EC2ContainerServiceBackend(BaseBackend):
|
|||||||
|
|
||||||
return service
|
return service
|
||||||
|
|
||||||
def list_services(self, cluster_str):
|
def list_services(self, cluster_str, scheduling_strategy=None):
|
||||||
cluster_name = cluster_str.split('/')[-1]
|
cluster_name = cluster_str.split('/')[-1]
|
||||||
service_arns = []
|
service_arns = []
|
||||||
for key, value in self.services.items():
|
for key, value in self.services.items():
|
||||||
if cluster_name + ':' in key:
|
if cluster_name + ':' in key:
|
||||||
service_arns.append(self.services[key].arn)
|
service = self.services[key]
|
||||||
|
if scheduling_strategy is None or service.scheduling_strategy == scheduling_strategy:
|
||||||
|
service_arns.append(service.arn)
|
||||||
|
|
||||||
return sorted(service_arns)
|
return sorted(service_arns)
|
||||||
|
|
||||||
def describe_services(self, cluster_str, service_names_or_arns):
|
def describe_services(self, cluster_str, service_names_or_arns):
|
||||||
|
@ -163,7 +163,8 @@ class EC2ContainerServiceResponse(BaseResponse):
|
|||||||
|
|
||||||
def list_services(self):
|
def list_services(self):
|
||||||
cluster_str = self._get_param('cluster')
|
cluster_str = self._get_param('cluster')
|
||||||
service_arns = self.ecs_backend.list_services(cluster_str)
|
scheduling_strategy = self._get_param('schedulingStrategy')
|
||||||
|
service_arns = self.ecs_backend.list_services(cluster_str, scheduling_strategy)
|
||||||
return json.dumps({
|
return json.dumps({
|
||||||
'serviceArns': service_arns
|
'serviceArns': service_arns
|
||||||
# ,
|
# ,
|
||||||
|
@ -388,23 +388,32 @@ def test_list_services():
|
|||||||
cluster='test_ecs_cluster',
|
cluster='test_ecs_cluster',
|
||||||
serviceName='test_ecs_service1',
|
serviceName='test_ecs_service1',
|
||||||
taskDefinition='test_ecs_task',
|
taskDefinition='test_ecs_task',
|
||||||
|
schedulingStrategy='REPLICA',
|
||||||
desiredCount=2
|
desiredCount=2
|
||||||
)
|
)
|
||||||
_ = client.create_service(
|
_ = client.create_service(
|
||||||
cluster='test_ecs_cluster',
|
cluster='test_ecs_cluster',
|
||||||
serviceName='test_ecs_service2',
|
serviceName='test_ecs_service2',
|
||||||
taskDefinition='test_ecs_task',
|
taskDefinition='test_ecs_task',
|
||||||
|
schedulingStrategy='DAEMON',
|
||||||
desiredCount=2
|
desiredCount=2
|
||||||
)
|
)
|
||||||
response = client.list_services(
|
unfiltered_response = client.list_services(
|
||||||
cluster='test_ecs_cluster'
|
cluster='test_ecs_cluster'
|
||||||
)
|
)
|
||||||
len(response['serviceArns']).should.equal(2)
|
len(unfiltered_response['serviceArns']).should.equal(2)
|
||||||
response['serviceArns'][0].should.equal(
|
unfiltered_response['serviceArns'][0].should.equal(
|
||||||
'arn:aws:ecs:us-east-1:012345678910:service/test_ecs_service1')
|
'arn:aws:ecs:us-east-1:012345678910:service/test_ecs_service1')
|
||||||
response['serviceArns'][1].should.equal(
|
unfiltered_response['serviceArns'][1].should.equal(
|
||||||
'arn:aws:ecs:us-east-1:012345678910:service/test_ecs_service2')
|
'arn:aws:ecs:us-east-1:012345678910:service/test_ecs_service2')
|
||||||
|
|
||||||
|
filtered_response = client.list_services(
|
||||||
|
cluster='test_ecs_cluster',
|
||||||
|
schedulingStrategy='REPLICA'
|
||||||
|
)
|
||||||
|
len(filtered_response['serviceArns']).should.equal(1)
|
||||||
|
filtered_response['serviceArns'][0].should.equal(
|
||||||
|
'arn:aws:ecs:us-east-1:012345678910:service/test_ecs_service1')
|
||||||
|
|
||||||
@mock_ecs
|
@mock_ecs
|
||||||
def test_describe_services():
|
def test_describe_services():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user