Decentralize cloudformation naming responsibilities (#3201)
* #3127 - Decentralize CF naming responsibilities * Decentralize CloudFormation naming responsibilities * Update URLs in cloudformation_resource_type functions * Fix flake8 errors * Black formatting * Add a bunch of imports to populate CloudFormationModel.__subclasses__ * Add noqa to s3 models import statement in cloudformation/parsing.py * Black formatting * Remove debugging print statement Co-authored-by: Bert Blommers <info@bertblommers.nl>
This commit is contained in:
parent
88a1134657
commit
9a9a1d8413
26 changed files with 717 additions and 208 deletions
|
|
@ -8,7 +8,7 @@ import pytz
|
|||
from boto3 import Session
|
||||
|
||||
from moto.core.exceptions import JsonRESTError
|
||||
from moto.core import BaseBackend, BaseModel
|
||||
from moto.core import BaseBackend, BaseModel, CloudFormationModel
|
||||
from moto.core.utils import unix_time
|
||||
from moto.ec2 import ec2_backends
|
||||
from copy import copy
|
||||
|
|
@ -44,7 +44,7 @@ class BaseObject(BaseModel):
|
|||
return self.gen_response_object()
|
||||
|
||||
|
||||
class Cluster(BaseObject):
|
||||
class Cluster(BaseObject, CloudFormationModel):
|
||||
def __init__(self, cluster_name, region_name):
|
||||
self.active_services_count = 0
|
||||
self.arn = "arn:aws:ecs:{0}:012345678910:cluster/{1}".format(
|
||||
|
|
@ -69,6 +69,15 @@ class Cluster(BaseObject):
|
|||
del response_object["arn"], response_object["name"]
|
||||
return response_object
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_name_type():
|
||||
return "ClusterName"
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_type():
|
||||
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html
|
||||
return "AWS::ECS::Cluster"
|
||||
|
||||
@classmethod
|
||||
def create_from_cloudformation_json(
|
||||
cls, resource_name, cloudformation_json, region_name
|
||||
|
|
@ -116,7 +125,7 @@ class Cluster(BaseObject):
|
|||
raise UnformattedGetAttTemplateException()
|
||||
|
||||
|
||||
class TaskDefinition(BaseObject):
|
||||
class TaskDefinition(BaseObject, CloudFormationModel):
|
||||
def __init__(
|
||||
self,
|
||||
family,
|
||||
|
|
@ -159,6 +168,15 @@ class TaskDefinition(BaseObject):
|
|||
def physical_resource_id(self):
|
||||
return self.arn
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_name_type():
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_type():
|
||||
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html
|
||||
return "AWS::ECS::TaskDefinition"
|
||||
|
||||
@classmethod
|
||||
def create_from_cloudformation_json(
|
||||
cls, resource_name, cloudformation_json, region_name
|
||||
|
|
@ -235,7 +253,7 @@ class Task(BaseObject):
|
|||
return response_object
|
||||
|
||||
|
||||
class Service(BaseObject):
|
||||
class Service(BaseObject, CloudFormationModel):
|
||||
def __init__(
|
||||
self,
|
||||
cluster,
|
||||
|
|
@ -315,6 +333,15 @@ class Service(BaseObject):
|
|||
|
||||
return response_object
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_name_type():
|
||||
return "ServiceName"
|
||||
|
||||
@staticmethod
|
||||
def cloudformation_type():
|
||||
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
|
||||
return "AWS::ECS::Service"
|
||||
|
||||
@classmethod
|
||||
def create_from_cloudformation_json(
|
||||
cls, resource_name, cloudformation_json, region_name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue