sensu-settings 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sensu/settings.rb +17 -2
- data/lib/sensu/settings/loader.rb +1 -20
- data/sensu-settings.gemspec +1 -1
- data/spec/assets/app/config/sensu/app_http_endpoint.json +9 -0
- data/spec/loader_spec.rb +10 -12
- data/spec/settings_spec.rb +25 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 574e3cda48e7886857ddee4f8dd6b299304726cb
|
4
|
+
data.tar.gz: 6cb9b7a031ae185dda7ffc341d80ef6e5497ebd9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e5136184244c730101a4bb0dd859f4471c3cbe36761e17b0d0b5abba694b0a4c8dde879dd5ca15cea2d262d74eee0544c23bb595da3cf304a1b9456ce2cd263
|
7
|
+
data.tar.gz: ab0ee858e81fa3f116b3693a2dc2d616f1463df69a0633ce3c6317fad969584a39e3704a3ac49b32607d5435b398f804f77907c22e8ac38657014c9d1b01dbd6
|
data/lib/sensu/settings.rb
CHANGED
@@ -4,11 +4,26 @@ module Sensu
|
|
4
4
|
module Settings
|
5
5
|
# Load Sensu settings.
|
6
6
|
#
|
7
|
-
# @param
|
7
|
+
# @param [Hash] options
|
8
|
+
# @option options [String] :config_file to load.
|
9
|
+
# @option options [String] :config_dir to load.
|
10
|
+
# @option options [Array] :config_dirs to load.
|
8
11
|
# @return [Loader] a loaded instance of Loader.
|
9
12
|
def self.load(options={})
|
10
13
|
loader = Loader.new
|
11
|
-
loader.
|
14
|
+
loader.load_env
|
15
|
+
if options[:config_file]
|
16
|
+
loader.load_file(options[:config_file])
|
17
|
+
end
|
18
|
+
if options[:config_dir]
|
19
|
+
loader.load_directory(options[:config_dir])
|
20
|
+
end
|
21
|
+
if options[:config_dirs]
|
22
|
+
options[:config_dirs].each do |directory|
|
23
|
+
loader.load_directory(directory)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
loader.set_env!
|
12
27
|
loader
|
13
28
|
end
|
14
29
|
end
|
@@ -118,29 +118,10 @@ module Sensu
|
|
118
118
|
# Set Sensu settings related environment variables. This method
|
119
119
|
# currently sets SENSU_CONFIG_FILES, a colon delimited list of
|
120
120
|
# loaded config files.
|
121
|
-
def set_env
|
121
|
+
def set_env!
|
122
122
|
ENV["SENSU_CONFIG_FILES"] = @loaded_files.join(":")
|
123
123
|
end
|
124
124
|
|
125
|
-
# Load settings from the environment and the paths provided, set
|
126
|
-
# appropriate environment variables.
|
127
|
-
#
|
128
|
-
# @param [Hash] options
|
129
|
-
# @option options [String] :config_file to load.
|
130
|
-
# @option options [String] :config_dir to load.
|
131
|
-
# @return [Hash] loaded settings.
|
132
|
-
def load(options={})
|
133
|
-
load_env
|
134
|
-
if options[:config_file]
|
135
|
-
load_file(options[:config_file])
|
136
|
-
end
|
137
|
-
if options[:config_dir]
|
138
|
-
load_directory(options[:config_dir])
|
139
|
-
end
|
140
|
-
set_env
|
141
|
-
to_hash
|
142
|
-
end
|
143
|
-
|
144
125
|
# Validate the loaded settings.
|
145
126
|
#
|
146
127
|
# @return [Array] validation failures.
|
data/sensu-settings.gemspec
CHANGED
data/spec/loader_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe "Sensu::Settings::Loader" do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "can provide a loader API" do
|
15
|
-
@loader.should respond_to(:
|
15
|
+
@loader.should respond_to(:load_env, :load_file, :load_directory, :set_env!, :validate!)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "can provide indifferent access to settings" do
|
@@ -117,20 +117,17 @@ describe "Sensu::Settings::Loader" do
|
|
117
117
|
warning[:message].should eq("loading config files from directory")
|
118
118
|
end
|
119
119
|
|
120
|
-
it "can
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
settings[:checks][:merger][:command].should eq("echo -n merger")
|
126
|
-
settings[:checks][:merger][:subscribers].should eq(["foo", "bar"])
|
127
|
-
settings[:checks][:nested][:command].should eq("true")
|
120
|
+
it "can set environment variables for child processes" do
|
121
|
+
@loader.load_file(@config_file)
|
122
|
+
@loader.load_directory(@config_dir)
|
123
|
+
@loader.loaded_files.size.should eq(3)
|
124
|
+
@loader.set_env!
|
128
125
|
ENV["SENSU_CONFIG_FILES"].split(":").should eq(@loader.loaded_files)
|
129
|
-
ENV["RABBITMQ_URL"] = nil
|
130
126
|
end
|
131
127
|
|
132
128
|
it "can load settings and determine if certain definitions exist" do
|
133
|
-
@loader.
|
129
|
+
@loader.load_file(@config_file)
|
130
|
+
@loader.load_directory(@config_dir)
|
134
131
|
@loader.check_exists?("nonexistent").should be_false
|
135
132
|
@loader.check_exists?("tokens").should be_true
|
136
133
|
@loader.filter_exists?("nonexistent").should be_false
|
@@ -142,7 +139,8 @@ describe "Sensu::Settings::Loader" do
|
|
142
139
|
end
|
143
140
|
|
144
141
|
it "can load settings and provide setting category accessors" do
|
145
|
-
@loader.
|
142
|
+
@loader.load_file(@config_file)
|
143
|
+
@loader.load_directory(@config_dir)
|
146
144
|
@loader.checks.should be_kind_of(Array)
|
147
145
|
@loader.checks.should_not be_empty
|
148
146
|
check = @loader.checks.detect do |check|
|
data/spec/settings_spec.rb
CHANGED
@@ -4,10 +4,35 @@ require "sensu/settings"
|
|
4
4
|
describe "Sensu::Settings" do
|
5
5
|
include Helpers
|
6
6
|
|
7
|
+
before do
|
8
|
+
@assets_dir = File.join(File.dirname(__FILE__), "assets")
|
9
|
+
@config_file = File.join(@assets_dir, "config.json")
|
10
|
+
@config_dir = File.join(@assets_dir, "conf.d")
|
11
|
+
@app_dir = File.join(@assets_dir, "app")
|
12
|
+
end
|
13
|
+
|
7
14
|
it "can provide a loader" do
|
8
15
|
Sensu::Settings.should respond_to(:load)
|
9
16
|
Sensu::Settings.load.should be_an_instance_of(Sensu::Settings::Loader)
|
10
17
|
settings = Sensu::Settings.load
|
11
18
|
settings.should respond_to(:validate!)
|
12
19
|
end
|
20
|
+
|
21
|
+
it "can load settings from the environment, a file, and a directory" do
|
22
|
+
ENV["RABBITMQ_URL"] = "amqp://guest:guest@localhost:5672/"
|
23
|
+
settings = Sensu::Settings.load(:config_file => @config_file, :config_dir => @config_dir)
|
24
|
+
settings[:rabbitmq].should eq(ENV["RABBITMQ_URL"])
|
25
|
+
settings[:api][:port].should eq(4567)
|
26
|
+
settings[:checks][:merger][:command].should eq("echo -n merger")
|
27
|
+
settings[:checks][:merger][:subscribers].should eq(["foo", "bar"])
|
28
|
+
settings[:checks][:nested][:command].should eq("true")
|
29
|
+
ENV["SENSU_CONFIG_FILES"].split(":").should eq(settings.loaded_files)
|
30
|
+
ENV["RABBITMQ_URL"] = nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "can load settings from files in multiple directories" do
|
34
|
+
settings = Sensu::Settings.load(:config_dirs => [@config_dir, @app_dir])
|
35
|
+
settings[:checks][:merger][:command].should eq("echo -n merger")
|
36
|
+
settings[:checks][:app_http_endpoint][:command].should eq("check-http.rb -u https://localhost/ping -q pong")
|
37
|
+
end
|
13
38
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
@@ -108,6 +108,7 @@ 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/app/config/sensu/app_http_endpoint.json
|
111
112
|
- spec/assets/conf.d/merger.json
|
112
113
|
- spec/assets/conf.d/nested/file.json
|
113
114
|
- spec/assets/config.json
|
@@ -142,6 +143,7 @@ signing_key:
|
|
142
143
|
specification_version: 4
|
143
144
|
summary: The Sensu settings library, loader and validator
|
144
145
|
test_files:
|
146
|
+
- spec/assets/app/config/sensu/app_http_endpoint.json
|
145
147
|
- spec/assets/conf.d/merger.json
|
146
148
|
- spec/assets/conf.d/nested/file.json
|
147
149
|
- spec/assets/config.json
|