dynamo-autoscale 0.2.8 → 0.2.9
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.
- data/CHANGELOG +5 -0
- data/README.md +5 -4
- data/lib/dynamo-autoscale/actioner.rb +26 -21
- data/lib/dynamo-autoscale/scale_report.rb +5 -1
- data/lib/dynamo-autoscale/version.rb +1 -1
- data/templates/scale_report_email.erb +6 -5
- metadata +2 -2
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -425,10 +425,11 @@ Report Issues/Feature requests on
|
|
425
425
|
|
426
426
|
* Fork the project.
|
427
427
|
* Make your feature addition or bug fix.
|
428
|
-
* Add tests for it. This is important so we don't break it in a
|
429
|
-
|
430
|
-
* Commit, do not modify the rakefile, version, or history.
|
431
|
-
|
428
|
+
* Add tests for it. This is important so we don't break it in a future version
|
429
|
+
unintentionally.
|
430
|
+
* Commit, do not modify the rakefile, version, or history. (if you want to
|
431
|
+
have your own version, that is fine but bump version in a commit by itself so
|
432
|
+
it can be ignored when we pull)
|
432
433
|
* Send a pull request. Bonus points for topic branches.
|
433
434
|
|
434
435
|
### Copyright
|
@@ -134,7 +134,10 @@ module DynamoAutoscale
|
|
134
134
|
|
135
135
|
# Because upscales are not limited, we don't need to queue this operation.
|
136
136
|
if result = scale(metric, to)
|
137
|
-
table.scale_events[now] = {
|
137
|
+
table.scale_events[now] = {
|
138
|
+
"#{metric}_to".to_sym => to,
|
139
|
+
"#{metric}_from".to_sym => from,
|
140
|
+
}
|
138
141
|
|
139
142
|
@provisioned[metric][now] = to
|
140
143
|
@upscales += 1
|
@@ -163,11 +166,11 @@ module DynamoAutoscale
|
|
163
166
|
"#{from ? from.round(2) : "Unknown"} -> #{to.round(2)}"
|
164
167
|
end
|
165
168
|
|
166
|
-
queue_operation! metric, to
|
169
|
+
queue_operation! metric, from, to
|
167
170
|
end
|
168
171
|
|
169
|
-
def queue_operation! metric,
|
170
|
-
@pending[metric] =
|
172
|
+
def queue_operation! metric, from, to
|
173
|
+
@pending[metric] = [from, to]
|
171
174
|
try_flush!
|
172
175
|
end
|
173
176
|
|
@@ -192,16 +195,18 @@ module DynamoAutoscale
|
|
192
195
|
now = Time.now.utc
|
193
196
|
|
194
197
|
if @pending[:writes] and @pending[:reads]
|
195
|
-
|
196
|
-
|
198
|
+
wfrom, wto = @pending[:writes]
|
199
|
+
rfrom, rto = @pending[:reads]
|
197
200
|
|
198
|
-
if result = scale_both(
|
199
|
-
@provisioned[:writes][now] =
|
200
|
-
@provisioned[:reads][now] =
|
201
|
+
if result = scale_both(rto, wto)
|
202
|
+
@provisioned[:writes][now] = wto
|
203
|
+
@provisioned[:reads][now] = rto
|
201
204
|
|
202
205
|
table.scale_events[now] = {
|
203
|
-
|
204
|
-
|
206
|
+
writes_from: wfrom,
|
207
|
+
writes_to: wto,
|
208
|
+
reads_from: rfrom,
|
209
|
+
reads_to: rto,
|
205
210
|
}
|
206
211
|
|
207
212
|
@pending[:writes] = nil
|
@@ -212,24 +217,24 @@ module DynamoAutoscale
|
|
212
217
|
logger.error "[flush] Failed to flush a read and write event."
|
213
218
|
end
|
214
219
|
elsif @pending[:writes]
|
215
|
-
|
220
|
+
from, to = @pending[:writes]
|
216
221
|
|
217
|
-
if result = scale(:writes,
|
218
|
-
@provisioned[:writes][now] =
|
219
|
-
table.scale_events[now]
|
220
|
-
@pending[:writes]
|
222
|
+
if result = scale(:writes, to)
|
223
|
+
@provisioned[:writes][now] = to
|
224
|
+
table.scale_events[now] = { writes_from: from, writes_to: to }
|
225
|
+
@pending[:writes] = nil
|
221
226
|
|
222
227
|
logger.info "[flush] Flushed a write event."
|
223
228
|
else
|
224
229
|
logger.error "[flush] Failed to flush a write event."
|
225
230
|
end
|
226
231
|
elsif @pending[:reads]
|
227
|
-
|
232
|
+
from, to = @pending[:reads]
|
228
233
|
|
229
|
-
if result = scale(:reads,
|
230
|
-
@provisioned[:reads][now] =
|
231
|
-
table.scale_events[now]
|
232
|
-
@pending[:reads]
|
234
|
+
if result = scale(:reads, to)
|
235
|
+
@provisioned[:reads][now] = to
|
236
|
+
table.scale_events[now] = { reads_from: from, reads_to: to }
|
237
|
+
@pending[:reads] = nil
|
233
238
|
|
234
239
|
logger.info "[flush] Flushed a read event."
|
235
240
|
else
|
@@ -16,12 +16,16 @@ module DynamoAutoscale
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def email_content
|
20
|
+
@erb.result(binding)
|
21
|
+
end
|
22
|
+
|
19
23
|
def send
|
20
24
|
return false unless @enabled
|
21
25
|
|
22
26
|
result = Pony.mail({
|
23
27
|
subject: "Scale event for #{@table.name}",
|
24
|
-
body:
|
28
|
+
body: email_content,
|
25
29
|
})
|
26
30
|
|
27
31
|
if result
|
@@ -1,3 +1,9 @@
|
|
1
|
+
Last 5 scale events:
|
2
|
+
|
3
|
+
<% @table.scale_events.reverse_each.take(5).each do |time, scale_event| %>
|
4
|
+
<%= time.iso8601 %>: <%= scale_event %>
|
5
|
+
<% end %>
|
6
|
+
|
1
7
|
Last 5 triggered rules:
|
2
8
|
|
3
9
|
<% @table.triggered_rules.reverse_each.take(5).each do |time, rule| %>
|
@@ -10,8 +16,3 @@ Last 20 data points:
|
|
10
16
|
<%= time.iso8601 %>: <%= datum %>
|
11
17
|
<% end %>
|
12
18
|
|
13
|
-
Last 5 scale events:
|
14
|
-
|
15
|
-
<% @table.scale_events.reverse_each.take(5) do |time, scale_event| %>
|
16
|
-
<%= time.iso8601 %>: <%= scale_event %>
|
17
|
-
<% end %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamo-autoscale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir:
|
11
11
|
- bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-07-
|
13
|
+
date: 2013-07-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws-sdk
|