right_agent 0.16.2 → 0.17.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.
- data/lib/right_agent/agent.rb +11 -2
- data/lib/right_agent/sender.rb +3 -1
- data/right_agent.gemspec +3 -3
- data/spec/agent_spec.rb +1 -0
- data/spec/sender_spec.rb +5 -3
- metadata +82 -137
data/lib/right_agent/agent.rb
CHANGED
@@ -795,8 +795,10 @@ module RightScale
|
|
795
795
|
true
|
796
796
|
end
|
797
797
|
|
798
|
-
# Check status of agent by
|
799
|
-
# and
|
798
|
+
# Check status of agent by finishing any queue setup, checking the status of the queues,
|
799
|
+
# and gathering/publishing current operation statistics
|
800
|
+
# Checking the status of a queue will cause the broker connection to fail if the
|
801
|
+
# queue does not exist, but a reconnect should then get initiated on the next check loop
|
800
802
|
# Although agent termination cancels the check_status_timer, this method could induce
|
801
803
|
# termination, therefore the termination status needs to be checked before each step
|
802
804
|
#
|
@@ -810,6 +812,13 @@ module RightScale
|
|
810
812
|
@exception_stats.track("check status", e)
|
811
813
|
end
|
812
814
|
|
815
|
+
begin
|
816
|
+
@broker.queue_status(@queues, timeout = @options[:check_interval] / 10) unless @terminating
|
817
|
+
rescue Exception => e
|
818
|
+
Log.error("Failed checking queue status", e)
|
819
|
+
@exception_stats.track("check status", e)
|
820
|
+
end
|
821
|
+
|
813
822
|
begin
|
814
823
|
if @stats_routing_key && !@terminating
|
815
824
|
exchange = {:type => :topic, :name => "stats", :options => {:no_declare => true}}
|
data/lib/right_agent/sender.rb
CHANGED
@@ -148,7 +148,7 @@ module RightScale
|
|
148
148
|
MAX_QUEUE_FLUSH_DELAY = 2 * 60
|
149
149
|
|
150
150
|
# Maximum number of offline queued requests before triggering restart vote
|
151
|
-
MAX_QUEUED_REQUESTS =
|
151
|
+
MAX_QUEUED_REQUESTS = 100
|
152
152
|
|
153
153
|
# Number of seconds that should be spent in offline mode before triggering a restart vote
|
154
154
|
RESTART_VOTE_DELAY = 15 * 60
|
@@ -470,6 +470,8 @@ module RightScale
|
|
470
470
|
Log.error("Failed to reconnect to broker #{@ping_id}", e, :trace)
|
471
471
|
@exception_stats.track("ping timeout", e)
|
472
472
|
end
|
473
|
+
else
|
474
|
+
@ping_timer = nil
|
473
475
|
end
|
474
476
|
end
|
475
477
|
|
data/right_agent.gemspec
CHANGED
@@ -24,8 +24,8 @@ require 'rubygems'
|
|
24
24
|
|
25
25
|
Gem::Specification.new do |spec|
|
26
26
|
spec.name = 'right_agent'
|
27
|
-
spec.version = '0.
|
28
|
-
spec.date = '2013-
|
27
|
+
spec.version = '0.17.0'
|
28
|
+
spec.date = '2013-08-04'
|
29
29
|
spec.authors = ['Lee Kirchhoff', 'Raphael Simon', 'Tony Spataro']
|
30
30
|
spec.email = 'lee@rightscale.com'
|
31
31
|
spec.homepage = 'https://github.com/rightscale/right_agent'
|
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.require_path = 'lib'
|
39
39
|
|
40
40
|
spec.add_dependency('right_support', ['>= 2.4.1', '< 3.0'])
|
41
|
-
spec.add_dependency('right_amqp', '~> 0.
|
41
|
+
spec.add_dependency('right_amqp', '~> 0.7')
|
42
42
|
spec.add_dependency('json', ['>= 1.4', '<= 1.7.6']) # json_create behavior change in 1.7.7
|
43
43
|
spec.add_dependency('eventmachine', ['>= 0.12.10', '< 2.0'])
|
44
44
|
spec.add_dependency('msgpack', ['>= 0.4.4', '< 0.6'])
|
data/spec/agent_spec.rb
CHANGED
@@ -304,6 +304,7 @@ describe RightScale::Agent do
|
|
304
304
|
run_in_em do
|
305
305
|
@broker.should_receive(:subscribe).with(hsh(:name => @identity), nil, hsh(:brokers => nil), Proc).
|
306
306
|
and_return(@broker_ids.first(1)).once
|
307
|
+
@broker.should_receive(:queue_status).with([@identity], 30).once
|
307
308
|
@agent.run
|
308
309
|
@agent.instance_variable_get(:@remaining_queue_setup).should == {@identity => @broker_ids.last(1)}
|
309
310
|
@sender.should_receive(:send_push).with("/registrar/connect", {:agent_identity => @identity, :host => "123",
|
data/spec/sender_spec.rb
CHANGED
@@ -140,12 +140,14 @@ describe RightScale::Sender do
|
|
140
140
|
EM.run do
|
141
141
|
EM.add_timer(1) { EM.stop }
|
142
142
|
RightScale::Sender.new(@agent)
|
143
|
-
instance = RightScale::Sender.instance
|
144
|
-
flexmock(instance).should_receive(:publish).and_return([]).once
|
145
|
-
instance.connectivity_checker.check(id = nil)
|
143
|
+
@instance = RightScale::Sender.instance
|
144
|
+
flexmock(@instance).should_receive(:publish).and_return([]).once
|
145
|
+
@instance.connectivity_checker.check(id = nil)
|
146
146
|
end
|
147
147
|
ensure
|
148
148
|
RightScale::Sender::ConnectivityChecker.const_set(:PING_TIMEOUT, old_ping_timeout)
|
149
|
+
@instance.connectivity_checker.instance_variable_get(:@ping_timer).should be_nil
|
150
|
+
@instance.connectivity_checker.instance_variable_get(:@ping_id).should be_nil
|
149
151
|
end
|
150
152
|
end
|
151
153
|
|
metadata
CHANGED
@@ -1,164 +1,118 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_agent
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 16
|
9
|
-
- 2
|
10
|
-
version: 0.16.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.17.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Lee Kirchhoff
|
14
9
|
- Raphael Simon
|
15
10
|
- Tony Spataro
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
14
|
+
date: 2013-08-04 00:00:00.000000000Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: right_support
|
18
|
+
requirement: &2168887200 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 29
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 4
|
33
|
-
- 1
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
34
23
|
version: 2.4.1
|
35
24
|
- - <
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
|
38
|
-
segments:
|
39
|
-
- 3
|
40
|
-
- 0
|
41
|
-
version: "3.0"
|
42
|
-
requirement: *id001
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.0'
|
43
27
|
type: :runtime
|
44
|
-
name: right_support
|
45
28
|
prerelease: false
|
46
|
-
|
47
|
-
|
29
|
+
version_requirements: *2168887200
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: right_amqp
|
32
|
+
requirement: &2168885180 !ruby/object:Gem::Requirement
|
48
33
|
none: false
|
49
|
-
requirements:
|
34
|
+
requirements:
|
50
35
|
- - ~>
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
|
53
|
-
segments:
|
54
|
-
- 0
|
55
|
-
- 4
|
56
|
-
version: "0.4"
|
57
|
-
requirement: *id002
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.7'
|
58
38
|
type: :runtime
|
59
|
-
name: right_amqp
|
60
39
|
prerelease: false
|
61
|
-
|
62
|
-
|
40
|
+
version_requirements: *2168885180
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: json
|
43
|
+
requirement: &2168883820 !ruby/object:Gem::Requirement
|
63
44
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
|
68
|
-
segments:
|
69
|
-
- 1
|
70
|
-
- 4
|
71
|
-
version: "1.4"
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.4'
|
72
49
|
- - <=
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
hash: 7
|
75
|
-
segments:
|
76
|
-
- 1
|
77
|
-
- 7
|
78
|
-
- 6
|
50
|
+
- !ruby/object:Gem::Version
|
79
51
|
version: 1.7.6
|
80
|
-
requirement: *id003
|
81
52
|
type: :runtime
|
82
|
-
name: json
|
83
53
|
prerelease: false
|
84
|
-
|
85
|
-
|
54
|
+
version_requirements: *2168883820
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: eventmachine
|
57
|
+
requirement: &2168882040 !ruby/object:Gem::Requirement
|
86
58
|
none: false
|
87
|
-
requirements:
|
88
|
-
- -
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
hash: 59
|
91
|
-
segments:
|
92
|
-
- 0
|
93
|
-
- 12
|
94
|
-
- 10
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
95
62
|
version: 0.12.10
|
96
63
|
- - <
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
segments:
|
100
|
-
- 2
|
101
|
-
- 0
|
102
|
-
version: "2.0"
|
103
|
-
requirement: *id004
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '2.0'
|
104
66
|
type: :runtime
|
105
|
-
name: eventmachine
|
106
67
|
prerelease: false
|
107
|
-
|
108
|
-
|
68
|
+
version_requirements: *2168882040
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: msgpack
|
71
|
+
requirement: &2168880380 !ruby/object:Gem::Requirement
|
109
72
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
hash: 7
|
114
|
-
segments:
|
115
|
-
- 0
|
116
|
-
- 4
|
117
|
-
- 4
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
118
76
|
version: 0.4.4
|
119
77
|
- - <
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
|
122
|
-
segments:
|
123
|
-
- 0
|
124
|
-
- 6
|
125
|
-
version: "0.6"
|
126
|
-
requirement: *id005
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0.6'
|
127
80
|
type: :runtime
|
128
|
-
name: msgpack
|
129
81
|
prerelease: false
|
130
|
-
|
131
|
-
|
82
|
+
version_requirements: *2168880380
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: net-ssh
|
85
|
+
requirement: &2168878400 !ruby/object:Gem::Requirement
|
132
86
|
none: false
|
133
|
-
requirements:
|
87
|
+
requirements:
|
134
88
|
- - ~>
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
|
137
|
-
segments:
|
138
|
-
- 2
|
139
|
-
- 0
|
140
|
-
version: "2.0"
|
141
|
-
requirement: *id006
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.0'
|
142
91
|
type: :runtime
|
143
|
-
name: net-ssh
|
144
92
|
prerelease: false
|
145
|
-
|
146
|
-
|
93
|
+
version_requirements: *2168878400
|
94
|
+
description: ! 'RightAgent provides a foundation for running an agent on a server
|
95
|
+
to interface
|
96
|
+
|
147
97
|
in a secure fashion with other agents in the RightScale system. A RightAgent
|
98
|
+
|
148
99
|
uses RabbitMQ as the message bus and the RightScale mapper as the routing node.
|
100
|
+
|
149
101
|
Servers running a RightAgent establish a queue on startup for receiving packets
|
102
|
+
|
150
103
|
routed to it via the mapper. The packets are structured to invoke services in
|
104
|
+
|
151
105
|
the agent represented by actors and methods. The RightAgent may respond to these
|
106
|
+
|
152
107
|
requests with a result packet that the mapper then routes to the originator.
|
153
108
|
|
109
|
+
'
|
154
110
|
email: lee@rightscale.com
|
155
111
|
executables: []
|
156
|
-
|
157
112
|
extensions: []
|
158
|
-
|
159
|
-
extra_rdoc_files:
|
113
|
+
extra_rdoc_files:
|
160
114
|
- README.rdoc
|
161
|
-
files:
|
115
|
+
files:
|
162
116
|
- LICENSE
|
163
117
|
- README.rdoc
|
164
118
|
- Rakefile
|
@@ -311,44 +265,35 @@ files:
|
|
311
265
|
- spec/spec.win32.opts
|
312
266
|
- spec/spec_helper.rb
|
313
267
|
- spec/tracer_spec.rb
|
314
|
-
has_rdoc: true
|
315
268
|
homepage: https://github.com/rightscale/right_agent
|
316
269
|
licenses: []
|
317
|
-
|
318
270
|
post_install_message:
|
319
|
-
rdoc_options:
|
271
|
+
rdoc_options:
|
320
272
|
- --main
|
321
273
|
- README.rdoc
|
322
274
|
- --title
|
323
275
|
- RightAgent
|
324
|
-
require_paths:
|
276
|
+
require_paths:
|
325
277
|
- lib
|
326
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
278
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
327
279
|
none: false
|
328
|
-
requirements:
|
329
|
-
- -
|
330
|
-
- !ruby/object:Gem::Version
|
331
|
-
hash: 57
|
332
|
-
segments:
|
333
|
-
- 1
|
334
|
-
- 8
|
335
|
-
- 7
|
280
|
+
requirements:
|
281
|
+
- - ! '>='
|
282
|
+
- !ruby/object:Gem::Version
|
336
283
|
version: 1.8.7
|
337
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
284
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
338
285
|
none: false
|
339
|
-
requirements:
|
340
|
-
- -
|
341
|
-
- !ruby/object:Gem::Version
|
342
|
-
|
343
|
-
segments:
|
286
|
+
requirements:
|
287
|
+
- - ! '>='
|
288
|
+
- !ruby/object:Gem::Version
|
289
|
+
version: '0'
|
290
|
+
segments:
|
344
291
|
- 0
|
345
|
-
|
292
|
+
hash: 4577991098158607352
|
346
293
|
requirements: []
|
347
|
-
|
348
294
|
rubyforge_project:
|
349
|
-
rubygems_version: 1.
|
295
|
+
rubygems_version: 1.8.10
|
350
296
|
signing_key:
|
351
297
|
specification_version: 3
|
352
298
|
summary: Agent for interfacing server with RightScale system
|
353
299
|
test_files: []
|
354
|
-
|