right_support 1.0.6 → 1.0.7
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.
@@ -25,12 +25,13 @@ require 'set'
|
|
25
25
|
module RightSupport::Net::Balancing
|
26
26
|
|
27
27
|
class EndpointsStack
|
28
|
-
|
29
|
-
# Modified by Ryan Williamson on 9/28/2011 to ensure default values exist
|
30
|
-
# for @yellow_states and @reset_time
|
31
28
|
DEFAULT_YELLOW_STATES = 4
|
32
29
|
DEFAULT_RESET_TIME = 300
|
33
30
|
|
31
|
+
def endpoints
|
32
|
+
@endpoints
|
33
|
+
end
|
34
|
+
|
34
35
|
def initialize(endpoints, yellow_states=nil, reset_time=nil)
|
35
36
|
@endpoints = Hash.new
|
36
37
|
@yellow_states = yellow_states || DEFAULT_YELLOW_STATES
|
@@ -60,6 +61,18 @@ module RightSupport::Net::Balancing
|
|
60
61
|
@endpoints[endpoint][:timestamp] = t1
|
61
62
|
end
|
62
63
|
end
|
64
|
+
|
65
|
+
# Returns a hash of endpoints and their colored health status
|
66
|
+
# Useful for logging and debugging
|
67
|
+
def get_stats
|
68
|
+
stats = {}
|
69
|
+
@endpoints.each do |k, v|
|
70
|
+
stats[k] = 'green' if v[:n_level] == 0
|
71
|
+
stats[k] = 'red' if v[:n_level] == @yellow_states
|
72
|
+
stats[k] = "yellow-#{v[:n_level]}" if v[:n_level] > 0 && v[:n_level] < @yellow_states
|
73
|
+
end
|
74
|
+
stats
|
75
|
+
end
|
63
76
|
|
64
77
|
end
|
65
78
|
|
@@ -119,6 +132,11 @@ module RightSupport::Net::Balancing
|
|
119
132
|
def health_check(endpoint)
|
120
133
|
@stack.increase_state(endpoint,t0,Time.now) unless @health_check.call(endpoint)
|
121
134
|
end
|
135
|
+
|
136
|
+
# Proxy to EndpointStack
|
137
|
+
def get_stats
|
138
|
+
@stack.get_stats
|
139
|
+
end
|
122
140
|
|
123
141
|
end
|
124
142
|
end
|
@@ -191,6 +191,29 @@ module RightSupport::Net
|
|
191
191
|
raise NoResult, msg
|
192
192
|
end
|
193
193
|
|
194
|
+
# Provide an interface so one can query the RequestBalancer for statistics on
|
195
|
+
# it's endpoints. Merely proxies the balancing policy's get_stats method. If
|
196
|
+
# no method exists in the balancing policy, a hash of endpoints with "n/a" is
|
197
|
+
# returned.
|
198
|
+
#
|
199
|
+
# Examples
|
200
|
+
#
|
201
|
+
# A RequestBalancer created with endpoints [1,2,3,4,5] and using a HealthCheck
|
202
|
+
# balancing policy may return:
|
203
|
+
#
|
204
|
+
# {5 => "yellow-3", 1 => "red", 2 => "yellow-1", 3 => "green", 4 => "yellow-2"}
|
205
|
+
#
|
206
|
+
# A RequestBalancer created with endpoints [1,2,3,4,5] and specifying no
|
207
|
+
# balancing policy or using the default RoundRobin balancing policy may return:
|
208
|
+
#
|
209
|
+
# {2 => "n/a", 1 => "n/a", 3 => "n/a"}
|
210
|
+
def get_stats
|
211
|
+
stats = {}
|
212
|
+
@endpoints.each { |endpoint| stats[endpoint] = 'n/a' }
|
213
|
+
stats = @policy.get_stats if @policy.respond_to?(:get_stats)
|
214
|
+
stats
|
215
|
+
end
|
216
|
+
|
194
217
|
protected
|
195
218
|
|
196
219
|
# Decide what to do with an exception. The decision is influenced by the :fatal
|
data/right_support.gemspec
CHANGED
@@ -7,8 +7,8 @@ spec = Gem::Specification.new do |s|
|
|
7
7
|
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
8
8
|
|
9
9
|
s.name = 'right_support'
|
10
|
-
s.version = '1.0.
|
11
|
-
s.date = '2011-10-
|
10
|
+
s.version = '1.0.7'
|
11
|
+
s.date = '2011-10-13'
|
12
12
|
|
13
13
|
s.authors = ['Tony Spataro']
|
14
14
|
s.email = 'tony@rightscale.com'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 7
|
10
|
+
version: 1.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Spataro
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-10-
|
18
|
+
date: 2011-10-13 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|