We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add support for DockerVolumeConfiguration in Volume property of AWS::ECS::TaskDefinition
See here for more details: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-dockervolumeconfiguration.html

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `troposphere/ecs.py`
Content:
```
1 from . import AWSObject, AWSProperty
2 from .validators import boolean, integer, network_port, positive_integer
3 
4 
5 LAUNCH_TYPE_EC2 = 'EC2'
6 LAUNCH_TYPE_FARGATE = 'FARGATE'
7 
8 SCHEDULING_STRATEGY_REPLICA = 'REPLICA'
9 SCHEDULING_STRATEGY_DAEMON = 'DAEMON'
10 
11 
12 class Cluster(AWSObject):
13     resource_type = "AWS::ECS::Cluster"
14 
15     props = {
16         'ClusterName': (basestring, False),
17     }
18 
19 
20 class LoadBalancer(AWSProperty):
21     props = {
22         'ContainerName': (basestring, False),
23         'ContainerPort': (network_port, True),
24         'LoadBalancerName': (basestring, False),
25         'TargetGroupArn': (basestring, False),
26     }
27 
28 
29 class DeploymentConfiguration(AWSProperty):
30     props = {
31         'MaximumPercent': (positive_integer, False),
32         'MinimumHealthyPercent': (positive_integer, False),
33     }
34 
35 
36 def placement_strategy_validator(x):
37     valid_values = ['random', 'spread', 'binpack']
38     if x not in valid_values:
39         raise ValueError("Placement Strategy type must be one of: %s" %
40                          ', '.join(valid_values))
41     return x
42 
43 
44 def placement_constraint_validator(x):
45     valid_values = ['distinctInstance', 'memberOf']
46     if x not in valid_values:
47         raise ValueError("Placement Constraint type must be one of: %s" %
48                          ', '.join(valid_values))
49     return x
50 
51 
52 class PlacementConstraint(AWSProperty):
53     props = {
54         'Type': (placement_constraint_validator, True),
55         'Expression': (basestring, False),
56     }
57 
58 
59 class PlacementStrategy(AWSProperty):
60     props = {
61         'Type': (placement_strategy_validator, True),
62         'Field': (basestring, False),
63     }
64 
65 
66 class AwsvpcConfiguration(AWSProperty):
67     props = {
68         'AssignPublicIp': (basestring, False),
69         'SecurityGroups': (list, False),
70         'Subnets': (list, True),
71     }
72 
73 
74 class NetworkConfiguration(AWSProperty):
75     props = {
76         'AwsvpcConfiguration': (AwsvpcConfiguration, False),
77     }
78 
79 
80 def launch_type_validator(x):
81     valid_values = [LAUNCH_TYPE_EC2, LAUNCH_TYPE_FARGATE]
82     if x not in valid_values:
83         raise ValueError("Launch Type must be one of: %s" %
84                          ', '.join(valid_values))
85     return x
86 
87 
88 class ServiceRegistry(AWSProperty):
89     props = {
90         'Port': (integer, False),
91         'RegistryArn': (basestring, False),
92     }
93 
94 
95 class Service(AWSObject):
96     resource_type = "AWS::ECS::Service"
97 
98     props = {
99         'Cluster': (basestring, False),
100         'DeploymentConfiguration': (DeploymentConfiguration, False),
101         'DesiredCount': (positive_integer, False),
102         'HealthCheckGracePeriodSeconds': (positive_integer, False),
103         'LaunchType': (launch_type_validator, False),
104         'LoadBalancers': ([LoadBalancer], False),
105         'NetworkConfiguration': (NetworkConfiguration, False),
106         'Role': (basestring, False),
107         'PlacementConstraints': ([PlacementConstraint], False),
108         'PlacementStrategies': ([PlacementStrategy], False),
109         'PlatformVersion': (basestring, False),
110         'SchedulingStrategy': (basestring, False),
111         'ServiceName': (basestring, False),
112         'ServiceRegistries': ([ServiceRegistry], False),
113         'TaskDefinition': (basestring, True),
114     }
115 
116 
117 class Environment(AWSProperty):
118     props = {
119         'Name': (basestring, True),
120         'Value': (basestring, True),
121     }
122 
123 
124 class MountPoint(AWSProperty):
125     props = {
126         'ContainerPath': (basestring, True),
127         'SourceVolume': (basestring, True),
128         'ReadOnly': (boolean, False),
129     }
130 
131 
132 class PortMapping(AWSProperty):
133     props = {
134         'ContainerPort': (network_port, True),
135         'HostPort': (network_port, False),
136         'Protocol': (basestring, False),
137     }
138 
139 
140 class VolumesFrom(AWSProperty):
141     props = {
142         'SourceContainer': (basestring, True),
143         'ReadOnly': (boolean, False),
144     }
145 
146 
147 class HostEntry(AWSProperty):
148     props = {
149         'Hostname': (basestring, True),
150         'IpAddress': (basestring, True),
151     }
152 
153 
154 class Device(AWSProperty):
155     props = {
156         'ContainerPath': (basestring, False),
157         'HostPath': (basestring, False),
158         'Permissions': ([basestring], False),
159     }
160 
161 
162 class HealthCheck(AWSProperty):
163     props = {
164         'Command': ([basestring], True),
165         'Interval': (integer, False),
166         'Retries': (integer, False),
167         'StartPeriod': (integer, False),
168         'Timeout': (integer, False),
169     }
170 
171 
172 class KernelCapabilities(AWSProperty):
173     props = {
174         'Add': ([basestring], False),
175         'Drop': ([basestring], False),
176     }
177 
178 
179 class LinuxParameters(AWSProperty):
180     props = {
181         'Capabilities': (KernelCapabilities, False),
182         'Devices': ([Device], False),
183         'InitProcessEnabled': (boolean, False),
184     }
185 
186 
187 class LogConfiguration(AWSProperty):
188     props = {
189         'LogDriver': (basestring, True),
190         'Options': (dict, False),
191     }
192 
193 
194 class Ulimit(AWSProperty):
195     props = {
196         'HardLimit': (integer, True),
197         'Name': (basestring, False),
198         'SoftLimit': (integer, True),
199     }
200 
201 
202 class ContainerDefinition(AWSProperty):
203     props = {
204         'Command': ([basestring], False),
205         'Cpu': (positive_integer, False),
206         'DisableNetworking': (boolean, False),
207         'DnsSearchDomains': ([basestring], False),
208         'DnsServers': ([basestring], False),
209         'DockerLabels': (dict, False),
210         'DockerSecurityOptions': ([basestring], False),
211         'EntryPoint': ([basestring], False),
212         'Environment': ([Environment], False),
213         'Essential': (boolean, False),
214         'ExtraHosts': ([HostEntry], False),
215         'HealthCheck': (HealthCheck, False),
216         'Hostname': (basestring, False),
217         'Image': (basestring, True),
218         'Links': ([basestring], False),
219         'LinuxParameters': (LinuxParameters, False),
220         'LogConfiguration': (LogConfiguration, False),
221         'Memory': (positive_integer, False),
222         'MemoryReservation': (positive_integer, False),
223         'MountPoints': ([MountPoint], False),
224         'Name': (basestring, True),
225         'PortMappings': ([PortMapping], False),
226         'Privileged': (boolean, False),
227         'ReadonlyRootFilesystem': (boolean, False),
228         'Ulimits': ([Ulimit], False),
229         'User': (basestring, False),
230         'VolumesFrom': ([VolumesFrom], False),
231         'WorkingDirectory': (basestring, False),
232     }
233 
234 
235 class Host(AWSProperty):
236     props = {
237         'SourcePath': (basestring, False),
238     }
239 
240 
241 class Volume(AWSProperty):
242     props = {
243         'Name': (basestring, True),
244         'Host': (Host, False),
245     }
246 
247 
248 class TaskDefinition(AWSObject):
249     resource_type = "AWS::ECS::TaskDefinition"
250 
251     props = {
252         'ContainerDefinitions': ([ContainerDefinition], True),
253         'Cpu': (basestring, False),
254         'ExecutionRoleArn': (basestring, False),
255         'Family': (basestring, False),
256         'Memory': (basestring, False),
257         'NetworkMode': (basestring, False),
258         'PlacementConstraints': ([PlacementConstraint], False),
259         'RequiresCompatibilities': ([basestring], False),
260         'TaskRoleArn': (basestring, False),
261         'Volumes': ([Volume], False),
262     }
263
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/troposphere/ecs.py b/troposphere/ecs.py
--- a/troposphere/ecs.py
+++ b/troposphere/ecs.py
@@ -49,6 +49,14 @@
     return x
 
 
+def scope_validator(x):
+    valid_values = ['shared', 'task']
+    if x not in valid_values:
+        raise ValueError("Scope type must be one of: %s" %
+                         ', '.join(valid_values))
+    return x
+
+
 class PlacementConstraint(AWSProperty):
     props = {
         'Type': (placement_constraint_validator, True),
@@ -238,8 +246,19 @@
     }
 
 
+class DockerVolumeConfiguration(AWSProperty):
+    props = {
+        'Autoprovision': (boolean, False),
+        'Driver': (basestring, False),
+        'DriverOpts': ([basestring], False),
+        'Labels': ([basestring], False),
+        'Scope': (scope_validator, False)
+    }
+
+
 class Volume(AWSProperty):
     props = {
+        'DockerVolumeConfiguration': (DockerVolumeConfiguration, False),
         'Name': (basestring, True),
         'Host': (Host, False),
     }

{"golden_diff": "diff --git a/troposphere/ecs.py b/troposphere/ecs.py\n--- a/troposphere/ecs.py\n+++ b/troposphere/ecs.py\n@@ -49,6 +49,14 @@\n     return x\n \n \n+def scope_validator(x):\n+    valid_values = ['shared', 'task']\n+    if x not in valid_values:\n+        raise ValueError(\"Scope type must be one of: %s\" %\n+                         ', '.join(valid_values))\n+    return x\n+\n+\n class PlacementConstraint(AWSProperty):\n     props = {\n         'Type': (placement_constraint_validator, True),\n@@ -238,8 +246,19 @@\n     }\n \n \n+class DockerVolumeConfiguration(AWSProperty):\n+    props = {\n+        'Autoprovision': (boolean, False),\n+        'Driver': (basestring, False),\n+        'DriverOpts': ([basestring], False),\n+        'Labels': ([basestring], False),\n+        'Scope': (scope_validator, False)\n+    }\n+\n+\n class Volume(AWSProperty):\n     props = {\n+        'DockerVolumeConfiguration': (DockerVolumeConfiguration, False),\n         'Name': (basestring, True),\n         'Host': (Host, False),\n     }\n", "issue": "Add support for DockerVolumeConfiguration in Volume property of AWS::ECS::TaskDefinition\nSee here for more details: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-dockervolumeconfiguration.html\n", "before_files": [{"content": "from . import AWSObject, AWSProperty\nfrom .validators import boolean, integer, network_port, positive_integer\n\n\nLAUNCH_TYPE_EC2 = 'EC2'\nLAUNCH_TYPE_FARGATE = 'FARGATE'\n\nSCHEDULING_STRATEGY_REPLICA = 'REPLICA'\nSCHEDULING_STRATEGY_DAEMON = 'DAEMON'\n\n\nclass Cluster(AWSObject):\n    resource_type = \"AWS::ECS::Cluster\"\n\n    props = {\n        'ClusterName': (basestring, False),\n    }\n\n\nclass LoadBalancer(AWSProperty):\n    props = {\n        'ContainerName': (basestring, False),\n        'ContainerPort': (network_port, True),\n        'LoadBalancerName': (basestring, False),\n        'TargetGroupArn': (basestring, False),\n    }\n\n\nclass DeploymentConfiguration(AWSProperty):\n    props = {\n        'MaximumPercent': (positive_integer, False),\n        'MinimumHealthyPercent': (positive_integer, False),\n    }\n\n\ndef placement_strategy_validator(x):\n    valid_values = ['random', 'spread', 'binpack']\n    if x not in valid_values:\n        raise ValueError(\"Placement Strategy type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\ndef placement_constraint_validator(x):\n    valid_values = ['distinctInstance', 'memberOf']\n    if x not in valid_values:\n        raise ValueError(\"Placement Constraint type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\nclass PlacementConstraint(AWSProperty):\n    props = {\n        'Type': (placement_constraint_validator, True),\n        'Expression': (basestring, False),\n    }\n\n\nclass PlacementStrategy(AWSProperty):\n    props = {\n        'Type': (placement_strategy_validator, True),\n        'Field': (basestring, False),\n    }\n\n\nclass AwsvpcConfiguration(AWSProperty):\n    props = {\n        'AssignPublicIp': (basestring, False),\n        'SecurityGroups': (list, False),\n        'Subnets': (list, True),\n    }\n\n\nclass NetworkConfiguration(AWSProperty):\n    props = {\n        'AwsvpcConfiguration': (AwsvpcConfiguration, False),\n    }\n\n\ndef launch_type_validator(x):\n    valid_values = [LAUNCH_TYPE_EC2, LAUNCH_TYPE_FARGATE]\n    if x not in valid_values:\n        raise ValueError(\"Launch Type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\nclass ServiceRegistry(AWSProperty):\n    props = {\n        'Port': (integer, False),\n        'RegistryArn': (basestring, False),\n    }\n\n\nclass Service(AWSObject):\n    resource_type = \"AWS::ECS::Service\"\n\n    props = {\n        'Cluster': (basestring, False),\n        'DeploymentConfiguration': (DeploymentConfiguration, False),\n        'DesiredCount': (positive_integer, False),\n        'HealthCheckGracePeriodSeconds': (positive_integer, False),\n        'LaunchType': (launch_type_validator, False),\n        'LoadBalancers': ([LoadBalancer], False),\n        'NetworkConfiguration': (NetworkConfiguration, False),\n        'Role': (basestring, False),\n        'PlacementConstraints': ([PlacementConstraint], False),\n        'PlacementStrategies': ([PlacementStrategy], False),\n        'PlatformVersion': (basestring, False),\n        'SchedulingStrategy': (basestring, False),\n        'ServiceName': (basestring, False),\n        'ServiceRegistries': ([ServiceRegistry], False),\n        'TaskDefinition': (basestring, True),\n    }\n\n\nclass Environment(AWSProperty):\n    props = {\n        'Name': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass MountPoint(AWSProperty):\n    props = {\n        'ContainerPath': (basestring, True),\n        'SourceVolume': (basestring, True),\n        'ReadOnly': (boolean, False),\n    }\n\n\nclass PortMapping(AWSProperty):\n    props = {\n        'ContainerPort': (network_port, True),\n        'HostPort': (network_port, False),\n        'Protocol': (basestring, False),\n    }\n\n\nclass VolumesFrom(AWSProperty):\n    props = {\n        'SourceContainer': (basestring, True),\n        'ReadOnly': (boolean, False),\n    }\n\n\nclass HostEntry(AWSProperty):\n    props = {\n        'Hostname': (basestring, True),\n        'IpAddress': (basestring, True),\n    }\n\n\nclass Device(AWSProperty):\n    props = {\n        'ContainerPath': (basestring, False),\n        'HostPath': (basestring, False),\n        'Permissions': ([basestring], False),\n    }\n\n\nclass HealthCheck(AWSProperty):\n    props = {\n        'Command': ([basestring], True),\n        'Interval': (integer, False),\n        'Retries': (integer, False),\n        'StartPeriod': (integer, False),\n        'Timeout': (integer, False),\n    }\n\n\nclass KernelCapabilities(AWSProperty):\n    props = {\n        'Add': ([basestring], False),\n        'Drop': ([basestring], False),\n    }\n\n\nclass LinuxParameters(AWSProperty):\n    props = {\n        'Capabilities': (KernelCapabilities, False),\n        'Devices': ([Device], False),\n        'InitProcessEnabled': (boolean, False),\n    }\n\n\nclass LogConfiguration(AWSProperty):\n    props = {\n        'LogDriver': (basestring, True),\n        'Options': (dict, False),\n    }\n\n\nclass Ulimit(AWSProperty):\n    props = {\n        'HardLimit': (integer, True),\n        'Name': (basestring, False),\n        'SoftLimit': (integer, True),\n    }\n\n\nclass ContainerDefinition(AWSProperty):\n    props = {\n        'Command': ([basestring], False),\n        'Cpu': (positive_integer, False),\n        'DisableNetworking': (boolean, False),\n        'DnsSearchDomains': ([basestring], False),\n        'DnsServers': ([basestring], False),\n        'DockerLabels': (dict, False),\n        'DockerSecurityOptions': ([basestring], False),\n        'EntryPoint': ([basestring], False),\n        'Environment': ([Environment], False),\n        'Essential': (boolean, False),\n        'ExtraHosts': ([HostEntry], False),\n        'HealthCheck': (HealthCheck, False),\n        'Hostname': (basestring, False),\n        'Image': (basestring, True),\n        'Links': ([basestring], False),\n        'LinuxParameters': (LinuxParameters, False),\n        'LogConfiguration': (LogConfiguration, False),\n        'Memory': (positive_integer, False),\n        'MemoryReservation': (positive_integer, False),\n        'MountPoints': ([MountPoint], False),\n        'Name': (basestring, True),\n        'PortMappings': ([PortMapping], False),\n        'Privileged': (boolean, False),\n        'ReadonlyRootFilesystem': (boolean, False),\n        'Ulimits': ([Ulimit], False),\n        'User': (basestring, False),\n        'VolumesFrom': ([VolumesFrom], False),\n        'WorkingDirectory': (basestring, False),\n    }\n\n\nclass Host(AWSProperty):\n    props = {\n        'SourcePath': (basestring, False),\n    }\n\n\nclass Volume(AWSProperty):\n    props = {\n        'Name': (basestring, True),\n        'Host': (Host, False),\n    }\n\n\nclass TaskDefinition(AWSObject):\n    resource_type = \"AWS::ECS::TaskDefinition\"\n\n    props = {\n        'ContainerDefinitions': ([ContainerDefinition], True),\n        'Cpu': (basestring, False),\n        'ExecutionRoleArn': (basestring, False),\n        'Family': (basestring, False),\n        'Memory': (basestring, False),\n        'NetworkMode': (basestring, False),\n        'PlacementConstraints': ([PlacementConstraint], False),\n        'RequiresCompatibilities': ([basestring], False),\n        'TaskRoleArn': (basestring, False),\n        'Volumes': ([Volume], False),\n    }\n", "path": "troposphere/ecs.py"}], "after_files": [{"content": "from . import AWSObject, AWSProperty\nfrom .validators import boolean, integer, network_port, positive_integer\n\n\nLAUNCH_TYPE_EC2 = 'EC2'\nLAUNCH_TYPE_FARGATE = 'FARGATE'\n\nSCHEDULING_STRATEGY_REPLICA = 'REPLICA'\nSCHEDULING_STRATEGY_DAEMON = 'DAEMON'\n\n\nclass Cluster(AWSObject):\n    resource_type = \"AWS::ECS::Cluster\"\n\n    props = {\n        'ClusterName': (basestring, False),\n    }\n\n\nclass LoadBalancer(AWSProperty):\n    props = {\n        'ContainerName': (basestring, False),\n        'ContainerPort': (network_port, True),\n        'LoadBalancerName': (basestring, False),\n        'TargetGroupArn': (basestring, False),\n    }\n\n\nclass DeploymentConfiguration(AWSProperty):\n    props = {\n        'MaximumPercent': (positive_integer, False),\n        'MinimumHealthyPercent': (positive_integer, False),\n    }\n\n\ndef placement_strategy_validator(x):\n    valid_values = ['random', 'spread', 'binpack']\n    if x not in valid_values:\n        raise ValueError(\"Placement Strategy type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\ndef placement_constraint_validator(x):\n    valid_values = ['distinctInstance', 'memberOf']\n    if x not in valid_values:\n        raise ValueError(\"Placement Constraint type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\ndef scope_validator(x):\n    valid_values = ['shared', 'task']\n    if x not in valid_values:\n        raise ValueError(\"Scope type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\nclass PlacementConstraint(AWSProperty):\n    props = {\n        'Type': (placement_constraint_validator, True),\n        'Expression': (basestring, False),\n    }\n\n\nclass PlacementStrategy(AWSProperty):\n    props = {\n        'Type': (placement_strategy_validator, True),\n        'Field': (basestring, False),\n    }\n\n\nclass AwsvpcConfiguration(AWSProperty):\n    props = {\n        'AssignPublicIp': (basestring, False),\n        'SecurityGroups': (list, False),\n        'Subnets': (list, True),\n    }\n\n\nclass NetworkConfiguration(AWSProperty):\n    props = {\n        'AwsvpcConfiguration': (AwsvpcConfiguration, False),\n    }\n\n\ndef launch_type_validator(x):\n    valid_values = [LAUNCH_TYPE_EC2, LAUNCH_TYPE_FARGATE]\n    if x not in valid_values:\n        raise ValueError(\"Launch Type must be one of: %s\" %\n                         ', '.join(valid_values))\n    return x\n\n\nclass ServiceRegistry(AWSProperty):\n    props = {\n        'Port': (integer, False),\n        'RegistryArn': (basestring, False),\n    }\n\n\nclass Service(AWSObject):\n    resource_type = \"AWS::ECS::Service\"\n\n    props = {\n        'Cluster': (basestring, False),\n        'DeploymentConfiguration': (DeploymentConfiguration, False),\n        'DesiredCount': (positive_integer, False),\n        'HealthCheckGracePeriodSeconds': (positive_integer, False),\n        'LaunchType': (launch_type_validator, False),\n        'LoadBalancers': ([LoadBalancer], False),\n        'NetworkConfiguration': (NetworkConfiguration, False),\n        'Role': (basestring, False),\n        'PlacementConstraints': ([PlacementConstraint], False),\n        'PlacementStrategies': ([PlacementStrategy], False),\n        'PlatformVersion': (basestring, False),\n        'SchedulingStrategy': (basestring, False),\n        'ServiceName': (basestring, False),\n        'ServiceRegistries': ([ServiceRegistry], False),\n        'TaskDefinition': (basestring, True),\n    }\n\n\nclass Environment(AWSProperty):\n    props = {\n        'Name': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass MountPoint(AWSProperty):\n    props = {\n        'ContainerPath': (basestring, True),\n        'SourceVolume': (basestring, True),\n        'ReadOnly': (boolean, False),\n    }\n\n\nclass PortMapping(AWSProperty):\n    props = {\n        'ContainerPort': (network_port, True),\n        'HostPort': (network_port, False),\n        'Protocol': (basestring, False),\n    }\n\n\nclass VolumesFrom(AWSProperty):\n    props = {\n        'SourceContainer': (basestring, True),\n        'ReadOnly': (boolean, False),\n    }\n\n\nclass HostEntry(AWSProperty):\n    props = {\n        'Hostname': (basestring, True),\n        'IpAddress': (basestring, True),\n    }\n\n\nclass Device(AWSProperty):\n    props = {\n        'ContainerPath': (basestring, False),\n        'HostPath': (basestring, False),\n        'Permissions': ([basestring], False),\n    }\n\n\nclass HealthCheck(AWSProperty):\n    props = {\n        'Command': ([basestring], True),\n        'Interval': (integer, False),\n        'Retries': (integer, False),\n        'StartPeriod': (integer, False),\n        'Timeout': (integer, False),\n    }\n\n\nclass KernelCapabilities(AWSProperty):\n    props = {\n        'Add': ([basestring], False),\n        'Drop': ([basestring], False),\n    }\n\n\nclass LinuxParameters(AWSProperty):\n    props = {\n        'Capabilities': (KernelCapabilities, False),\n        'Devices': ([Device], False),\n        'InitProcessEnabled': (boolean, False),\n    }\n\n\nclass LogConfiguration(AWSProperty):\n    props = {\n        'LogDriver': (basestring, True),\n        'Options': (dict, False),\n    }\n\n\nclass Ulimit(AWSProperty):\n    props = {\n        'HardLimit': (integer, True),\n        'Name': (basestring, False),\n        'SoftLimit': (integer, True),\n    }\n\n\nclass ContainerDefinition(AWSProperty):\n    props = {\n        'Command': ([basestring], False),\n        'Cpu': (positive_integer, False),\n        'DisableNetworking': (boolean, False),\n        'DnsSearchDomains': ([basestring], False),\n        'DnsServers': ([basestring], False),\n        'DockerLabels': (dict, False),\n        'DockerSecurityOptions': ([basestring], False),\n        'EntryPoint': ([basestring], False),\n        'Environment': ([Environment], False),\n        'Essential': (boolean, False),\n        'ExtraHosts': ([HostEntry], False),\n        'HealthCheck': (HealthCheck, False),\n        'Hostname': (basestring, False),\n        'Image': (basestring, True),\n        'Links': ([basestring], False),\n        'LinuxParameters': (LinuxParameters, False),\n        'LogConfiguration': (LogConfiguration, False),\n        'Memory': (positive_integer, False),\n        'MemoryReservation': (positive_integer, False),\n        'MountPoints': ([MountPoint], False),\n        'Name': (basestring, True),\n        'PortMappings': ([PortMapping], False),\n        'Privileged': (boolean, False),\n        'ReadonlyRootFilesystem': (boolean, False),\n        'Ulimits': ([Ulimit], False),\n        'User': (basestring, False),\n        'VolumesFrom': ([VolumesFrom], False),\n        'WorkingDirectory': (basestring, False),\n    }\n\n\nclass Host(AWSProperty):\n    props = {\n        'SourcePath': (basestring, False),\n    }\n\n\nclass DockerVolumeConfiguration(AWSProperty):\n    props = {\n        'Autoprovision': (boolean, False),\n        'Driver': (basestring, False),\n        'DriverOpts': ([basestring], False),\n        'Labels': ([basestring], False),\n        'Scope': (scope_validator, False)\n    }\n\n\nclass Volume(AWSProperty):\n    props = {\n        'DockerVolumeConfiguration': (DockerVolumeConfiguration, False),\n        'Name': (basestring, True),\n        'Host': (Host, False),\n    }\n\n\nclass TaskDefinition(AWSObject):\n    resource_type = \"AWS::ECS::TaskDefinition\"\n\n    props = {\n        'ContainerDefinitions': ([ContainerDefinition], True),\n        'Cpu': (basestring, False),\n        'ExecutionRoleArn': (basestring, False),\n        'Family': (basestring, False),\n        'Memory': (basestring, False),\n        'NetworkMode': (basestring, False),\n        'PlacementConstraints': ([PlacementConstraint], False),\n        'RequiresCompatibilities': ([basestring], False),\n        'TaskRoleArn': (basestring, False),\n        'Volumes': ([Volume], False),\n    }\n", "path": "troposphere/ecs.py"}]}