We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Cloudwatch Alarm Threshold Type
The parameter type 'Threshold' within Cloudwatch Alarms is currently of type 'integer' whereas the AWS documentations notes this should be a String.

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-threshold

I am hitting an issue when using alarms to check instance health - to monitor StatusCheckFailed I have an implementation which sets Threshold to 0.5 to evaluate a healthcheck of sorts. This works in Cloudformation but fails when I try to use it in the troposphere code.

I think the line 'Threshold': (integer, True), should be 'Threshold': (basestring, True), within cloudwatch.py

Any thoughts?


--- 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/cloudwatch.py`
Content:
```
1 # Copyright (c) 2013, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty, Ref
7 from .validators import integer, positive_integer, boolean
8 
9 
10 class MetricDimension(AWSProperty):
11     props = {
12         'Name': (basestring, True),
13         'Value': (basestring, True),
14     }
15 
16 
17 class Alarm(AWSObject):
18     resource_type = "AWS::CloudWatch::Alarm"
19 
20     props = {
21         'ActionsEnabled': (boolean, False),
22         'AlarmActions': ([basestring, Ref], False),
23         'AlarmDescription': (basestring, False),
24         'AlarmName': (basestring, False),
25         'ComparisonOperator': (basestring, True),
26         'Dimensions': ([MetricDimension], False),
27         'EvaluationPeriods': (positive_integer, True),
28         'InsufficientDataActions': ([basestring, Ref], False),
29         'MetricName': (basestring, True),
30         'Namespace': (basestring, True),
31         'OKActions': ([basestring, Ref], False),
32         'Period': (positive_integer, True),
33         'Statistic': (basestring, True),
34         'Threshold': (integer, True),
35         'Unit': (basestring, False),
36     }
37
```
--- 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/cloudwatch.py b/troposphere/cloudwatch.py
--- a/troposphere/cloudwatch.py
+++ b/troposphere/cloudwatch.py
@@ -4,7 +4,7 @@
 # See LICENSE file for full license.
 
 from . import AWSObject, AWSProperty, Ref
-from .validators import integer, positive_integer, boolean
+from .validators import positive_integer, boolean
 
 
 class MetricDimension(AWSProperty):
@@ -31,6 +31,6 @@
         'OKActions': ([basestring, Ref], False),
         'Period': (positive_integer, True),
         'Statistic': (basestring, True),
-        'Threshold': (integer, True),
+        'Threshold': (basestring, True),
         'Unit': (basestring, False),
     }

{"golden_diff": "diff --git a/troposphere/cloudwatch.py b/troposphere/cloudwatch.py\n--- a/troposphere/cloudwatch.py\n+++ b/troposphere/cloudwatch.py\n@@ -4,7 +4,7 @@\n # See LICENSE file for full license.\n \n from . import AWSObject, AWSProperty, Ref\n-from .validators import integer, positive_integer, boolean\n+from .validators import positive_integer, boolean\n \n \n class MetricDimension(AWSProperty):\n@@ -31,6 +31,6 @@\n         'OKActions': ([basestring, Ref], False),\n         'Period': (positive_integer, True),\n         'Statistic': (basestring, True),\n-        'Threshold': (integer, True),\n+        'Threshold': (basestring, True),\n         'Unit': (basestring, False),\n     }\n", "issue": "Cloudwatch Alarm Threshold Type\nThe parameter type 'Threshold' within Cloudwatch Alarms is currently of type 'integer' whereas the AWS documentations notes this should be a String.\n\nhttp://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html#cfn-cloudwatch-alarms-threshold\n\nI am hitting an issue when using alarms to check instance health - to monitor StatusCheckFailed I have an implementation which sets Threshold to 0.5 to evaluate a healthcheck of sorts. This works in Cloudformation but fails when I try to use it in the troposphere code.\n\nI think the line 'Threshold': (integer, True), should be 'Threshold': (basestring, True), within cloudwatch.py\n\nAny thoughts?\n\n", "before_files": [{"content": "# Copyright (c) 2013, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Ref\nfrom .validators import integer, positive_integer, boolean\n\n\nclass MetricDimension(AWSProperty):\n    props = {\n        'Name': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass Alarm(AWSObject):\n    resource_type = \"AWS::CloudWatch::Alarm\"\n\n    props = {\n        'ActionsEnabled': (boolean, False),\n        'AlarmActions': ([basestring, Ref], False),\n        'AlarmDescription': (basestring, False),\n        'AlarmName': (basestring, False),\n        'ComparisonOperator': (basestring, True),\n        'Dimensions': ([MetricDimension], False),\n        'EvaluationPeriods': (positive_integer, True),\n        'InsufficientDataActions': ([basestring, Ref], False),\n        'MetricName': (basestring, True),\n        'Namespace': (basestring, True),\n        'OKActions': ([basestring, Ref], False),\n        'Period': (positive_integer, True),\n        'Statistic': (basestring, True),\n        'Threshold': (integer, True),\n        'Unit': (basestring, False),\n    }\n", "path": "troposphere/cloudwatch.py"}], "after_files": [{"content": "# Copyright (c) 2013, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Ref\nfrom .validators import positive_integer, boolean\n\n\nclass MetricDimension(AWSProperty):\n    props = {\n        'Name': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass Alarm(AWSObject):\n    resource_type = \"AWS::CloudWatch::Alarm\"\n\n    props = {\n        'ActionsEnabled': (boolean, False),\n        'AlarmActions': ([basestring, Ref], False),\n        'AlarmDescription': (basestring, False),\n        'AlarmName': (basestring, False),\n        'ComparisonOperator': (basestring, True),\n        'Dimensions': ([MetricDimension], False),\n        'EvaluationPeriods': (positive_integer, True),\n        'InsufficientDataActions': ([basestring, Ref], False),\n        'MetricName': (basestring, True),\n        'Namespace': (basestring, True),\n        'OKActions': ([basestring, Ref], False),\n        'Period': (positive_integer, True),\n        'Statistic': (basestring, True),\n        'Threshold': (basestring, True),\n        'Unit': (basestring, False),\n    }\n", "path": "troposphere/cloudwatch.py"}]}