kumogata-template 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/lib/kumogata/template/cloudwatch.rb +213 -3
- data/lib/kumogata/template/ec2.rb +3 -1
- data/lib/kumogata/template/helper.rb +4 -0
- data/lib/kumogata/template/version.rb +1 -1
- data/template/autoscaling-scheduled-action.rb +9 -7
- data/template/cloudwatch-alarm.rb +5 -5
- data/template/elasticache-cache-cluster.rb +5 -3
- data/template/elasticache-replication-group.rb +6 -1
- data/test/cloudwatch_test.rb +151 -0
- data/test/ec2_test.rb +25 -0
- data/test/helper_test.rb +22 -0
- data/test/template/autoscaling-scheduled-action_test.rb +24 -1
- data/test/template/cloudwatch-alarm_test.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3ef42d67f39067721ba98afb39d9392c2d0551e
|
4
|
+
data.tar.gz: 2b67f7e99a815830cded5cf6ae4cb5d295bfb9da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5cfcba9ce73284c4ca4de89ef518e136f165f64e8e42145c7bdfb850860a290205e2ce652023bcb0a593b6ccef6925b371608efca172b415fba7a47901a08681
|
7
|
+
data.tar.gz: 11bfdc2ace307e23e6c71e93e1bad0dfdcca46c9e5324f3ad75a334712a12bc3f19df6b93acb521212ef01644e783edb2ec94cdf724157e74e9824797569d5f3
|
data/Gemfile.lock
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
kumogata-template (0.0.
|
4
|
+
kumogata-template (0.0.17)
|
5
5
|
aws-sdk (~> 2.3)
|
6
6
|
kumogata (= 0.5.12)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
aws-sdk (2.7.
|
12
|
-
aws-sdk-resources (= 2.7.
|
13
|
-
aws-sdk-core (2.7.
|
11
|
+
aws-sdk (2.7.10)
|
12
|
+
aws-sdk-resources (= 2.7.10)
|
13
|
+
aws-sdk-core (2.7.10)
|
14
14
|
aws-sigv4 (~> 1.0)
|
15
15
|
jmespath (~> 1.0)
|
16
|
-
aws-sdk-resources (2.7.
|
17
|
-
aws-sdk-core (= 2.7.
|
16
|
+
aws-sdk-resources (2.7.10)
|
17
|
+
aws-sdk-core (= 2.7.10)
|
18
18
|
aws-sdk-v1 (1.66.0)
|
19
19
|
json (~> 1.4)
|
20
20
|
nokogiri (>= 1.4.4)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Helper - CloudWatch
|
3
3
|
#
|
4
|
+
require 'kumogata/template/helper'
|
4
5
|
|
5
6
|
def _cloudwatch_to_period(value)
|
6
7
|
return value if value.nil?
|
@@ -40,8 +41,124 @@ def _cloudwatch_to_statistic(value)
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
|
-
def
|
44
|
-
|
44
|
+
def _cloudwatch_to_metric(value)
|
45
|
+
prefix = $1 if value =~ /^(\w+) /
|
46
|
+
# http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html
|
47
|
+
case prefix
|
48
|
+
when "ec2", "ec2 spot", "ecs", "eb", "ebs", "efs", "elb", "alb", "emr", "es",
|
49
|
+
"transcoder", "iot",
|
50
|
+
"kinesis firehose", "firehose", "kinesis", "kms",
|
51
|
+
"lambda", "ml",
|
52
|
+
"ops works", "ow",
|
53
|
+
"polly",
|
54
|
+
"redshift",
|
55
|
+
"rds", "route53",
|
56
|
+
"ses", "sns", "sqs", "s3", "swf", "storage", "storage gateway",
|
57
|
+
"waf", "work spaces", "ws"
|
58
|
+
value.slice!(/^#{prefix} /)
|
59
|
+
value = value.split(" ").collect! do |v|
|
60
|
+
case v
|
61
|
+
when "cpu", "iops"
|
62
|
+
v.upcase
|
63
|
+
else
|
64
|
+
v.capitalize
|
65
|
+
end
|
66
|
+
end.join("")
|
67
|
+
end
|
68
|
+
value
|
69
|
+
end
|
70
|
+
|
71
|
+
def _cloudwatch_to_namespace(value)
|
72
|
+
return value if value.include? "/"
|
73
|
+
# http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-namespaces.html
|
74
|
+
value =
|
75
|
+
case value
|
76
|
+
when "api gateway"
|
77
|
+
"ApiGateway"
|
78
|
+
when "auto scaling"
|
79
|
+
"AutoScaling"
|
80
|
+
when "billing"
|
81
|
+
"Billing"
|
82
|
+
when "cloud front"
|
83
|
+
"CloudFront"
|
84
|
+
when "cloud search"
|
85
|
+
"CloudSearch"
|
86
|
+
when "cloudwatch events"
|
87
|
+
"Events"
|
88
|
+
when "cloudwatch logs"
|
89
|
+
"Logs"
|
90
|
+
when "dynamodb", "dynamod db"
|
91
|
+
"DynamoDB"
|
92
|
+
when "ec2"
|
93
|
+
"EC2"
|
94
|
+
when "ec2 spot"
|
95
|
+
"EC2Spot"
|
96
|
+
when "ecs"
|
97
|
+
"ECS"
|
98
|
+
when "eb"
|
99
|
+
"ElasticBeanstalk"
|
100
|
+
when "ebs"
|
101
|
+
"EBS"
|
102
|
+
when "efs"
|
103
|
+
"EFS"
|
104
|
+
when "elb"
|
105
|
+
"ELB"
|
106
|
+
when "alb"
|
107
|
+
"ApplicationELB"
|
108
|
+
when "transcoder"
|
109
|
+
"ElasticTranscoder"
|
110
|
+
when "elasti cache", "cache"
|
111
|
+
"ElastiCache"
|
112
|
+
when "es"
|
113
|
+
"ES"
|
114
|
+
when "emr"
|
115
|
+
"ElasticMapReduce"
|
116
|
+
when "iot"
|
117
|
+
"IoT"
|
118
|
+
when "kms"
|
119
|
+
"KMS"
|
120
|
+
when "kinesis analytics"
|
121
|
+
"KinesisAnalytics"
|
122
|
+
when "kinesis firehose", "firehose"
|
123
|
+
"Firehose"
|
124
|
+
when "kinesis"
|
125
|
+
"Kinesis"
|
126
|
+
when "lambda"
|
127
|
+
"Lambda"
|
128
|
+
when "ml"
|
129
|
+
"ML"
|
130
|
+
when "ops works", "ow"
|
131
|
+
"OpsWorks"
|
132
|
+
when "polly"
|
133
|
+
"Polly"
|
134
|
+
when "redshift"
|
135
|
+
"Redshift"
|
136
|
+
when "rds"
|
137
|
+
"RDS"
|
138
|
+
when "route53"
|
139
|
+
"Route53"
|
140
|
+
when "ses"
|
141
|
+
"SES"
|
142
|
+
when "sns"
|
143
|
+
"SNS"
|
144
|
+
when "sqs"
|
145
|
+
"SQS"
|
146
|
+
when "s3"
|
147
|
+
"S3"
|
148
|
+
when "swf"
|
149
|
+
"SWF"
|
150
|
+
when "storage", "storage gateway"
|
151
|
+
"StorageGateway"
|
152
|
+
when "waf"
|
153
|
+
"WAF"
|
154
|
+
when "work spaces", "ws"
|
155
|
+
"WorkSpaces"
|
156
|
+
end
|
157
|
+
"AWS/#{value}"
|
158
|
+
end
|
159
|
+
|
160
|
+
def _cloudwatch_to_operator(value)
|
161
|
+
case value
|
45
162
|
when ">="
|
46
163
|
"GreaterThanOrEqualToThreshold"
|
47
164
|
when ">"
|
@@ -51,16 +168,109 @@ def _cloudwatch_convert_operator(operator)
|
|
51
168
|
when "<"
|
52
169
|
"LessThanThreshold"
|
53
170
|
else
|
54
|
-
_valid_values(
|
171
|
+
_valid_values(value,
|
55
172
|
%w( GreaterThanOrEqualToThreshold GreaterThanThreshold
|
56
173
|
LessThanOrEqualToThreshold LessThanThreshold ),
|
57
174
|
"GreaterThanThreshold")
|
58
175
|
end
|
59
176
|
end
|
60
177
|
|
178
|
+
def _cloudwatch_to_unit(value)
|
179
|
+
case value
|
180
|
+
when "sec"
|
181
|
+
"Seconds"
|
182
|
+
when "ms"
|
183
|
+
"Microseconds"
|
184
|
+
when "mms"
|
185
|
+
"Milliseconds"
|
186
|
+
when "B"
|
187
|
+
"Bytes"
|
188
|
+
when "KB"
|
189
|
+
"Kilobytes"
|
190
|
+
when "MB"
|
191
|
+
"Megabytes"
|
192
|
+
when "GB"
|
193
|
+
"Gigabytes"
|
194
|
+
when "TB"
|
195
|
+
"Terabytes"
|
196
|
+
when "b"
|
197
|
+
"Bits"
|
198
|
+
when "kb", "Kb"
|
199
|
+
"Kilobits"
|
200
|
+
when "mb", "Mb"
|
201
|
+
"Megabits"
|
202
|
+
when "gb", "Gb"
|
203
|
+
"Gigabits"
|
204
|
+
when "tb", "Tb"
|
205
|
+
"Terabits"
|
206
|
+
when "%", "percent"
|
207
|
+
"Percent"
|
208
|
+
when "count"
|
209
|
+
"Count"
|
210
|
+
when "B/s"
|
211
|
+
"Bytes/Second"
|
212
|
+
when "KB/s"
|
213
|
+
"Kilobytes/Second"
|
214
|
+
when "MB/s"
|
215
|
+
"Megabytes/Second"
|
216
|
+
when "GB/s"
|
217
|
+
"Gigabyes/Second"
|
218
|
+
when "TB/s"
|
219
|
+
"Terabytes/Second"
|
220
|
+
when "bps"
|
221
|
+
"Bits/Second"
|
222
|
+
when "kbps"
|
223
|
+
"Kilobits/Second"
|
224
|
+
when "mbps"
|
225
|
+
"Megabits/Second"
|
226
|
+
when "gbps"
|
227
|
+
"Gigabits/Second"
|
228
|
+
when "tbps"
|
229
|
+
"Terabits/Second"
|
230
|
+
when "cps"
|
231
|
+
"Count/Second"
|
232
|
+
else
|
233
|
+
_valid_values(value,
|
234
|
+
%w(Seconds Microseconds Milliseconds Bytes Kilobytes Megabytes Gigabytes Terabytes Bits Kilobits Megabits Gigabits Terabits Percent Count Bytes/Second Kilobytes/Second Megabytes/Second Gigabytes/Second Terabytes/Second Bits/Second Kilobits/Second Megabits/Second Gigabits/Second Terabits/Second Count/Second None),
|
235
|
+
"")
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
def _cloudwatch_to_ec2_action(value)
|
240
|
+
value = _valid_values(value, %w( recover stop terminate reboot ), "recover")
|
241
|
+
_{
|
242
|
+
Fn__Join "", [
|
243
|
+
"arn:aws:automate:",
|
244
|
+
_{
|
245
|
+
Ref "AWS::Region"
|
246
|
+
},
|
247
|
+
":ec2:#{value}"
|
248
|
+
]
|
249
|
+
}
|
250
|
+
end
|
251
|
+
|
61
252
|
def _cloudwatch_dimension(args)
|
62
253
|
_{
|
63
254
|
Name args[:name]
|
64
255
|
Value _ref_string("value", args)
|
65
256
|
}
|
66
257
|
end
|
258
|
+
|
259
|
+
def _cloudwatch_actions(args)
|
260
|
+
actions = args[:actions] || args[:ref_actions] || []
|
261
|
+
is_ref = args.key? :ref_actions
|
262
|
+
|
263
|
+
array = []
|
264
|
+
actions.each do |v|
|
265
|
+
if v =~ /ec2 (\w)/
|
266
|
+
array << _cloudwatch_to_ec2_action($1)
|
267
|
+
else
|
268
|
+
if is_ref
|
269
|
+
array << _ref_string("action", { ref_action: v })
|
270
|
+
else
|
271
|
+
array << v
|
272
|
+
end
|
273
|
+
end
|
274
|
+
end
|
275
|
+
array
|
276
|
+
end
|
@@ -148,7 +148,9 @@ def _ec2_network_interface(args, is_spot = false)
|
|
148
148
|
end
|
149
149
|
|
150
150
|
def _ec2_image(instance_type, args)
|
151
|
-
|
151
|
+
image_id = args[:image_id] || false
|
152
|
+
return args[:image_id] if image_id
|
153
|
+
|
152
154
|
resource_image = _resource_name(args[:image] || EC2_DEFAULT_IMAGE)
|
153
155
|
_find_in_map("AWSRegionArch2AMI#{resource_image}",
|
154
156
|
_{ Ref "AWS::Region" },
|
@@ -24,6 +24,10 @@ def _bool(name, args, default = false)
|
|
24
24
|
args.key?(name.to_sym) ? args[name.to_sym].to_s : default.to_s
|
25
25
|
end
|
26
26
|
|
27
|
+
def _integer(name, args, default = 0)
|
28
|
+
args.key?(name.to_sym) ? args[name.to_sym].to_i : default
|
29
|
+
end
|
30
|
+
|
27
31
|
def _capitalize(name)
|
28
32
|
name.split(' ').map(&:capitalize).join()
|
29
33
|
end
|
@@ -1 +1 @@
|
|
1
|
-
KUMOGATA_TEMPLATE_VERSION = '0.0.
|
1
|
+
KUMOGATA_TEMPLATE_VERSION = '0.0.18'
|
@@ -7,16 +7,18 @@ require 'kumogata/template/helper'
|
|
7
7
|
name = _resource_name(args[:name], "autoscaling scheduled action")
|
8
8
|
autoscaling = _ref_string("autoscaling", args, "autoscaling group")
|
9
9
|
autoscaling = _ref_resource_name(args, "autoscaling group") if autoscaling.empty?
|
10
|
-
desired =
|
10
|
+
desired = _integer("desired", args, -1)
|
11
11
|
end_time =
|
12
12
|
if args.key? :end_time
|
13
13
|
_timestamp_utc(args[:end_time])
|
14
14
|
else
|
15
15
|
""
|
16
16
|
end
|
17
|
-
max =
|
18
|
-
|
19
|
-
min =
|
17
|
+
max = _integer("max", args, -1)
|
18
|
+
max = desired if max < desired
|
19
|
+
min = _integer("min", args, -1)
|
20
|
+
min = desired if min < desired
|
21
|
+
|
20
22
|
recurrence =
|
21
23
|
if args.key? :recurrence
|
22
24
|
case args[:recurrence]
|
@@ -49,10 +51,10 @@ _(name) do
|
|
49
51
|
Type "AWS::AutoScaling::ScheduledAction"
|
50
52
|
Properties do
|
51
53
|
AutoScalingGroupName autoscaling
|
52
|
-
DesiredCapacity desired
|
54
|
+
DesiredCapacity desired if desired > -1
|
53
55
|
EndTime end_time unless end_time.empty?
|
54
|
-
MaxSize max
|
55
|
-
MinSize min
|
56
|
+
MaxSize max if max > -1
|
57
|
+
MinSize min if min > -1
|
56
58
|
Recurrence recurrence unless recurrence.empty?
|
57
59
|
StartTime start_time unless start_time.empty?
|
58
60
|
end
|
@@ -7,21 +7,21 @@ require 'kumogata/template/cloudwatch'
|
|
7
7
|
|
8
8
|
name = _resource_name(args[:name], "alarm")
|
9
9
|
enabled = _bool("enabled", args, true)
|
10
|
-
actions =
|
10
|
+
actions = _cloudwatch_actions(args)
|
11
11
|
description = args[:description] || ""
|
12
12
|
alarm_name = _ref_name("alarm_name", args)
|
13
|
-
operator =
|
13
|
+
operator = _cloudwatch_to_operator(args[:operator])
|
14
14
|
dimensions = (args[:dimensions] || []).collect{|v| _cloudwatch_dimension(v) }
|
15
15
|
evaluation = args[:evaluation] || 3
|
16
16
|
insufficients = args[:insufficients] || []
|
17
|
-
metric = args[:metric]
|
18
|
-
namespace = args[:namespace]
|
17
|
+
metric = _cloudwatch_to_metric(args[:metric])
|
18
|
+
namespace = _cloudwatch_to_namespace(args[:namespace])
|
19
19
|
ok_actions = args[:ok_actions] || []
|
20
20
|
period = _cloudwatch_to_period(args[:period] || "5m")
|
21
21
|
statistic = _valid_values(_cloudwatch_to_statistic(args[:statistic]),
|
22
22
|
%w(SampleCount Average Sum Minimum Maximum), "Average")
|
23
23
|
threshold = args[:threshold] || 60
|
24
|
-
unit =
|
24
|
+
unit = _cloudwatch_to_unit(args[:unit])
|
25
25
|
|
26
26
|
_(name) do
|
27
27
|
Type "AWS::CloudWatch::Alarm"
|
@@ -30,6 +30,8 @@ port = PORT[engine.to_sym] if port.empty?
|
|
30
30
|
az = _availability_zone(args, false)
|
31
31
|
azs = _availability_zones(args, false)
|
32
32
|
maintenance = _maintenance_window("elasticache", args[:maintenance] || DEFAULT_MAINTENANCE_TIME[:elasticache])
|
33
|
+
snapshot_arn = args[:snapshot_arn] || ""
|
34
|
+
snapshot_name = args[:snapshot_name] || ""
|
33
35
|
snapshot_retention = args[:snapshot_retention] || DEFAULT_SNAPSHOT_NUM
|
34
36
|
snapshot_window = _window_time("elasticache", args[:snapshot_window_start] || DEFAULT_SNAPSHOT_TIME[:elasticache])
|
35
37
|
tags = _tags(args)
|
@@ -42,7 +44,7 @@ _(name) do
|
|
42
44
|
AZMode azmode unless azmode.empty? and engine == "redis"
|
43
45
|
CacheNodeType node
|
44
46
|
CacheParameterGroupName parameter
|
45
|
-
#
|
47
|
+
#CacheSecurityGroupNames
|
46
48
|
CacheSubnetGroupName subnet
|
47
49
|
ClusterName cluster
|
48
50
|
Engine engine
|
@@ -53,8 +55,8 @@ _(name) do
|
|
53
55
|
PreferredAvailabilityZone az if engine == "redis" and !az.empty?
|
54
56
|
PreferredAvailabilityZones azs if engine == "memached" and !azs.empty?
|
55
57
|
PreferredMaintenanceWindow maintenance
|
56
|
-
|
57
|
-
|
58
|
+
SnapshotArns snapshot_arn unless snapshot_arn.empty?
|
59
|
+
SnapshotName snapshot_name unless snapshot_name.empty?
|
58
60
|
SnapshotRetentionLimit snapshot_retention if engine == "redis"
|
59
61
|
SnapshotWindow snapshot_window if engine == "redis"
|
60
62
|
Tags tags
|
@@ -30,7 +30,10 @@ azs = _availability_zones(args, false)
|
|
30
30
|
maintenance = _maintenance_window("elasticache", args[:maintenance] || DEFAULT_MAINTENANCE_TIME[:elasticache])
|
31
31
|
description = args[:description] || "#{args[:name]} cache replication group description"
|
32
32
|
security_groups = _ref_array("security_groups", args, "security group")
|
33
|
+
snapshot_arn = args[:snapshot_arn] || ""
|
34
|
+
snapshot_name = args[:snapshot_name] || ""
|
33
35
|
snapshot_retention = args[:snapshot_retention] || DEFAULT_SNAPSHOT_NUM
|
36
|
+
snapshot_id = args[:snapshot_id] || ""
|
34
37
|
snapshot_window = _window_time("elasticache", args[:snapshot_window_start] || DEFAULT_SNAPSHOT_TIME[:elasticache])
|
35
38
|
tags = _tags(args)
|
36
39
|
|
@@ -52,8 +55,10 @@ _(name) do
|
|
52
55
|
PreferredMaintenanceWindow maintenance
|
53
56
|
ReplicationGroupDescription description
|
54
57
|
SecurityGroupIds security_groups unless security_groups.empty?
|
55
|
-
|
58
|
+
SnapshotArns snapshot_arn unless snapshot_arn.empty?
|
59
|
+
SnapshotName snapshot_name unless snapshot_name.empty?
|
56
60
|
SnapshotRetentionLimit snapshot_retention if 0 < snapshot_retention
|
61
|
+
SnapshottingClusterId snapshot_id unless snapshot_id.empty?
|
57
62
|
SnapshotWindow snapshot_window unless snapshot_retention < 0 and snapshot_window.empty?
|
58
63
|
Tags tags
|
59
64
|
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
require 'abstract_unit'
|
2
|
+
require 'kumogata/template/cloudwatch'
|
3
|
+
|
4
|
+
class CloudWatchTest < Minitest::Test
|
5
|
+
def test_cloudwatch_to_period
|
6
|
+
template = <<-EOS
|
7
|
+
Test _cloudwatch_to_period("1m")
|
8
|
+
EOS
|
9
|
+
act_template = run_client_as_json(template)
|
10
|
+
exp_template = <<-EOS
|
11
|
+
{
|
12
|
+
"Test": "60"
|
13
|
+
}
|
14
|
+
EOS
|
15
|
+
assert_equal exp_template.chomp, act_template
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_cloudwatch_to_statistic
|
19
|
+
template = <<-EOS
|
20
|
+
Test _cloudwatch_to_statistic("avg")
|
21
|
+
EOS
|
22
|
+
act_template = run_client_as_json(template)
|
23
|
+
exp_template = <<-EOS
|
24
|
+
{
|
25
|
+
"Test": "Average"
|
26
|
+
}
|
27
|
+
EOS
|
28
|
+
assert_equal exp_template.chomp, act_template
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_cloudwatch_to_metric
|
32
|
+
template = <<-EOS
|
33
|
+
Test _cloudwatch_to_metric("ec2 cpu utilization")
|
34
|
+
EOS
|
35
|
+
act_template = run_client_as_json(template)
|
36
|
+
exp_template = <<-EOS
|
37
|
+
{
|
38
|
+
"Test": "CPUUtilization"
|
39
|
+
}
|
40
|
+
EOS
|
41
|
+
assert_equal exp_template.chomp, act_template
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_cloudwatch_to_namespace
|
45
|
+
template = <<-EOS
|
46
|
+
Test _cloudwatch_to_namespace("ec2")
|
47
|
+
EOS
|
48
|
+
act_template = run_client_as_json(template)
|
49
|
+
exp_template = <<-EOS
|
50
|
+
{
|
51
|
+
"Test": "AWS/EC2"
|
52
|
+
}
|
53
|
+
EOS
|
54
|
+
assert_equal exp_template.chomp, act_template
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_cloudwatch_to_operator
|
58
|
+
template = <<-EOS
|
59
|
+
Test _cloudwatch_to_operator(">=")
|
60
|
+
EOS
|
61
|
+
act_template = run_client_as_json(template)
|
62
|
+
exp_template = <<-EOS
|
63
|
+
{
|
64
|
+
"Test": "GreaterThanOrEqualToThreshold"
|
65
|
+
}
|
66
|
+
EOS
|
67
|
+
assert_equal exp_template.chomp, act_template
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_cloudwatch_to_unit
|
71
|
+
template = <<-EOS
|
72
|
+
Test _cloudwatch_to_unit("sec")
|
73
|
+
EOS
|
74
|
+
act_template = run_client_as_json(template)
|
75
|
+
exp_template = <<-EOS
|
76
|
+
{
|
77
|
+
"Test": "Seconds"
|
78
|
+
}
|
79
|
+
EOS
|
80
|
+
assert_equal exp_template.chomp, act_template
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_cloudwatch_to_ec2_action
|
84
|
+
template = <<-EOS
|
85
|
+
Test _cloudwatch_to_ec2_action("revoert")
|
86
|
+
EOS
|
87
|
+
act_template = run_client_as_json(template)
|
88
|
+
exp_template = <<-EOS
|
89
|
+
{
|
90
|
+
"Test": {
|
91
|
+
"Fn::Join": [
|
92
|
+
"",
|
93
|
+
[
|
94
|
+
"arn:aws:automate:",
|
95
|
+
{
|
96
|
+
"Ref": "AWS::Region"
|
97
|
+
},
|
98
|
+
":ec2:recover"
|
99
|
+
]
|
100
|
+
]
|
101
|
+
}
|
102
|
+
}
|
103
|
+
EOS
|
104
|
+
assert_equal exp_template.chomp, act_template
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_cloudwatch_dimension
|
108
|
+
template = <<-EOS
|
109
|
+
Test _cloudwatch_dimension({ name: "test", value: "test" })
|
110
|
+
EOS
|
111
|
+
act_template = run_client_as_json(template)
|
112
|
+
exp_template = <<-EOS
|
113
|
+
{
|
114
|
+
"Test": {
|
115
|
+
"Name": "test",
|
116
|
+
"Value": "test"
|
117
|
+
}
|
118
|
+
}
|
119
|
+
EOS
|
120
|
+
assert_equal exp_template.chomp, act_template
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_cloudwatch_actions
|
124
|
+
template = <<-EOS
|
125
|
+
Test _cloudwatch_actions(ref_actions: [ "ec2 recover", "test" ])
|
126
|
+
EOS
|
127
|
+
act_template = run_client_as_json(template)
|
128
|
+
exp_template = <<-EOS
|
129
|
+
{
|
130
|
+
"Test": [
|
131
|
+
{
|
132
|
+
"Fn::Join": [
|
133
|
+
"",
|
134
|
+
[
|
135
|
+
"arn:aws:automate:",
|
136
|
+
{
|
137
|
+
"Ref": "AWS::Region"
|
138
|
+
},
|
139
|
+
":ec2:recover"
|
140
|
+
]
|
141
|
+
]
|
142
|
+
},
|
143
|
+
{
|
144
|
+
"Ref": "Test"
|
145
|
+
}
|
146
|
+
]
|
147
|
+
}
|
148
|
+
EOS
|
149
|
+
assert_equal exp_template.chomp, act_template
|
150
|
+
end
|
151
|
+
end
|
data/test/ec2_test.rb
CHANGED
@@ -308,6 +308,31 @@ Test _ec2_image("test", { image_id: "test" })
|
|
308
308
|
exp_template = <<-EOS
|
309
309
|
{
|
310
310
|
"Test": "test"
|
311
|
+
}
|
312
|
+
EOS
|
313
|
+
assert_equal exp_template.chomp, act_template
|
314
|
+
|
315
|
+
template = <<-EOS
|
316
|
+
Test _ec2_image("test", { image_id: false })
|
317
|
+
EOS
|
318
|
+
act_template = run_client_as_json(template)
|
319
|
+
exp_template = <<-EOS
|
320
|
+
{
|
321
|
+
"Test": {
|
322
|
+
"Fn::FindInMap": [
|
323
|
+
"AWSRegionArch2AMIAmazonLinuxOfficial",
|
324
|
+
{
|
325
|
+
"Ref": "AWS::Region"
|
326
|
+
},
|
327
|
+
{
|
328
|
+
"Fn::FindInMap": [
|
329
|
+
"AWSInstanceType2Arch",
|
330
|
+
"test",
|
331
|
+
"Arch"
|
332
|
+
]
|
333
|
+
}
|
334
|
+
]
|
335
|
+
}
|
311
336
|
}
|
312
337
|
EOS
|
313
338
|
assert_equal exp_template.chomp, act_template
|
data/test/helper_test.rb
CHANGED
@@ -22,6 +22,13 @@ class HelperTest < Minitest::Test
|
|
22
22
|
assert_equal _bool("test", { test1: false }, false), "false"
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_integer
|
26
|
+
assert_equal _integer("test", { test: 1 }), 1
|
27
|
+
assert_equal _integer("test", { test: 2 }, 1), 2
|
28
|
+
assert_equal _integer("test", { test1: 1 }), 0
|
29
|
+
assert_equal _integer("test", { test1: 1 }, 2), 2
|
30
|
+
end
|
31
|
+
|
25
32
|
def test_capitalize
|
26
33
|
assert_equal _capitalize("test test"), "TestTest"
|
27
34
|
end
|
@@ -218,6 +225,21 @@ Test _ref_name("test", {})
|
|
218
225
|
assert_equal exp_template.chomp, act_template
|
219
226
|
end
|
220
227
|
|
228
|
+
def test_ref_name_default
|
229
|
+
template = <<-EOS
|
230
|
+
Test _ref_name_default("test", { name: "test1" })
|
231
|
+
EOS
|
232
|
+
act_template = run_client_as_json(template)
|
233
|
+
exp_template = <<-EOS
|
234
|
+
{
|
235
|
+
"Test": "test1"
|
236
|
+
}
|
237
|
+
EOS
|
238
|
+
assert_equal exp_template.chomp, act_template
|
239
|
+
|
240
|
+
# _ref_name_default(name, args, ref_name = '')
|
241
|
+
end
|
242
|
+
|
221
243
|
def test_attr_string
|
222
244
|
template = <<-EOS
|
223
245
|
Test _attr_string("test", "test1")
|
@@ -3,7 +3,30 @@ require 'abstract_unit'
|
|
3
3
|
class AutoscalingScheduledActionTest < Minitest::Test
|
4
4
|
def test_normal
|
5
5
|
template = <<-EOS
|
6
|
-
_autoscaling_scheduled_action "test", ref_autoscaling: "test",
|
6
|
+
_autoscaling_scheduled_action "test", ref_autoscaling: "test", desired: "10"
|
7
|
+
EOS
|
8
|
+
act_template = run_client_as_json(template)
|
9
|
+
start_time = _timestamp_utc(Time.now + 3600)
|
10
|
+
exp_template = <<-EOS
|
11
|
+
{
|
12
|
+
"TestAutoscalingScheduledAction": {
|
13
|
+
"Type": "AWS::AutoScaling::ScheduledAction",
|
14
|
+
"Properties": {
|
15
|
+
"AutoScalingGroupName": {
|
16
|
+
"Ref": "TestAutoscalingGroup"
|
17
|
+
},
|
18
|
+
"DesiredCapacity": "10",
|
19
|
+
"MaxSize": "10",
|
20
|
+
"MinSize": "10",
|
21
|
+
"StartTime": "#{start_time}"
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
EOS
|
26
|
+
assert_equal exp_template.chomp, act_template
|
27
|
+
|
28
|
+
template = <<-EOS
|
29
|
+
_autoscaling_scheduled_action "test", ref_autoscaling: "test", max: 1, min: 1, recurrence: Time.local(2016, 3, 31, 15)
|
7
30
|
EOS
|
8
31
|
act_template = run_client_as_json(template)
|
9
32
|
start_time = _timestamp_utc(Time.now + 3600)
|
@@ -3,7 +3,7 @@ require 'abstract_unit'
|
|
3
3
|
class CloudWatchAlarmTest < Minitest::Test
|
4
4
|
def test_normal
|
5
5
|
template = <<-EOS
|
6
|
-
_cloudwatch_alarm "test", actions: "test", alarm_name: "test", namespace: "
|
6
|
+
_cloudwatch_alarm "test", actions: [ "test" ], alarm_name: "test", namespace: "ec2", operator: "<", metric: "test", dimensions: [ { name: "test", value: "test" } ]
|
7
7
|
EOS
|
8
8
|
act_template = run_client_as_json(template)
|
9
9
|
exp_template = <<-EOS
|
@@ -25,7 +25,7 @@ _cloudwatch_alarm "test", actions: "test", alarm_name: "test", namespace: "test"
|
|
25
25
|
],
|
26
26
|
"EvaluationPeriods": "3",
|
27
27
|
"MetricName": "test",
|
28
|
-
"Namespace": "
|
28
|
+
"Namespace": "AWS/EC2",
|
29
29
|
"Period": "300",
|
30
30
|
"Statistic": "Average",
|
31
31
|
"Threshold": "60"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumogata-template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naoya Nakazawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -248,6 +248,7 @@ files:
|
|
248
248
|
- test/alb_test.rb
|
249
249
|
- test/autoscaling_test.rb
|
250
250
|
- test/cloudfront_test.rb
|
251
|
+
- test/cloudwatch_test.rb
|
251
252
|
- test/codebuild_test.rb
|
252
253
|
- test/codedeploy_test.rb
|
253
254
|
- test/data/lambda_function.py
|
@@ -412,6 +413,7 @@ test_files:
|
|
412
413
|
- test/alb_test.rb
|
413
414
|
- test/autoscaling_test.rb
|
414
415
|
- test/cloudfront_test.rb
|
416
|
+
- test/cloudwatch_test.rb
|
415
417
|
- test/codebuild_test.rb
|
416
418
|
- test/codedeploy_test.rb
|
417
419
|
- test/data/lambda_function.py
|