Add ECS Descriptors (#772)

* Add support for "DescribeServices" in ecs mock

* Add support for "DescribeTaskDefinition" in ecs

* Let ecs responses handle baseobject for services
This commit is contained in:
Robert Sheehy 2016-11-23 18:56:12 -06:00 committed by Steve Pulec
commit 17584e9aa4
3 changed files with 152 additions and 0 deletions

View file

@ -217,6 +217,20 @@ class EC2ContainerServiceBackend(BaseBackend):
task_arns.extend([task_definition.arn for task_definition in task_definition_list])
return task_arns
def describe_task_definition(self, task_definition_str):
task_definition_name = task_definition_str.split('/')[-1]
if ':' in task_definition_name:
family, revision = task_definition_name.split(':')
revision = int(revision)
else:
family = task_definition_name
revision = len(self.task_definitions.get(family, []))
if family in self.task_definitions and 0 < revision <= len(self.task_definitions[family]):
return self.task_definitions[family][revision-1]
else:
raise Exception("{0} is not a task_definition".format(task_definition_name))
def deregister_task_definition(self, task_definition_str):
task_definition_name = task_definition_str.split('/')[-1]
family, revision = task_definition_name.split(':')
@ -347,6 +361,15 @@ class EC2ContainerServiceBackend(BaseBackend):
service_arns.append(self.services[key].arn)
return sorted(service_arns)
def describe_services(self, cluster_str, service_names):
cluster_name = cluster_str.split('/')[-1]
services = []
for service_name in service_names:
cluster_service_pair = '{0}:{1}'.format(cluster_name, service_name)
if cluster_service_pair in self.services:
services.append(self.services[cluster_service_pair])
return services
def update_service(self, cluster_str, service_name, task_definition_str, desired_count):
cluster_name = cluster_str.split('/')[-1]
cluster_service_pair = '{0}:{1}'.format(cluster_name, service_name)

View file

@ -70,6 +70,13 @@ class EC2ContainerServiceResponse(BaseResponse):
#'nextToken': str(uuid.uuid1())
})
def describe_task_definition(self):
task_definition_str = self._get_param('taskDefinition')
task_definition = self.ecs_backend.describe_task_definition(task_definition_str)
return json.dumps({
'taskDefinition': task_definition.response_object
})
def deregister_task_definition(self):
task_definition_str = self._get_param('taskDefinition')
task_definition = self.ecs_backend.deregister_task_definition(task_definition_str)
@ -152,6 +159,15 @@ class EC2ContainerServiceResponse(BaseResponse):
# 'nextToken': str(uuid.uuid1())
})
def describe_services(self):
cluster_str = self._get_param('cluster')
service_names = self._get_param('services')
services = self.ecs_backend.describe_services(cluster_str, service_names)
return json.dumps({
'services': [service.response_object for service in services],
'failures': []
})
def update_service(self):
cluster_str = self._get_param('cluster')
service_name = self._get_param('service')