right_agent 2.4.1 → 2.4.2
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 +4 -4
- data/lib/right_agent/clients/balanced_http_client.rb +20 -9
- data/lib/right_agent/clients/base_retry_client.rb +2 -1
- data/lib/right_agent/clients/right_http_client.rb +2 -2
- data/lib/right_agent/clients/router_client.rb +2 -0
- data/right_agent.gemspec +2 -2
- data/spec/clients/balanced_http_client_spec.rb +16 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f847073e46487c064b8b6f889f911cce5e4f108
|
4
|
+
data.tar.gz: 3d3e8c151fd4175d18925826183e06fa53492d1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9422e92a47df194278674c186abb7f0b28d8235b901ae01a5c1313f4e3955a66515717a6b2ef47acd90a8e838f4c6734399978b5d50a8ed24096bfcae0e8e7b3
|
7
|
+
data.tar.gz: ad341db3b0ff0a704ccee785966cefedc0c134ec7c71a259e6973969a968b05a6358b3685b90c4d76dd030b09ee0cd444f6d706aab7a00909b8ee864e127015f
|
@@ -59,6 +59,9 @@ module RightScale
|
|
59
59
|
# Text used for filtered parameter value
|
60
60
|
FILTERED_PARAM_VALUE = "<hidden>"
|
61
61
|
|
62
|
+
# Parameters whose contents are also to have filtering applied
|
63
|
+
CONTENT_FILTERED_PARAMS = ["payload"]
|
64
|
+
|
62
65
|
# Environment variables to examine for proxy settings, in order
|
63
66
|
PROXY_ENVIRONMENT_VARIABLES = ['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy', 'ALL_PROXY']
|
64
67
|
|
@@ -71,7 +74,8 @@ module RightScale
|
|
71
74
|
# @option options [String] :health_check_path in URI for health check resource;
|
72
75
|
# defaults to DEFAULT_HEALTH_CHECK_PATH
|
73
76
|
# @option options [Array] :filter_params symbols or strings for names of request parameters
|
74
|
-
# whose values are to be hidden when logging;
|
77
|
+
# whose values are to be hidden when logging; also applied to contents of any parameters
|
78
|
+
# in CONTENT_FILTERED_PARAMS; can be augmented on individual requests
|
75
79
|
# @option options [Boolean] :non_blocking i/o is to be used for HTTP requests by applying
|
76
80
|
# EM::HttpRequest and fibers instead of RestClient; requests remain synchronous
|
77
81
|
def initialize(urls, options = {})
|
@@ -140,9 +144,9 @@ module RightScale
|
|
140
144
|
# @option options [Numeric] :open_timeout maximum wait for connection; defaults to DEFAULT_OPEN_TIMEOUT
|
141
145
|
# @option options [Numeric] :request_timeout maximum wait for response; defaults to DEFAULT_REQUEST_TIMEOUT
|
142
146
|
# @option options [String] :request_uuid uniquely identifying request; defaults to random generated UUID
|
143
|
-
# @option options [Array] :filter_params symbols or strings for names of request
|
144
|
-
#
|
145
|
-
#
|
147
|
+
# @option options [Array] :filter_params symbols or strings for names of request parameters whose
|
148
|
+
# values are to be hidden when logging in addition to the ones provided during object initialization;
|
149
|
+
# also applied to contents of any parameters named :payload
|
146
150
|
# @option options [Hash] :headers to be added to request
|
147
151
|
# @option options [Numeric] :poll_timeout maximum wait for individual poll; defaults to :request_timeout
|
148
152
|
# @option options [Symbol] :log_level to use when logging information about the request other than errors;
|
@@ -359,8 +363,7 @@ module RightScale
|
|
359
363
|
#
|
360
364
|
# @return [String] Log text
|
361
365
|
def log_text(path, params, filter, host = nil, exception = nil)
|
362
|
-
|
363
|
-
text = filtered_params ? "#{path} #{filtered_params}" : path
|
366
|
+
text = "#{path} #{filter(params, filter).inspect}"
|
364
367
|
text = "[#{host}#{text}]" if host
|
365
368
|
text << " | #{self.class.exception_text(exception)}" if exception
|
366
369
|
text
|
@@ -368,8 +371,9 @@ module RightScale
|
|
368
371
|
|
369
372
|
# Apply parameter hiding filter
|
370
373
|
#
|
371
|
-
# @param [Hash, Object] params to be filtered
|
372
|
-
# @param [Array] filter names of params as strings (not symbols) whose value is to be hidden
|
374
|
+
# @param [Hash, Object] params to be filtered with strings or symbols as keys
|
375
|
+
# @param [Array] filter names of params as strings (not symbols) whose value is to be hidden;
|
376
|
+
# also filter the contents of any CONTENT_FILTERED_PARAMS
|
373
377
|
#
|
374
378
|
# @return [Hash] filtered parameters
|
375
379
|
def filter(params, filter)
|
@@ -377,7 +381,14 @@ module RightScale
|
|
377
381
|
params
|
378
382
|
else
|
379
383
|
filtered_params = {}
|
380
|
-
params.each
|
384
|
+
params.each do |k, p|
|
385
|
+
s = k.to_s
|
386
|
+
if filter.include?(s)
|
387
|
+
filtered_params[k] = FILTERED_PARAM_VALUE
|
388
|
+
else
|
389
|
+
filtered_params[k] = CONTENT_FILTERED_PARAMS.include?(s) ? filter(p, filter) : p
|
390
|
+
end
|
391
|
+
end
|
381
392
|
filtered_params
|
382
393
|
end
|
383
394
|
end
|
@@ -76,7 +76,8 @@ module RightScale
|
|
76
76
|
# @option options [Boolean] :non_blocking i/o is to be used for HTTP requests by applying
|
77
77
|
# EM::HttpRequest and fibers instead of RestClient; requests remain synchronous
|
78
78
|
# @option options [Array] :filter_params symbols or strings for names of request parameters
|
79
|
-
# whose values are to be hidden when logging;
|
79
|
+
# whose values are to be hidden when logging; also applied to contents of any parameters
|
80
|
+
# named :payload; can be augmented on individual requests
|
80
81
|
#
|
81
82
|
# @return [Boolean] whether currently connected
|
82
83
|
#
|
@@ -49,8 +49,8 @@ module RightScale
|
|
49
49
|
# @option options [Boolean] :non_blocking i/o is to be used for HTTP requests by applying
|
50
50
|
# EM::HttpRequest and fibers instead of RestClient; requests remain synchronous
|
51
51
|
# @option options [Boolean] :long_polling_only never attempt to create a WebSocket, always long-polling instead
|
52
|
-
# @option options [Array] :filter_params symbols or strings for names of request parameters
|
53
|
-
#
|
52
|
+
# @option options [Array] :filter_params symbols or strings for names of request parameters whose
|
53
|
+
# values are to be hidden when logging; also applied to contents of any parameters named :payload
|
54
54
|
#
|
55
55
|
# @return [TrueClass] always true
|
56
56
|
#
|
@@ -88,6 +88,8 @@ module RightScale
|
|
88
88
|
# @option options [Numeric] :reconnect_interval for reconnect attempts after lose connectivity
|
89
89
|
# @option options [Boolean] :non_blocking i/o is to be used for HTTP requests by applying
|
90
90
|
# EM::HttpRequest and fibers instead of RestClient; requests remain synchronous
|
91
|
+
# @option options [Array] :filter_params symbols or strings for names of request parameters whose
|
92
|
+
# values are to be hidden when logging; also applied to contents of any parameters named :payload
|
91
93
|
#
|
92
94
|
# @raise [ArgumentError] auth client does not support this client type
|
93
95
|
def initialize(auth_client, options)
|
data/right_agent.gemspec
CHANGED
@@ -25,8 +25,8 @@ require 'rbconfig'
|
|
25
25
|
|
26
26
|
Gem::Specification.new do |spec|
|
27
27
|
spec.name = 'right_agent'
|
28
|
-
spec.version = '2.4.
|
29
|
-
spec.date = '2014-08-
|
28
|
+
spec.version = '2.4.2'
|
29
|
+
spec.date = '2014-08-26'
|
30
30
|
spec.authors = ['Lee Kirchhoff', 'Raphael Simon', 'Tony Spataro', 'Scott Messier']
|
31
31
|
spec.email = 'lee@rightscale.com'
|
32
32
|
spec.homepage = 'https://github.com/rightscale/right_agent'
|
@@ -123,26 +123,26 @@ describe RightScale::BalancedHttpClient do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
it "uses specified request UUID" do
|
126
|
-
@log.should_receive(:info).with("Requesting POST <my uuid> /foo/bar").once
|
126
|
+
@log.should_receive(:info).with("Requesting POST <my uuid> /foo/bar {}").once
|
127
127
|
@log.should_receive(:info).with("Completed <my uuid> in 10ms | 200 [http://my.com/foo/bar] | 11 bytes")
|
128
128
|
@client.request(:post, @path, @params, :request_uuid => "my uuid")
|
129
129
|
end
|
130
130
|
|
131
131
|
it "generates request UUID if none specified" do
|
132
|
-
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar").once
|
132
|
+
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar {}").once
|
133
133
|
@log.should_receive(:info).with("Completed <random uuid> in 10ms | 200 [http://my.com/foo/bar] | 11 bytes").once
|
134
134
|
@client.request(:post, @path)
|
135
135
|
end
|
136
136
|
|
137
137
|
it "logs request before sending it" do
|
138
|
-
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar").once
|
138
|
+
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar {}").once
|
139
139
|
flexmock(@http_client).should_receive(:request).and_raise(RuntimeError).once
|
140
140
|
@client.request(:post, @path) rescue nil
|
141
141
|
end
|
142
142
|
|
143
143
|
it "logs using specified :log_level" do
|
144
144
|
@params = {:some => "data"}
|
145
|
-
@log.should_receive(:debug).with("Requesting POST <random uuid> /foo/bar").once
|
145
|
+
@log.should_receive(:debug).with("Requesting POST <random uuid> /foo/bar {:some=>\"data\"}").once
|
146
146
|
@log.should_receive(:debug).with("Completed <random uuid> in 10ms | 200 [http://my.com/foo/bar] | 11 bytes").once
|
147
147
|
@client.request(:post, @path, @params, :log_level => :debug)
|
148
148
|
end
|
@@ -170,7 +170,7 @@ describe RightScale::BalancedHttpClient do
|
|
170
170
|
end
|
171
171
|
|
172
172
|
it "logs successful completion of request" do
|
173
|
-
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar")
|
173
|
+
@log.should_receive(:info).with("Requesting POST <random uuid> /foo/bar {}")
|
174
174
|
@log.should_receive(:info).with("Completed <random uuid> in 10ms | 200 [http://my.com/foo/bar] | 11 bytes").once
|
175
175
|
@client.request(:post, @path, @params, @options)
|
176
176
|
end
|
@@ -530,27 +530,10 @@ describe RightScale::BalancedHttpClient do
|
|
530
530
|
end
|
531
531
|
|
532
532
|
context "when no exception" do
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
text.should == "/foo/bar"
|
538
|
-
end
|
539
|
-
end
|
540
|
-
|
541
|
-
context "and Log.level is :info with host" do
|
542
|
-
it "generates text containing host and path" do
|
543
|
-
text = @client.send(:log_text, @path, {:value => 123}, [], @url)
|
544
|
-
text.should == "[http://my.com/foo/bar]"
|
545
|
-
end
|
546
|
-
end
|
547
|
-
|
548
|
-
context "and Log.level is :debug" do
|
549
|
-
it "generates text containing containing host, path, and filtered parameters" do
|
550
|
-
@log.should_receive(:level).and_return(:debug)
|
551
|
-
text = @client.send(:log_text, @path, {:some => "data", :secret => "data"}, ["secret"], @url)
|
552
|
-
text.should == "[http://my.com/foo/bar {:some=>\"data\", :secret=>\"<hidden>\"}]"
|
553
|
-
end
|
533
|
+
it "generates text containing containing host, path, and filtered parameters" do
|
534
|
+
@log.should_receive(:level).and_return(:debug)
|
535
|
+
text = @client.send(:log_text, @path, {:some => "data", :secret => "data"}, ["secret"], @url)
|
536
|
+
text.should == "[http://my.com/foo/bar {:some=>\"data\", :secret=>\"<hidden>\"}]"
|
554
537
|
end
|
555
538
|
end
|
556
539
|
|
@@ -593,6 +576,13 @@ describe RightScale::BalancedHttpClient do
|
|
593
576
|
it "does not filter if params is not a hash" do
|
594
577
|
@client.send(:filter, "params", ["secret"]).should == "params"
|
595
578
|
end
|
579
|
+
|
580
|
+
it "also applies filters to any parameter named :payload or 'payload'" do
|
581
|
+
filter = ["secret", "very_secret"]
|
582
|
+
params = {:some => 1, :payload => {:secret => "data"}, "payload" => {:very_secret => "data"}, :secret => "data"}
|
583
|
+
@client.send(:filter, params, filter).should == {:some => 1, :payload => {:secret => "<hidden>"},
|
584
|
+
"payload" => { :very_secret => "<hidden>"}, :secret => "<hidden>"}
|
585
|
+
end
|
596
586
|
end
|
597
587
|
|
598
588
|
context :split do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: right_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lee Kirchhoff
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-08-
|
14
|
+
date: 2014-08-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: right_support
|