aws_site_monitor 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 49254d4c7c7f4158ba53aa8e53562db5cc7c3ce1
4
+ data.tar.gz: 52d68c2c074347a7d97449080aa8ca58b6442db2
5
+ SHA512:
6
+ metadata.gz: af8fd17d86451cd4cbd6cc9a8beff50465b596260f9ce2b7a0bbd8db4b12181f4409d870d224d878a4eaceb85776fc8f9f740bc3bf28fab384cf8bece6f9597f
7
+ data.tar.gz: db010d7a46721f33b142ddd9c19256f495221662e66d6db677cffcdfeea3b7a61af4fdd0754ab9e7fc9bc1b5490091a8c139b40b5e049b78106c485fea140317
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .pstore
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.0
5
+ before_install: gem install bundler -v 1.16.1
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in aws-site-monitor.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,644 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ aws_site_monitor (0.1.0)
5
+ activesupport
6
+ aws-sdk
7
+ concurrent-ruby
8
+ thor
9
+
10
+ GEM
11
+ remote: https://rubygems.org/
12
+ specs:
13
+ activesupport (5.2.0)
14
+ concurrent-ruby (~> 1.0, >= 1.0.2)
15
+ i18n (>= 0.7, < 2)
16
+ minitest (~> 5.1)
17
+ tzinfo (~> 1.1)
18
+ aws-eventstream (1.0.1)
19
+ aws-partitions (1.94.0)
20
+ aws-sdk (3.0.1)
21
+ aws-sdk-resources (~> 3)
22
+ aws-sdk-acm (1.8.0)
23
+ aws-sdk-core (~> 3)
24
+ aws-sigv4 (~> 1.0)
25
+ aws-sdk-acmpca (1.2.0)
26
+ aws-sdk-core (~> 3)
27
+ aws-sigv4 (~> 1.0)
28
+ aws-sdk-alexaforbusiness (1.6.0)
29
+ aws-sdk-core (~> 3)
30
+ aws-sigv4 (~> 1.0)
31
+ aws-sdk-apigateway (1.12.0)
32
+ aws-sdk-core (~> 3)
33
+ aws-sigv4 (~> 1.0)
34
+ aws-sdk-applicationautoscaling (1.9.0)
35
+ aws-sdk-core (~> 3)
36
+ aws-sigv4 (~> 1.0)
37
+ aws-sdk-applicationdiscoveryservice (1.2.0)
38
+ aws-sdk-core (~> 3)
39
+ aws-sigv4 (~> 1.0)
40
+ aws-sdk-appstream (1.11.0)
41
+ aws-sdk-core (~> 3)
42
+ aws-sigv4 (~> 1.0)
43
+ aws-sdk-appsync (1.3.0)
44
+ aws-sdk-core (~> 3)
45
+ aws-sigv4 (~> 1.0)
46
+ aws-sdk-athena (1.1.0)
47
+ aws-sdk-core (~> 3)
48
+ aws-sigv4 (~> 1.0)
49
+ aws-sdk-autoscaling (1.6.0)
50
+ aws-sdk-core (~> 3)
51
+ aws-sigv4 (~> 1.0)
52
+ aws-sdk-autoscalingplans (1.3.0)
53
+ aws-sdk-core (~> 3)
54
+ aws-sigv4 (~> 1.0)
55
+ aws-sdk-batch (1.5.0)
56
+ aws-sdk-core (~> 3)
57
+ aws-sigv4 (~> 1.0)
58
+ aws-sdk-budgets (1.8.0)
59
+ aws-sdk-core (~> 3)
60
+ aws-sigv4 (~> 1.0)
61
+ aws-sdk-cloud9 (1.2.0)
62
+ aws-sdk-core (~> 3)
63
+ aws-sigv4 (~> 1.0)
64
+ aws-sdk-clouddirectory (1.5.0)
65
+ aws-sdk-core (~> 3)
66
+ aws-sigv4 (~> 1.0)
67
+ aws-sdk-cloudformation (1.6.0)
68
+ aws-sdk-core (~> 3)
69
+ aws-sigv4 (~> 1.0)
70
+ aws-sdk-cloudfront (1.4.0)
71
+ aws-sdk-core (~> 3)
72
+ aws-sigv4 (~> 1.0)
73
+ aws-sdk-cloudhsm (1.4.0)
74
+ aws-sdk-core (~> 3)
75
+ aws-sigv4 (~> 1.0)
76
+ aws-sdk-cloudhsmv2 (1.2.0)
77
+ aws-sdk-core (~> 3)
78
+ aws-sigv4 (~> 1.0)
79
+ aws-sdk-cloudsearch (1.1.0)
80
+ aws-sdk-core (~> 3)
81
+ aws-sigv4 (~> 1.0)
82
+ aws-sdk-cloudsearchdomain (1.1.0)
83
+ aws-sdk-core (~> 3)
84
+ aws-sigv4 (~> 1.0)
85
+ aws-sdk-cloudtrail (1.1.0)
86
+ aws-sdk-core (~> 3)
87
+ aws-sigv4 (~> 1.0)
88
+ aws-sdk-cloudwatch (1.6.0)
89
+ aws-sdk-core (~> 3)
90
+ aws-sigv4 (~> 1.0)
91
+ aws-sdk-cloudwatchevents (1.4.0)
92
+ aws-sdk-core (~> 3)
93
+ aws-sigv4 (~> 1.0)
94
+ aws-sdk-cloudwatchlogs (1.4.0)
95
+ aws-sdk-core (~> 3)
96
+ aws-sigv4 (~> 1.0)
97
+ aws-sdk-codebuild (1.10.0)
98
+ aws-sdk-core (~> 3)
99
+ aws-sigv4 (~> 1.0)
100
+ aws-sdk-codecommit (1.4.0)
101
+ aws-sdk-core (~> 3)
102
+ aws-sigv4 (~> 1.0)
103
+ aws-sdk-codedeploy (1.6.0)
104
+ aws-sdk-core (~> 3)
105
+ aws-sigv4 (~> 1.0)
106
+ aws-sdk-codepipeline (1.5.0)
107
+ aws-sdk-core (~> 3)
108
+ aws-sigv4 (~> 1.0)
109
+ aws-sdk-codestar (1.2.0)
110
+ aws-sdk-core (~> 3)
111
+ aws-sigv4 (~> 1.0)
112
+ aws-sdk-cognitoidentity (1.1.0)
113
+ aws-sdk-core (~> 3)
114
+ aws-sigv4 (~> 1.0)
115
+ aws-sdk-cognitoidentityprovider (1.5.0)
116
+ aws-sdk-core (~> 3)
117
+ aws-sigv4 (~> 1.0)
118
+ aws-sdk-cognitosync (1.1.0)
119
+ aws-sdk-core (~> 3)
120
+ aws-sigv4 (~> 1.0)
121
+ aws-sdk-comprehend (1.2.0)
122
+ aws-sdk-core (~> 3)
123
+ aws-sigv4 (~> 1.0)
124
+ aws-sdk-configservice (1.12.0)
125
+ aws-sdk-core (~> 3)
126
+ aws-sigv4 (~> 1.0)
127
+ aws-sdk-connect (1.1.0)
128
+ aws-sdk-core (~> 3)
129
+ aws-sigv4 (~> 1.0)
130
+ aws-sdk-core (3.22.0)
131
+ aws-eventstream (~> 1.0)
132
+ aws-partitions (~> 1.0)
133
+ aws-sigv4 (~> 1.0)
134
+ jmespath (~> 1.0)
135
+ aws-sdk-costandusagereportservice (1.1.0)
136
+ aws-sdk-core (~> 3)
137
+ aws-sigv4 (~> 1.0)
138
+ aws-sdk-costexplorer (1.5.0)
139
+ aws-sdk-core (~> 3)
140
+ aws-sigv4 (~> 1.0)
141
+ aws-sdk-databasemigrationservice (1.6.0)
142
+ aws-sdk-core (~> 3)
143
+ aws-sigv4 (~> 1.0)
144
+ aws-sdk-datapipeline (1.1.0)
145
+ aws-sdk-core (~> 3)
146
+ aws-sigv4 (~> 1.0)
147
+ aws-sdk-dax (1.1.0)
148
+ aws-sdk-core (~> 3)
149
+ aws-sigv4 (~> 1.0)
150
+ aws-sdk-devicefarm (1.7.0)
151
+ aws-sdk-core (~> 3)
152
+ aws-sigv4 (~> 1.0)
153
+ aws-sdk-directconnect (1.2.0)
154
+ aws-sdk-core (~> 3)
155
+ aws-sigv4 (~> 1.0)
156
+ aws-sdk-directoryservice (1.3.0)
157
+ aws-sdk-core (~> 3)
158
+ aws-sigv4 (~> 1.0)
159
+ aws-sdk-dynamodb (1.8.0)
160
+ aws-sdk-core (~> 3)
161
+ aws-sigv4 (~> 1.0)
162
+ aws-sdk-dynamodbstreams (1.1.0)
163
+ aws-sdk-core (~> 3)
164
+ aws-sigv4 (~> 1.0)
165
+ aws-sdk-ec2 (1.36.0)
166
+ aws-sdk-core (~> 3)
167
+ aws-sigv4 (~> 1.0)
168
+ aws-sdk-ecr (1.4.0)
169
+ aws-sdk-core (~> 3)
170
+ aws-sigv4 (~> 1.0)
171
+ aws-sdk-ecs (1.15.0)
172
+ aws-sdk-core (~> 3)
173
+ aws-sigv4 (~> 1.0)
174
+ aws-sdk-efs (1.1.0)
175
+ aws-sdk-core (~> 3)
176
+ aws-sigv4 (~> 1.0)
177
+ aws-sdk-eks (1.1.0)
178
+ aws-sdk-core (~> 3)
179
+ aws-sigv4 (~> 1.0)
180
+ aws-sdk-elasticache (1.4.0)
181
+ aws-sdk-core (~> 3)
182
+ aws-sigv4 (~> 1.0)
183
+ aws-sdk-elasticbeanstalk (1.7.0)
184
+ aws-sdk-core (~> 3)
185
+ aws-sigv4 (~> 1.0)
186
+ aws-sdk-elasticloadbalancing (1.3.0)
187
+ aws-sdk-core (~> 3)
188
+ aws-sigv4 (~> 1.0)
189
+ aws-sdk-elasticloadbalancingv2 (1.11.0)
190
+ aws-sdk-core (~> 3)
191
+ aws-sigv4 (~> 1.0)
192
+ aws-sdk-elasticsearchservice (1.6.0)
193
+ aws-sdk-core (~> 3)
194
+ aws-sigv4 (~> 1.0)
195
+ aws-sdk-elastictranscoder (1.1.0)
196
+ aws-sdk-core (~> 3)
197
+ aws-sigv4 (~> 1.0)
198
+ aws-sdk-emr (1.2.0)
199
+ aws-sdk-core (~> 3)
200
+ aws-sigv4 (~> 1.0)
201
+ aws-sdk-firehose (1.4.0)
202
+ aws-sdk-core (~> 3)
203
+ aws-sigv4 (~> 1.0)
204
+ aws-sdk-fms (1.1.0)
205
+ aws-sdk-core (~> 3)
206
+ aws-sigv4 (~> 1.0)
207
+ aws-sdk-gamelift (1.5.0)
208
+ aws-sdk-core (~> 3)
209
+ aws-sigv4 (~> 1.0)
210
+ aws-sdk-glacier (1.8.0)
211
+ aws-sdk-core (~> 3)
212
+ aws-sigv4 (~> 1.0)
213
+ aws-sdk-glue (1.9.0)
214
+ aws-sdk-core (~> 3)
215
+ aws-sigv4 (~> 1.0)
216
+ aws-sdk-greengrass (1.4.0)
217
+ aws-sdk-core (~> 3)
218
+ aws-sigv4 (~> 1.0)
219
+ aws-sdk-guardduty (1.5.0)
220
+ aws-sdk-core (~> 3)
221
+ aws-sigv4 (~> 1.0)
222
+ aws-sdk-health (1.1.0)
223
+ aws-sdk-core (~> 3)
224
+ aws-sigv4 (~> 1.0)
225
+ aws-sdk-iam (1.5.0)
226
+ aws-sdk-core (~> 3)
227
+ aws-sigv4 (~> 1.0)
228
+ aws-sdk-importexport (1.1.0)
229
+ aws-sdk-core (~> 3)
230
+ aws-sigv2 (~> 1.0)
231
+ aws-sdk-inspector (1.5.0)
232
+ aws-sdk-core (~> 3)
233
+ aws-sigv4 (~> 1.0)
234
+ aws-sdk-iot (1.9.0)
235
+ aws-sdk-core (~> 3)
236
+ aws-sigv4 (~> 1.0)
237
+ aws-sdk-iot1clickdevicesservice (1.1.0)
238
+ aws-sdk-core (~> 3)
239
+ aws-sigv4 (~> 1.0)
240
+ aws-sdk-iot1clickprojects (1.1.0)
241
+ aws-sdk-core (~> 3)
242
+ aws-sigv4 (~> 1.0)
243
+ aws-sdk-iotanalytics (1.2.0)
244
+ aws-sdk-core (~> 3)
245
+ aws-sigv4 (~> 1.0)
246
+ aws-sdk-iotdataplane (1.1.0)
247
+ aws-sdk-core (~> 3)
248
+ aws-sigv4 (~> 1.0)
249
+ aws-sdk-iotjobsdataplane (1.1.0)
250
+ aws-sdk-core (~> 3)
251
+ aws-sigv4 (~> 1.0)
252
+ aws-sdk-kinesis (1.3.0)
253
+ aws-sdk-core (~> 3)
254
+ aws-sigv4 (~> 1.0)
255
+ aws-sdk-kinesisanalytics (1.3.0)
256
+ aws-sdk-core (~> 3)
257
+ aws-sigv4 (~> 1.0)
258
+ aws-sdk-kinesisvideo (1.1.0)
259
+ aws-sdk-core (~> 3)
260
+ aws-sigv4 (~> 1.0)
261
+ aws-sdk-kinesisvideoarchivedmedia (1.1.0)
262
+ aws-sdk-core (~> 3)
263
+ aws-sigv4 (~> 1.0)
264
+ aws-sdk-kinesisvideomedia (1.1.0)
265
+ aws-sdk-core (~> 3)
266
+ aws-sigv4 (~> 1.0)
267
+ aws-sdk-kms (1.6.0)
268
+ aws-sdk-core (~> 3)
269
+ aws-sigv4 (~> 1.0)
270
+ aws-sdk-lambda (1.6.0)
271
+ aws-sdk-core (~> 3)
272
+ aws-sigv4 (~> 1.0)
273
+ aws-sdk-lambdapreview (1.1.0)
274
+ aws-sdk-core (~> 3)
275
+ aws-sigv4 (~> 1.0)
276
+ aws-sdk-lex (1.4.0)
277
+ aws-sdk-core (~> 3)
278
+ aws-sigv4 (~> 1.0)
279
+ aws-sdk-lexmodelbuildingservice (1.6.0)
280
+ aws-sdk-core (~> 3)
281
+ aws-sigv4 (~> 1.0)
282
+ aws-sdk-lightsail (1.5.0)
283
+ aws-sdk-core (~> 3)
284
+ aws-sigv4 (~> 1.0)
285
+ aws-sdk-machinelearning (1.1.0)
286
+ aws-sdk-core (~> 3)
287
+ aws-sigv4 (~> 1.0)
288
+ aws-sdk-macie (1.1.0)
289
+ aws-sdk-core (~> 3)
290
+ aws-sigv4 (~> 1.0)
291
+ aws-sdk-marketplacecommerceanalytics (1.1.0)
292
+ aws-sdk-core (~> 3)
293
+ aws-sigv4 (~> 1.0)
294
+ aws-sdk-marketplaceentitlementservice (1.1.0)
295
+ aws-sdk-core (~> 3)
296
+ aws-sigv4 (~> 1.0)
297
+ aws-sdk-marketplacemetering (1.1.0)
298
+ aws-sdk-core (~> 3)
299
+ aws-sigv4 (~> 1.0)
300
+ aws-sdk-mediaconvert (1.4.0)
301
+ aws-sdk-core (~> 3)
302
+ aws-sigv4 (~> 1.0)
303
+ aws-sdk-medialive (1.8.0)
304
+ aws-sdk-core (~> 3)
305
+ aws-sigv4 (~> 1.0)
306
+ aws-sdk-mediapackage (1.2.0)
307
+ aws-sdk-core (~> 3)
308
+ aws-sigv4 (~> 1.0)
309
+ aws-sdk-mediastore (1.2.0)
310
+ aws-sdk-core (~> 3)
311
+ aws-sigv4 (~> 1.0)
312
+ aws-sdk-mediastoredata (1.2.0)
313
+ aws-sdk-core (~> 3)
314
+ aws-sigv4 (~> 1.0)
315
+ aws-sdk-mediatailor (1.2.0)
316
+ aws-sdk-core (~> 3)
317
+ aws-sigv4 (~> 1.0)
318
+ aws-sdk-migrationhub (1.3.0)
319
+ aws-sdk-core (~> 3)
320
+ aws-sigv4 (~> 1.0)
321
+ aws-sdk-mobile (1.1.0)
322
+ aws-sdk-core (~> 3)
323
+ aws-sigv4 (~> 1.0)
324
+ aws-sdk-mq (1.1.0)
325
+ aws-sdk-core (~> 3)
326
+ aws-sigv4 (~> 1.0)
327
+ aws-sdk-mturk (1.4.0)
328
+ aws-sdk-core (~> 3)
329
+ aws-sigv4 (~> 1.0)
330
+ aws-sdk-neptune (1.2.0)
331
+ aws-sdk-core (~> 3)
332
+ aws-sigv4 (~> 1.0)
333
+ aws-sdk-opsworks (1.3.0)
334
+ aws-sdk-core (~> 3)
335
+ aws-sigv4 (~> 1.0)
336
+ aws-sdk-opsworkscm (1.3.0)
337
+ aws-sdk-core (~> 3)
338
+ aws-sigv4 (~> 1.0)
339
+ aws-sdk-organizations (1.10.0)
340
+ aws-sdk-core (~> 3)
341
+ aws-sigv4 (~> 1.0)
342
+ aws-sdk-pi (1.1.0)
343
+ aws-sdk-core (~> 3)
344
+ aws-sigv4 (~> 1.0)
345
+ aws-sdk-pinpoint (1.5.0)
346
+ aws-sdk-core (~> 3)
347
+ aws-sigv4 (~> 1.0)
348
+ aws-sdk-polly (1.6.0)
349
+ aws-sdk-core (~> 3)
350
+ aws-sigv4 (~> 1.0)
351
+ aws-sdk-pricing (1.1.0)
352
+ aws-sdk-core (~> 3)
353
+ aws-sigv4 (~> 1.0)
354
+ aws-sdk-rds (1.23.0)
355
+ aws-sdk-core (~> 3)
356
+ aws-sigv4 (~> 1.0)
357
+ aws-sdk-redshift (1.4.0)
358
+ aws-sdk-core (~> 3)
359
+ aws-sigv4 (~> 1.0)
360
+ aws-sdk-rekognition (1.5.0)
361
+ aws-sdk-core (~> 3)
362
+ aws-sigv4 (~> 1.0)
363
+ aws-sdk-resourcegroups (1.1.0)
364
+ aws-sdk-core (~> 3)
365
+ aws-sigv4 (~> 1.0)
366
+ aws-sdk-resourcegroupstaggingapi (1.1.0)
367
+ aws-sdk-core (~> 3)
368
+ aws-sigv4 (~> 1.0)
369
+ aws-sdk-resources (3.21.0)
370
+ aws-sdk-acm (~> 1)
371
+ aws-sdk-acmpca (~> 1)
372
+ aws-sdk-alexaforbusiness (~> 1)
373
+ aws-sdk-apigateway (~> 1)
374
+ aws-sdk-applicationautoscaling (~> 1)
375
+ aws-sdk-applicationdiscoveryservice (~> 1)
376
+ aws-sdk-appstream (~> 1)
377
+ aws-sdk-appsync (~> 1)
378
+ aws-sdk-athena (~> 1)
379
+ aws-sdk-autoscaling (~> 1)
380
+ aws-sdk-autoscalingplans (~> 1)
381
+ aws-sdk-batch (~> 1)
382
+ aws-sdk-budgets (~> 1)
383
+ aws-sdk-cloud9 (~> 1)
384
+ aws-sdk-clouddirectory (~> 1)
385
+ aws-sdk-cloudformation (~> 1)
386
+ aws-sdk-cloudfront (~> 1)
387
+ aws-sdk-cloudhsm (~> 1)
388
+ aws-sdk-cloudhsmv2 (~> 1)
389
+ aws-sdk-cloudsearch (~> 1)
390
+ aws-sdk-cloudsearchdomain (~> 1)
391
+ aws-sdk-cloudtrail (~> 1)
392
+ aws-sdk-cloudwatch (~> 1)
393
+ aws-sdk-cloudwatchevents (~> 1)
394
+ aws-sdk-cloudwatchlogs (~> 1)
395
+ aws-sdk-codebuild (~> 1)
396
+ aws-sdk-codecommit (~> 1)
397
+ aws-sdk-codedeploy (~> 1)
398
+ aws-sdk-codepipeline (~> 1)
399
+ aws-sdk-codestar (~> 1)
400
+ aws-sdk-cognitoidentity (~> 1)
401
+ aws-sdk-cognitoidentityprovider (~> 1)
402
+ aws-sdk-cognitosync (~> 1)
403
+ aws-sdk-comprehend (~> 1)
404
+ aws-sdk-configservice (~> 1)
405
+ aws-sdk-connect (~> 1)
406
+ aws-sdk-costandusagereportservice (~> 1)
407
+ aws-sdk-costexplorer (~> 1)
408
+ aws-sdk-databasemigrationservice (~> 1)
409
+ aws-sdk-datapipeline (~> 1)
410
+ aws-sdk-dax (~> 1)
411
+ aws-sdk-devicefarm (~> 1)
412
+ aws-sdk-directconnect (~> 1)
413
+ aws-sdk-directoryservice (~> 1)
414
+ aws-sdk-dynamodb (~> 1)
415
+ aws-sdk-dynamodbstreams (~> 1)
416
+ aws-sdk-ec2 (~> 1)
417
+ aws-sdk-ecr (~> 1)
418
+ aws-sdk-ecs (~> 1)
419
+ aws-sdk-efs (~> 1)
420
+ aws-sdk-eks (~> 1)
421
+ aws-sdk-elasticache (~> 1)
422
+ aws-sdk-elasticbeanstalk (~> 1)
423
+ aws-sdk-elasticloadbalancing (~> 1)
424
+ aws-sdk-elasticloadbalancingv2 (~> 1)
425
+ aws-sdk-elasticsearchservice (~> 1)
426
+ aws-sdk-elastictranscoder (~> 1)
427
+ aws-sdk-emr (~> 1)
428
+ aws-sdk-firehose (~> 1)
429
+ aws-sdk-fms (~> 1)
430
+ aws-sdk-gamelift (~> 1)
431
+ aws-sdk-glacier (~> 1)
432
+ aws-sdk-glue (~> 1)
433
+ aws-sdk-greengrass (~> 1)
434
+ aws-sdk-guardduty (~> 1)
435
+ aws-sdk-health (~> 1)
436
+ aws-sdk-iam (~> 1)
437
+ aws-sdk-importexport (~> 1)
438
+ aws-sdk-inspector (~> 1)
439
+ aws-sdk-iot (~> 1)
440
+ aws-sdk-iot1clickdevicesservice (~> 1)
441
+ aws-sdk-iot1clickprojects (~> 1)
442
+ aws-sdk-iotanalytics (~> 1)
443
+ aws-sdk-iotdataplane (~> 1)
444
+ aws-sdk-iotjobsdataplane (~> 1)
445
+ aws-sdk-kinesis (~> 1)
446
+ aws-sdk-kinesisanalytics (~> 1)
447
+ aws-sdk-kinesisvideo (~> 1)
448
+ aws-sdk-kinesisvideoarchivedmedia (~> 1)
449
+ aws-sdk-kinesisvideomedia (~> 1)
450
+ aws-sdk-kms (~> 1)
451
+ aws-sdk-lambda (~> 1)
452
+ aws-sdk-lambdapreview (~> 1)
453
+ aws-sdk-lex (~> 1)
454
+ aws-sdk-lexmodelbuildingservice (~> 1)
455
+ aws-sdk-lightsail (~> 1)
456
+ aws-sdk-machinelearning (~> 1)
457
+ aws-sdk-macie (~> 1)
458
+ aws-sdk-marketplacecommerceanalytics (~> 1)
459
+ aws-sdk-marketplaceentitlementservice (~> 1)
460
+ aws-sdk-marketplacemetering (~> 1)
461
+ aws-sdk-mediaconvert (~> 1)
462
+ aws-sdk-medialive (~> 1)
463
+ aws-sdk-mediapackage (~> 1)
464
+ aws-sdk-mediastore (~> 1)
465
+ aws-sdk-mediastoredata (~> 1)
466
+ aws-sdk-mediatailor (~> 1)
467
+ aws-sdk-migrationhub (~> 1)
468
+ aws-sdk-mobile (~> 1)
469
+ aws-sdk-mq (~> 1)
470
+ aws-sdk-mturk (~> 1)
471
+ aws-sdk-neptune (~> 1)
472
+ aws-sdk-opsworks (~> 1)
473
+ aws-sdk-opsworkscm (~> 1)
474
+ aws-sdk-organizations (~> 1)
475
+ aws-sdk-pi (~> 1)
476
+ aws-sdk-pinpoint (~> 1)
477
+ aws-sdk-polly (~> 1)
478
+ aws-sdk-pricing (~> 1)
479
+ aws-sdk-rds (~> 1)
480
+ aws-sdk-redshift (~> 1)
481
+ aws-sdk-rekognition (~> 1)
482
+ aws-sdk-resourcegroups (~> 1)
483
+ aws-sdk-resourcegroupstaggingapi (~> 1)
484
+ aws-sdk-route53 (~> 1)
485
+ aws-sdk-route53domains (~> 1)
486
+ aws-sdk-s3 (~> 1)
487
+ aws-sdk-sagemaker (~> 1)
488
+ aws-sdk-sagemakerruntime (~> 1)
489
+ aws-sdk-secretsmanager (~> 1)
490
+ aws-sdk-serverlessapplicationrepository (~> 1)
491
+ aws-sdk-servicecatalog (~> 1)
492
+ aws-sdk-servicediscovery (~> 1)
493
+ aws-sdk-ses (~> 1)
494
+ aws-sdk-shield (~> 1)
495
+ aws-sdk-simpledb (~> 1)
496
+ aws-sdk-sms (~> 1)
497
+ aws-sdk-snowball (~> 1)
498
+ aws-sdk-sns (~> 1)
499
+ aws-sdk-sqs (~> 1)
500
+ aws-sdk-ssm (~> 1)
501
+ aws-sdk-states (~> 1)
502
+ aws-sdk-storagegateway (~> 1)
503
+ aws-sdk-support (~> 1)
504
+ aws-sdk-swf (~> 1)
505
+ aws-sdk-transcribeservice (~> 1)
506
+ aws-sdk-translate (~> 1)
507
+ aws-sdk-waf (~> 1)
508
+ aws-sdk-wafregional (~> 1)
509
+ aws-sdk-workdocs (~> 1)
510
+ aws-sdk-workmail (~> 1)
511
+ aws-sdk-workspaces (~> 1)
512
+ aws-sdk-xray (~> 1)
513
+ aws-sdk-route53 (1.10.0)
514
+ aws-sdk-core (~> 3)
515
+ aws-sigv4 (~> 1.0)
516
+ aws-sdk-route53domains (1.3.0)
517
+ aws-sdk-core (~> 3)
518
+ aws-sigv4 (~> 1.0)
519
+ aws-sdk-s3 (1.15.0)
520
+ aws-sdk-core (~> 3, >= 3.21.2)
521
+ aws-sdk-kms (~> 1)
522
+ aws-sigv4 (~> 1.0)
523
+ aws-sdk-sagemaker (1.10.0)
524
+ aws-sdk-core (~> 3)
525
+ aws-sigv4 (~> 1.0)
526
+ aws-sdk-sagemakerruntime (1.1.0)
527
+ aws-sdk-core (~> 3)
528
+ aws-sigv4 (~> 1.0)
529
+ aws-sdk-secretsmanager (1.9.0)
530
+ aws-sdk-core (~> 3)
531
+ aws-sigv4 (~> 1.0)
532
+ aws-sdk-serverlessapplicationrepository (1.3.0)
533
+ aws-sdk-core (~> 3)
534
+ aws-sigv4 (~> 1.0)
535
+ aws-sdk-servicecatalog (1.6.0)
536
+ aws-sdk-core (~> 3)
537
+ aws-sigv4 (~> 1.0)
538
+ aws-sdk-servicediscovery (1.3.0)
539
+ aws-sdk-core (~> 3)
540
+ aws-sigv4 (~> 1.0)
541
+ aws-sdk-ses (1.8.0)
542
+ aws-sdk-core (~> 3)
543
+ aws-sigv4 (~> 1.0)
544
+ aws-sdk-shield (1.3.0)
545
+ aws-sdk-core (~> 3)
546
+ aws-sigv4 (~> 1.0)
547
+ aws-sdk-simpledb (1.1.0)
548
+ aws-sdk-core (~> 3)
549
+ aws-sigv2 (~> 1.0)
550
+ aws-sdk-sms (1.1.0)
551
+ aws-sdk-core (~> 3)
552
+ aws-sigv4 (~> 1.0)
553
+ aws-sdk-snowball (1.3.0)
554
+ aws-sdk-core (~> 3)
555
+ aws-sigv4 (~> 1.0)
556
+ aws-sdk-sns (1.3.0)
557
+ aws-sdk-core (~> 3)
558
+ aws-sigv4 (~> 1.0)
559
+ aws-sdk-sqs (1.4.0)
560
+ aws-sdk-core (~> 3)
561
+ aws-sigv4 (~> 1.0)
562
+ aws-sdk-ssm (1.16.0)
563
+ aws-sdk-core (~> 3)
564
+ aws-sigv4 (~> 1.0)
565
+ aws-sdk-states (1.3.0)
566
+ aws-sdk-core (~> 3)
567
+ aws-sigv4 (~> 1.0)
568
+ aws-sdk-storagegateway (1.5.0)
569
+ aws-sdk-core (~> 3)
570
+ aws-sigv4 (~> 1.0)
571
+ aws-sdk-support (1.1.0)
572
+ aws-sdk-core (~> 3)
573
+ aws-sigv4 (~> 1.0)
574
+ aws-sdk-swf (1.1.0)
575
+ aws-sdk-core (~> 3)
576
+ aws-sigv4 (~> 1.0)
577
+ aws-sdk-transcribeservice (1.2.0)
578
+ aws-sdk-core (~> 3)
579
+ aws-sigv4 (~> 1.0)
580
+ aws-sdk-translate (1.2.0)
581
+ aws-sdk-core (~> 3)
582
+ aws-sigv4 (~> 1.0)
583
+ aws-sdk-waf (1.5.0)
584
+ aws-sdk-core (~> 3)
585
+ aws-sigv4 (~> 1.0)
586
+ aws-sdk-wafregional (1.5.0)
587
+ aws-sdk-core (~> 3)
588
+ aws-sigv4 (~> 1.0)
589
+ aws-sdk-workdocs (1.2.0)
590
+ aws-sdk-core (~> 3)
591
+ aws-sigv4 (~> 1.0)
592
+ aws-sdk-workmail (1.2.0)
593
+ aws-sdk-core (~> 3)
594
+ aws-sigv4 (~> 1.0)
595
+ aws-sdk-workspaces (1.3.0)
596
+ aws-sdk-core (~> 3)
597
+ aws-sigv4 (~> 1.0)
598
+ aws-sdk-xray (1.3.0)
599
+ aws-sdk-core (~> 3)
600
+ aws-sigv4 (~> 1.0)
601
+ aws-sigv2 (1.0.1)
602
+ aws-sigv4 (1.0.2)
603
+ coderay (1.1.2)
604
+ concurrent-ruby (1.0.5)
605
+ diff-lcs (1.3)
606
+ i18n (1.0.1)
607
+ concurrent-ruby (~> 1.0)
608
+ jmespath (1.4.0)
609
+ method_source (0.9.0)
610
+ minitest (5.11.3)
611
+ pry (0.11.3)
612
+ coderay (~> 1.1.0)
613
+ method_source (~> 0.9.0)
614
+ rake (10.5.0)
615
+ rspec (3.7.0)
616
+ rspec-core (~> 3.7.0)
617
+ rspec-expectations (~> 3.7.0)
618
+ rspec-mocks (~> 3.7.0)
619
+ rspec-core (3.7.1)
620
+ rspec-support (~> 3.7.0)
621
+ rspec-expectations (3.7.0)
622
+ diff-lcs (>= 1.2.0, < 2.0)
623
+ rspec-support (~> 3.7.0)
624
+ rspec-mocks (3.7.0)
625
+ diff-lcs (>= 1.2.0, < 2.0)
626
+ rspec-support (~> 3.7.0)
627
+ rspec-support (3.7.1)
628
+ thor (0.20.0)
629
+ thread_safe (0.3.6)
630
+ tzinfo (1.2.5)
631
+ thread_safe (~> 0.1)
632
+
633
+ PLATFORMS
634
+ ruby
635
+
636
+ DEPENDENCIES
637
+ aws_site_monitor!
638
+ bundler (~> 1.16)
639
+ pry
640
+ rake (~> 10.0)
641
+ rspec (~> 3.0)
642
+
643
+ BUNDLED WITH
644
+ 1.16.2
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 Jason Ayre
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # Aws::Site::Monitor
2
+
3
+ Monitor/map urls to AWS instance ids, and restart those instances in the event of a non 200 response.
4
+ (i.e. jankpress server on AWS which needs to be restarted intermittently for no apparent reason other than jankpress doing jankpress things)
5
+
6
+ Intended to be ran as a standalone executable, and has a mini DB to track urls/instance_ids
7
+
8
+ ## Installation
9
+
10
+ ``` ruby
11
+ gem install aws_site_monitor
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ### Add a site to watch list
17
+ `bin/monitor add --url=https://www.google.com --instance-ids=12345 123456`
18
+
19
+ ### Remove a site from watch list
20
+ `bin/monitor remove --url=https://www.google.com`
21
+
22
+ ### Start watching
23
+ `bin/monitor start --check_every_seconds=30 --aws_region='us-east-1'`
24
+
25
+ Also make sure you have ENV variables set up for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
26
+
27
+ ## Contributing
28
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/aws-site-monitor.
29
+
30
+ ## License
31
+
32
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,41 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "aws/site_monitor/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aws_site_monitor"
8
+ spec.version = Aws::SiteMonitor::VERSION
9
+ spec.authors = ["Jason Ayre"]
10
+ spec.email = ["jasonayre@gmail.com"]
11
+
12
+ spec.summary = %q{Monitor sites hosted on AWS, restart ec2 machines when they go down}
13
+ spec.description = %q{Monitor sites hosted on AWS, restart ec2 machines when they go down}
14
+ spec.homepage = "https://github.com/jasonayre/aws_site_monitor"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against " \
23
+ # "public gem pushes."
24
+ # end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "bin"
30
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.16"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ spec.add_development_dependency "pry"
37
+ spec.add_dependency "aws-sdk"
38
+ spec.add_dependency "concurrent-ruby"
39
+ spec.add_dependency "thor"
40
+ spec.add_dependency "activesupport"
41
+ end
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aws/site_monitor"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/monitor ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aws/site_monitor"
5
+
6
+ ::Aws::SiteMonitor::CLI.start(::ARGV)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,84 @@
1
+ module Aws
2
+ module SiteMonitor
3
+ class CLI < ::Thor
4
+ option :check_every_seconds, :type => :numeric, :default => 5, :desc => 'Check every x seconds'
5
+ option :aws_region, :type => :string, :default => 'us-east-1', :desc => 'AWS region'
6
+
7
+ desc "start", "Start Watching"
8
+ def start
9
+ configure!
10
+ start_monitoring!
11
+ sleep
12
+ rescue => e
13
+ puts e.inspect
14
+ start_monitoring!
15
+ end
16
+
17
+ option :url, :type => :string, :desc => 'URL to watch', :required => true
18
+ option :instance_ids, :type => :array, :desc => 'AWS Instance IDS to restart when non 200 response is detected', :required => true
19
+
20
+ desc "add", "Add a site to the watch list"
21
+ def add
22
+ site = ::Aws::SiteMonitor::Site.create(:url => options.url, :instance_ids => options.instance_ids)
23
+ puts "added #{options[:url]} to watchlist"
24
+ end
25
+
26
+ option :url, :type => :string, :desc => 'URL to remove from watchlist', :required => true
27
+ desc "remove", "Remove a site from the watch list"
28
+ def remove
29
+ site = ::Aws::SiteMonitor::Site.find_by(:url => options.url)
30
+ raise ::StandardError.new("SiteNotFound #{options.url}") if !site
31
+ site.destroy
32
+ puts "removed #{site[:url]} from watchlist"
33
+ end
34
+
35
+ no_tasks do
36
+ def configure!
37
+ configure_traps
38
+ end
39
+
40
+ # Configure signal traps.
41
+ def configure_traps
42
+ exit_signals = [:INT, :TERM]
43
+ exit_signals << :QUIT unless defined?(JRUBY_VERSION)
44
+
45
+ exit_signals.each do |signal|
46
+ trap(signal) do
47
+ puts "Stopping"
48
+ exit(0)
49
+ end
50
+ end
51
+ end
52
+
53
+ def monitor_task
54
+ @monitor_task ||= ::Concurrent::TimerTask.new(
55
+ execution_interval: options.check_every_seconds,
56
+ timeout_interval: options.check_every_seconds
57
+ ) do
58
+ tasks = ::Aws::SiteMonitor::Site.all.map do |site|
59
+ puts "MAKING REQUEST TO #{site[:url]}"
60
+ result = `curl -s -o /dev/null -I -w "%{http_code}" #{site[:url]}`
61
+ puts result.inspect
62
+
63
+ if result[0] === "2"
64
+ puts "GOT 200 EVERYTHING OK"
65
+ nil
66
+ else
67
+ ::Aws::SiteMonitor::Event.create(:status_code => result)
68
+ ::Aws::SiteMonitor::RestartTask.new(site)
69
+ end
70
+ end
71
+
72
+ tasks.flatten.compact.map(&:run)
73
+ end
74
+ end
75
+
76
+ def start_monitoring!
77
+ monitor_task.shutdown if @monitor_task
78
+ @monitor_task = nil
79
+ monitor_task.execute
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,23 @@
1
+ module Aws
2
+ module SiteMonitor
3
+ class Manage < ::Thor
4
+ option :url, :type => :string, :desc => 'URL to watch'
5
+ option :instance_ids, :type => :array, :desc => 'AWS Instance IDS to restart when non 200 response is detected'
6
+
7
+ desc "add", "Add a site to the watch list"
8
+ def add
9
+ site = ::Aws::SiteMonitor::Site.create(:url => options.url, :instance_ids => options.instance_ids)
10
+ puts "added #{options[:url]} to watchlist"
11
+ end
12
+
13
+ option :url, :type => :string, :desc => 'URL to remove from watchlist'
14
+ desc "remove", "Remove a site from the watch list"
15
+ def remove
16
+ site = ::Aws::SiteMonitor::Site.find_by(:url => options.url)
17
+ raise ::StandardError.new("SiteNotFound #{options.url}") if !site
18
+ site.destroy
19
+ puts "removed #{site[:url]} from watchlist"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,94 @@
1
+ require 'pstore'
2
+
3
+ require 'pry'
4
+
5
+ module Aws
6
+ module SiteMonitor
7
+ module PstoreRecord
8
+ extend ::ActiveSupport::Concern
9
+
10
+ included do
11
+ table_name self.name.demodulize.downcase.pluralize
12
+ end
13
+
14
+ module ClassMethods
15
+ def [](k)
16
+ instance_variable_get(:"@_#{k}")
17
+ end
18
+
19
+ def primary_key(key)
20
+ @_primary_key = key
21
+ end
22
+
23
+ def table_name(value)
24
+ @_table_name = value
25
+ end
26
+
27
+ def database
28
+ @_database ||= ::PStore.new("#{self[:table_name]}.pstore")
29
+ end
30
+
31
+ def create(attributes={})
32
+ record = new(attributes)
33
+ record.save
34
+ end
35
+
36
+ def all
37
+ database.transaction(true) do # begin read-only transaction
38
+ database.roots.map do |data_root_name|
39
+ # binding.pry
40
+ record = database[data_root_name]
41
+ record.symbolize_keys!
42
+ new(**record.symbolize_keys)
43
+ end
44
+ end
45
+ end
46
+
47
+ def find_by(**options)
48
+ all.find{ |record| options.all?{|k,v| record[k] == v } }
49
+ end
50
+ end
51
+
52
+ def [](k)
53
+ instance_variable_get(:"@#{k}")
54
+ end
55
+
56
+ def []=(k,v)
57
+ instance_variable_set(:"@#{k}", v)
58
+ end
59
+
60
+ def initialize(id: ::SecureRandom.hex(16), **_attributes)
61
+ self['id'] = id
62
+
63
+ _attributes.each_pair do |k,v|
64
+ self[k] = v
65
+ end
66
+ end
67
+
68
+ def attributes
69
+ instance_variables.each_with_object({}) do |k, obj|
70
+ key = k[1,k.length]
71
+ obj[key] = self[key]
72
+ end.symbolize_keys
73
+ end
74
+
75
+ def destroy
76
+ self.class.database.transaction do
77
+ self.class.database.delete(self[:id])
78
+ end
79
+
80
+ true
81
+ end
82
+
83
+
84
+ def save
85
+ records = self.class.database
86
+
87
+ records.transaction do
88
+ records[@id] = self.attributes.symbolize_keys
89
+ records.commit
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,5 @@
1
+ module Aws
2
+ module SiteMonitor
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,69 @@
1
+ require "aws/site_monitor/version"
2
+ require "thor"
3
+ require "concurrent"
4
+ require "active_support"
5
+ require "active_support/inflector"
6
+ require "active_support/core_ext"
7
+ require 'aws-sdk'
8
+ require 'pstore'
9
+ require 'aws/site_monitor/pstore_record'
10
+ require 'aws/site_monitor/cli'
11
+
12
+ ENV['AWS_REGION'] ||= 'us-east-1'
13
+
14
+ module Aws
15
+ module SiteMonitor
16
+ def self.ec2_client
17
+ @ec2_client ||= begin
18
+ ::Aws.config.update({
19
+ credentials: ::Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
20
+ })
21
+
22
+ ::Aws::EC2::Client.new(region: AWS_REGION)
23
+ end
24
+ end
25
+
26
+ def self.register(url:, instance_ids:)
27
+ ::Aws::SiteMonitor::Site.create(url: url, instance_ids: instance_ids)
28
+ end
29
+
30
+ def self.unregister(url:)
31
+ ::Aws::SiteMonitor::Site.find_by(:url => url)
32
+ end
33
+
34
+ class Event
35
+ include ::Aws::SiteMonitor::PstoreRecord
36
+
37
+ def initialize(occured_at: ::Time.now, status_code:, **attributes)
38
+ super(occured_at: occured_at, status_code: status_code, **attributes)
39
+ end
40
+ end
41
+
42
+ class Site
43
+ include ::Aws::SiteMonitor::PstoreRecord
44
+ end
45
+
46
+ class RestartTask
47
+ def initialize(site)
48
+ @site = site
49
+ end
50
+
51
+ def run
52
+ ::Aws::SiteMonitor.ec2_client.reboot_instances({
53
+ instance_ids: @site[:instance_ids]
54
+ })
55
+ end
56
+
57
+ # todo: maybe support hard shutdown / start
58
+ # def stop
59
+ # begin
60
+ # Aws::SiteMonitor.ec2_client.stop_instances
61
+ # ec2.wait_until(:instance_stopped, instance_ids:[@id])
62
+ # puts "instance stopped"
63
+ # rescue Aws::Waiters::Errors::WaiterFailed => error
64
+ # puts "failed waiting for instance running: #{error.message}"
65
+ # end
66
+ # end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,5 @@
1
+ module Aws
2
+ module SiteMonitor
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,177 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aws_site_monitor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jason Ayre
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: concurrent-ruby
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: thor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Monitor sites hosted on AWS, restart ec2 machines when they go down
126
+ email:
127
+ - jasonayre@gmail.com
128
+ executables:
129
+ - console
130
+ - monitor
131
+ - setup
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - ".gitignore"
136
+ - ".rspec"
137
+ - ".travis.yml"
138
+ - Gemfile
139
+ - Gemfile.lock
140
+ - LICENSE.txt
141
+ - README.md
142
+ - Rakefile
143
+ - aws_site_monitor.gemspec
144
+ - bin/console
145
+ - bin/monitor
146
+ - bin/setup
147
+ - lib/aws/site_monitor.rb
148
+ - lib/aws/site_monitor/cli.rb
149
+ - lib/aws/site_monitor/manage.rb
150
+ - lib/aws/site_monitor/pstore_record.rb
151
+ - lib/aws/site_monitor/version.rb
152
+ - lib/aws/version.rb
153
+ homepage: https://github.com/jasonayre/aws_site_monitor
154
+ licenses:
155
+ - MIT
156
+ metadata: {}
157
+ post_install_message:
158
+ rdoc_options: []
159
+ require_paths:
160
+ - lib
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ requirements: []
172
+ rubyforge_project:
173
+ rubygems_version: 2.5.1
174
+ signing_key:
175
+ specification_version: 4
176
+ summary: Monitor sites hosted on AWS, restart ec2 machines when they go down
177
+ test_files: []