Class: DynamoAutoscale::RuleSet
- Inherits:
-
Object
- Object
- DynamoAutoscale::RuleSet
show all
- Includes:
- Logger
- Defined in:
- lib/dynamo-autoscale/rule_set.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Logger
included, logger, #logger, logger=
Constructor Details
#initialize(path = nil, &block) ⇒ RuleSet
Returns a new instance of RuleSet.
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 7
def initialize path = nil, &block
@rules = Hash.new { |h, k| h[k] = [] }
@current_table = :all
if path
instance_eval(File.read(path))
elsif block
instance_eval(&block)
end
end
|
Instance Attribute Details
#rules ⇒ Object
Returns the value of attribute rules.
5
6
7
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 5
def rules
@rules
end
|
Instance Method Details
#checksum ⇒ Object
64
65
66
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 64
def checksum
Digest::MD5.hexdigest(self.serialize)
end
|
#deep_dup ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 68
def deep_dup
duplicate = RuleSet.new
new_rules = Hash.new { |h, k| h[k] = [] }
@rules.each do |table_name, rules|
rules.each do |rule|
new_rules[table_name] << Rule.new(rule.metric, rule.opts)
end
end
duplicate.rules = new_rules
duplicate
end
|
#for(table_name) ⇒ Object
18
19
20
21
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 18
def for table_name
return @rules[:all] if table_name == :all
@rules[table_name] + @rules[:all]
end
|
#reads(opts, &block) ⇒ Object
50
51
52
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 50
def reads opts, &block
@rules[@current_table] << Rule.new(:consumed_reads, opts, &block)
end
|
#serialize ⇒ Object
54
55
56
57
58
59
60
61
62
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 54
def serialize
@rules.inject("") do |memo, (table_name, rules)|
memo += "table #{table_name.inspect} do\n"
rules.each do |rule|
memo += " #{rule.serialize}\n"
end
memo += "end\n"
end
end
|
#table(table_name, &block) ⇒ Object
40
41
42
43
44
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 40
def table table_name, &block
@current_table = table_name
instance_eval(&block)
@current_table = :all
end
|
#test(table) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 23
def test table
result = false
rules = self.for(table.name)
rules.select(&:reads?).each do |rule|
break result = true if rule.test(table)
end
rules.select(&:writes?).each do |rule|
break result = true if rule.test(table)
end
result
end
|
#writes(opts, &block) ⇒ Object
46
47
48
|
# File 'lib/dynamo-autoscale/rule_set.rb', line 46
def writes opts, &block
@rules[@current_table] << Rule.new(:consumed_writes, opts, &block)
end
|