sensu-settings 3.4.0 → 4.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +0 -3
- data/lib/sensu/settings.rb +5 -1
- data/lib/sensu/settings/loader.rb +21 -5
- data/sensu-settings.gemspec +1 -1
- data/spec/assets/alternative/conf.d/loop +1 -0
- data/spec/assets/conf.d/alternative +1 -0
- data/spec/loader_spec.rb +12 -17
- data/spec/settings_spec.rb +7 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25d64e131590e9ad8c0422ffac256c7d58b96534
|
4
|
+
data.tar.gz: f8e4095b4f3697d0684387bc8d5d25d2f92451cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0c560de6157c8454bc3b640460fe8edf408c1b188f416d99784e1f0b013713bb6527b76cc17edd4448c9e05d311a928b7ac21e9e51c572a5b834b3d9b0e3c81
|
7
|
+
data.tar.gz: 180058d0339579b553fd5ae8aa9d4ff82cfc49106afaf7ebd01c571fc69ff6a321ab206adc38ad07f2231ecd5785c919ccad6f0becab9d99c4c5d976c3156fc0
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -2,9 +2,6 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/sensu/sensu-settings)
|
4
4
|
|
5
|
-
[](https://codeclimate.com/github/sensu/sensu-settings)
|
6
|
-
[](https://codeclimate.com/github/sensu/sensu-settings)
|
7
|
-
|
8
5
|
## Installation
|
9
6
|
|
10
7
|
Add this line to your application's Gemfile:
|
data/lib/sensu/settings.rb
CHANGED
@@ -6,16 +6,23 @@ require "socket"
|
|
6
6
|
module Sensu
|
7
7
|
module Settings
|
8
8
|
class Loader
|
9
|
+
class Error < RuntimeError; end
|
10
|
+
|
9
11
|
# @!attribute [r] warnings
|
10
12
|
# @return [Array] loader warnings.
|
11
13
|
attr_reader :warnings
|
12
14
|
|
15
|
+
# @!attribute [r] errors
|
16
|
+
# @return [Array] loader errors.
|
17
|
+
attr_reader :errors
|
18
|
+
|
13
19
|
# @!attribute [r] loaded_files
|
14
20
|
# @return [Array] loaded config files.
|
15
21
|
attr_reader :loaded_files
|
16
22
|
|
17
23
|
def initialize
|
18
24
|
@warnings = []
|
25
|
+
@errors = []
|
19
26
|
@settings = default_settings
|
20
27
|
@indifferent_access = false
|
21
28
|
@loaded_files = []
|
@@ -105,15 +112,13 @@ module Sensu
|
|
105
112
|
@indifferent_access = false
|
106
113
|
@loaded_files << file
|
107
114
|
rescue Sensu::JSON::ParseError => error
|
108
|
-
|
115
|
+
load_error("config file must be valid json", {
|
109
116
|
:file => file,
|
110
117
|
:error => error.to_s
|
111
118
|
})
|
112
|
-
warning("ignoring config file", :file => file)
|
113
119
|
end
|
114
120
|
else
|
115
|
-
|
116
|
-
warning("ignoring config file", :file => file)
|
121
|
+
load_error("config file does not exist or is not readable", :file => file)
|
117
122
|
end
|
118
123
|
end
|
119
124
|
|
@@ -145,7 +150,7 @@ module Sensu
|
|
145
150
|
# @return [Array] validation failures.
|
146
151
|
def validate
|
147
152
|
validator = Validator.new
|
148
|
-
validator.run(@settings, sensu_service_name)
|
153
|
+
@errors += validator.run(@settings, sensu_service_name)
|
149
154
|
end
|
150
155
|
|
151
156
|
private
|
@@ -367,6 +372,17 @@ module Sensu
|
|
367
372
|
:message => message
|
368
373
|
}.merge(data)
|
369
374
|
end
|
375
|
+
|
376
|
+
# Record a load error and raise a load error exception.
|
377
|
+
#
|
378
|
+
# @param message [String] load error message.
|
379
|
+
# @param data [Hash] load error context.
|
380
|
+
def load_error(message, data={})
|
381
|
+
@errors << {
|
382
|
+
:message => message
|
383
|
+
}.merge(data)
|
384
|
+
raise(Error, message)
|
385
|
+
end
|
370
386
|
end
|
371
387
|
end
|
372
388
|
end
|
data/sensu-settings.gemspec
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
../conf.d
|
@@ -0,0 +1 @@
|
|
1
|
+
../alternative/conf.d/
|
data/spec/loader_spec.rb
CHANGED
@@ -106,26 +106,21 @@ describe "Sensu::Settings::Loader" do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it "can attempt to load settings from a nonexistent file" do
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
expect(messages).to include("config file does not exist or is not readable")
|
116
|
-
expect(messages).to include("ignoring config file")
|
109
|
+
expect {
|
110
|
+
@loader.load_file("/tmp/bananaphone")
|
111
|
+
}.to raise_error(Sensu::Settings::Loader::Error)
|
112
|
+
expect(@loader.errors.length).to eq(1)
|
113
|
+
error = @loader.errors.first
|
114
|
+
expect(error[:message]).to include("config file does not exist or is not readable")
|
117
115
|
end
|
118
116
|
|
119
117
|
it "can attempt to load settings from a file with invalid JSON" do
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
expect(messages).to include("loading config file")
|
127
|
-
expect(messages).to include("config file must be valid json")
|
128
|
-
expect(messages).to include("ignoring config file")
|
118
|
+
expect {
|
119
|
+
@loader.load_file(File.join(@assets_dir, "invalid.json"))
|
120
|
+
}.to raise_error(Sensu::Settings::Loader::Error)
|
121
|
+
expect(@loader.errors.length).to eq(1)
|
122
|
+
error = @loader.errors.first
|
123
|
+
expect(error[:message]).to include("config file must be valid json")
|
129
124
|
end
|
130
125
|
|
131
126
|
it "can load settings from a utf-8 encoded file with a bom" do
|
data/spec/settings_spec.rb
CHANGED
@@ -49,4 +49,11 @@ describe "Sensu::Settings" do
|
|
49
49
|
expect(settings[:checks][:merger][:command]).to eq("echo -n merger")
|
50
50
|
expect(settings[:checks][:app_http_endpoint][:command]).to eq("check-http.rb -u https://localhost/ping -q pong")
|
51
51
|
end
|
52
|
+
|
53
|
+
it "can catch load errors" do
|
54
|
+
settings = Sensu::Settings.load(:config_file => "/tmp/bananaphone")
|
55
|
+
expect(settings.errors.length).to eq(1)
|
56
|
+
error = settings.errors.first
|
57
|
+
expect(error[:message]).to include("config file does not exist or is not readable")
|
58
|
+
end
|
52
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03
|
11
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-json
|
@@ -108,9 +108,11 @@ files:
|
|
108
108
|
- lib/sensu/settings/validators/subdue.rb
|
109
109
|
- lib/sensu/settings/validators/transport.rb
|
110
110
|
- sensu-settings.gemspec
|
111
|
+
- spec/assets/alternative/conf.d/loop
|
111
112
|
- spec/assets/alternative/conf.d/symlinked.json
|
112
113
|
- spec/assets/app/config/sensu/app_http_endpoint.json
|
113
114
|
- spec/assets/bom.json
|
115
|
+
- spec/assets/conf.d/alternative
|
114
116
|
- spec/assets/conf.d/merger.json
|
115
117
|
- spec/assets/conf.d/nested/file.json
|
116
118
|
- spec/assets/config.json
|
@@ -140,14 +142,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
142
|
version: '0'
|
141
143
|
requirements: []
|
142
144
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
145
|
+
rubygems_version: 2.6.3
|
144
146
|
signing_key:
|
145
147
|
specification_version: 4
|
146
148
|
summary: The Sensu settings library, loader and validator
|
147
149
|
test_files:
|
150
|
+
- spec/assets/alternative/conf.d/loop
|
148
151
|
- spec/assets/alternative/conf.d/symlinked.json
|
149
152
|
- spec/assets/app/config/sensu/app_http_endpoint.json
|
150
153
|
- spec/assets/bom.json
|
154
|
+
- spec/assets/conf.d/alternative
|
151
155
|
- spec/assets/conf.d/merger.json
|
152
156
|
- spec/assets/conf.d/nested/file.json
|
153
157
|
- spec/assets/config.json
|
@@ -157,4 +161,3 @@ test_files:
|
|
157
161
|
- spec/rules_spec.rb
|
158
162
|
- spec/settings_spec.rb
|
159
163
|
- spec/validator_spec.rb
|
160
|
-
has_rdoc:
|