flapjack-diner 0.12 → 0.15
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/.travis.yml +1 -0
- data/README.md +4 -4
- data/lib/flapjack-diner.rb +25 -16
- data/lib/flapjack-diner/argument_validator.rb +3 -1
- data/lib/flapjack-diner/version.rb +1 -1
- data/spec/argument_validator_spec.rb +10 -0
- data/spec/flapjack-diner_spec.rb +32 -20
- metadata +2 -9
- data/.rbenv-version +0 -1
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -524,9 +524,9 @@ Returns a boolean value representing the success or otherwise of the creation of
|
|
524
524
|
Delete a scheduled maintenance period for a check on an entity:
|
525
525
|
|
526
526
|
```ruby
|
527
|
-
#
|
527
|
+
# start_time (Time object, required)
|
528
528
|
Flapjack::Diner.delete_scheduled_maintenance!('example.com', 'ping',
|
529
|
-
:
|
529
|
+
:start_time => Time.local(2012, 12, 01))
|
530
530
|
```
|
531
531
|
|
532
532
|
Returns a boolean value representing the success or otherwise of the deletion of the scheduled maintenance periods by the server.
|
@@ -536,9 +536,9 @@ Returns a boolean value representing the success or otherwise of the deletion of
|
|
536
536
|
Delete a scheduled maintenance period for all checks on some entities and specified checks on others.
|
537
537
|
|
538
538
|
```ruby
|
539
|
-
#
|
539
|
+
# start_time (Time object, required)
|
540
540
|
Flapjack::Diner.bulk_delete_scheduled_maintenance!(:check => {'example.com' => ['ping', 'ssh']},
|
541
|
-
:
|
541
|
+
:start_time => Time.local(2012, 12, 01))
|
542
542
|
```
|
543
543
|
|
544
544
|
Returns a boolean value representing the success or otherwise of the deletion of the scheduled maintenance periods by the server.
|
data/lib/flapjack-diner.rb
CHANGED
@@ -31,9 +31,8 @@ module Flapjack
|
|
31
31
|
|
32
32
|
def status(entity, options = {})
|
33
33
|
check = options.delete(:check)
|
34
|
-
|
35
|
-
|
36
|
-
perform_get('/status', args)
|
34
|
+
path = check.nil? ? "/status/#{escape(entity)}" : "/status/#{escape(entity)}/#{escape(check)}"
|
35
|
+
perform_get(path)
|
37
36
|
end
|
38
37
|
|
39
38
|
def bulk_status(options = {})
|
@@ -120,13 +119,13 @@ module Flapjack
|
|
120
119
|
|
121
120
|
def scheduled_maintenances(entity, options = {})
|
122
121
|
check = options.delete(:check)
|
123
|
-
args = options.merge( check ? {:check => {entity => check}} : {:entity => entity} )
|
124
122
|
|
125
|
-
|
123
|
+
validate_params(options) do
|
126
124
|
validate :query => [:start_time, :end_time], :as => :time
|
127
125
|
end
|
128
126
|
|
129
|
-
|
127
|
+
ec_path = entity_check_path(entity, check)
|
128
|
+
perform_get("/scheduled_maintenances/#{ec_path}", options)
|
130
129
|
end
|
131
130
|
|
132
131
|
def bulk_scheduled_maintenances(options = {})
|
@@ -139,13 +138,13 @@ module Flapjack
|
|
139
138
|
|
140
139
|
def unscheduled_maintenances(entity, options = {})
|
141
140
|
check = options.delete(:check)
|
142
|
-
args = options.merge( check ? {:check => {entity => check}} : {:entity => entity} )
|
143
141
|
|
144
|
-
|
142
|
+
validate_params(options) do
|
145
143
|
validate :query => [:start_time, :end_time], :as => :time
|
146
144
|
end
|
147
145
|
|
148
|
-
|
146
|
+
ec_path = entity_check_path(entity, check)
|
147
|
+
perform_get("/unscheduled_maintenances/#{ec_path}", options)
|
149
148
|
end
|
150
149
|
|
151
150
|
def bulk_unscheduled_maintenances(options = {})
|
@@ -158,13 +157,13 @@ module Flapjack
|
|
158
157
|
|
159
158
|
def outages(entity, options = {})
|
160
159
|
check = options.delete(:check)
|
161
|
-
args = options.merge( check ? {:check => {entity => check}} : {:entity => entity} )
|
162
160
|
|
163
|
-
|
161
|
+
validate_params(options) do
|
164
162
|
validate :query => [:start_time, :end_time], :as => :time
|
165
163
|
end
|
166
164
|
|
167
|
-
|
165
|
+
ec_path = entity_check_path(entity, check)
|
166
|
+
perform_get("/outages/#{ec_path}", options)
|
168
167
|
end
|
169
168
|
|
170
169
|
def bulk_outages(options = {})
|
@@ -177,13 +176,14 @@ module Flapjack
|
|
177
176
|
|
178
177
|
def downtime(entity, options = {})
|
179
178
|
check = options.delete(:check)
|
180
|
-
args = options.merge( check ? {:check => {entity => check}} : {:entity => entity} )
|
181
179
|
|
182
|
-
|
180
|
+
validate_params(options) do
|
183
181
|
validate :query => [:start_time, :end_time], :as => :time
|
184
182
|
end
|
185
183
|
|
186
|
-
|
184
|
+
ec_path = entity_check_path(entity, check)
|
185
|
+
|
186
|
+
perform_get("/downtime/#{ec_path}", options)
|
187
187
|
end
|
188
188
|
|
189
189
|
def bulk_downtime(options = {})
|
@@ -341,7 +341,8 @@ module Flapjack
|
|
341
341
|
response_body = response.body
|
342
342
|
response_start = response_body ? response_body[0..300] : nil
|
343
343
|
if logger
|
344
|
-
|
344
|
+
response_message = " #{response.message}" unless (response.message.nil? || response.message == "")
|
345
|
+
logger.info " Response Code: #{response.code}#{response_message}"
|
345
346
|
logger.info " Response Body: #{response_start}" if response_start
|
346
347
|
end
|
347
348
|
parsed_response = response.respond_to?(:parsed_response) ? response.parsed_response : nil
|
@@ -374,9 +375,17 @@ module Flapjack
|
|
374
375
|
raise ArgumentError.new("Entity and/or check arguments must be provided")
|
375
376
|
end
|
376
377
|
|
378
|
+
validate_params(query, &validation)
|
379
|
+
end
|
380
|
+
|
381
|
+
def validate_params(query = {}, &validation)
|
377
382
|
ArgumentValidator.new(query).instance_eval(&validation) if block_given?
|
378
383
|
end
|
379
384
|
|
385
|
+
def entity_check_path(entity, check)
|
386
|
+
check.nil? ? "#{escape(entity)}" : "#{escape(entity)}/#{escape(check)}"
|
387
|
+
end
|
388
|
+
|
380
389
|
# copied from Rack::Utils -- builds the query string for GETs
|
381
390
|
def build_nested_query(value, prefix = nil)
|
382
391
|
if value.respond_to?(:iso8601)
|
@@ -28,7 +28,9 @@ module Flapjack
|
|
28
28
|
def time(*elements)
|
29
29
|
elements.each do |element|
|
30
30
|
if target = @query[element]
|
31
|
-
|
31
|
+
next if target.respond_to?(:iso8601) || (target.is_a?(String) &&
|
32
|
+
(begin; Time.iso8601(target); true; rescue ArgumentError; false; end))
|
33
|
+
@errors << "'#{target}' should be a time object or ISO 8601-formatted string."
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
@@ -61,6 +61,16 @@ describe Flapjack::ArgumentValidator do
|
|
61
61
|
query[:end_time] = Date.today
|
62
62
|
lambda { subject.validate(:query => :end_time, :as => :time) }.should_not raise_exception(ArgumentError)
|
63
63
|
end
|
64
|
+
|
65
|
+
it 'handles ISO 8601 strings as query values' do
|
66
|
+
query[:end_time] = Time.now.iso8601
|
67
|
+
lambda { subject.validate(:query => :end_time, :as => :time) }.should_not raise_exception(ArgumentError)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'raises an exception when invalid time strings are provided' do
|
71
|
+
query[:end_time] = '2011-08-01T00:00'
|
72
|
+
lambda { subject.validate(:query => :end_time, :as => :time) }.should raise_exception(ArgumentError)
|
73
|
+
end
|
64
74
|
end
|
65
75
|
|
66
76
|
context 'integer via method missing' do
|
data/spec/flapjack-diner_spec.rb
CHANGED
@@ -68,6 +68,16 @@ describe Flapjack::Diner do
|
|
68
68
|
with(:query => {:entity => entity}).
|
69
69
|
to_return(:body => response)
|
70
70
|
|
71
|
+
result = Flapjack::Diner.bulk_status(:entity => entity)
|
72
|
+
req.should have_been_requested
|
73
|
+
result.should_not be_nil
|
74
|
+
result.should == response_body
|
75
|
+
end
|
76
|
+
|
77
|
+
it "returns a json list of check statuses for an entity, legacy" do
|
78
|
+
req = stub_request(:get, "http://#{server}/status/#{entity}").
|
79
|
+
to_return(:body => response)
|
80
|
+
|
71
81
|
result = Flapjack::Diner.status(entity)
|
72
82
|
req.should have_been_requested
|
73
83
|
result.should_not be_nil
|
@@ -90,6 +100,16 @@ describe Flapjack::Diner do
|
|
90
100
|
with(:query => {:check => {entity => check}}).
|
91
101
|
to_return(:body => response)
|
92
102
|
|
103
|
+
result = Flapjack::Diner.bulk_status(:check => {entity => check})
|
104
|
+
req.should have_been_requested
|
105
|
+
result.should_not be_nil
|
106
|
+
result.should == response_body
|
107
|
+
end
|
108
|
+
|
109
|
+
it "returns a single check status for an entity, legacy" do
|
110
|
+
req = stub_request(:get, "http://#{server}/status/#{entity}/#{check}").
|
111
|
+
to_return(:body => response)
|
112
|
+
|
93
113
|
result = Flapjack::Diner.status(entity, :check => check)
|
94
114
|
req.should have_been_requested
|
95
115
|
result.should_not be_nil
|
@@ -97,8 +117,7 @@ describe Flapjack::Diner do
|
|
97
117
|
end
|
98
118
|
|
99
119
|
it "returns a list of scheduled maintenance periods for all checks on an entity" do
|
100
|
-
req = stub_request(:get, "http://#{server}/scheduled_maintenances").
|
101
|
-
with(:query => {:entity => entity}).
|
120
|
+
req = stub_request(:get, "http://#{server}/scheduled_maintenances/#{entity}").
|
102
121
|
to_return(:body => response)
|
103
122
|
|
104
123
|
result = Flapjack::Diner.scheduled_maintenances(entity)
|
@@ -108,8 +127,7 @@ describe Flapjack::Diner do
|
|
108
127
|
end
|
109
128
|
|
110
129
|
it "returns a list of scheduled maintenance periods for a check on an entity" do
|
111
|
-
req = stub_request(:get, "http://#{server}/scheduled_maintenances").
|
112
|
-
with(:query => {:check => {entity => check}}).
|
130
|
+
req = stub_request(:get, "http://#{server}/scheduled_maintenances/#{entity}/#{check}").
|
113
131
|
to_return(:body => response)
|
114
132
|
|
115
133
|
result = Flapjack::Diner.scheduled_maintenances(entity, :check => check)
|
@@ -130,8 +148,7 @@ describe Flapjack::Diner do
|
|
130
148
|
end
|
131
149
|
|
132
150
|
it "returns a list of unscheduled maintenance periods for all checks on an entity" do
|
133
|
-
req = stub_request(:get, "http://#{server}/unscheduled_maintenances").
|
134
|
-
with(:query => {:entity => entity}).
|
151
|
+
req = stub_request(:get, "http://#{server}/unscheduled_maintenances/#{entity}").
|
135
152
|
to_return(:body => response)
|
136
153
|
|
137
154
|
result = Flapjack::Diner.unscheduled_maintenances(entity)
|
@@ -141,8 +158,7 @@ describe Flapjack::Diner do
|
|
141
158
|
end
|
142
159
|
|
143
160
|
it "returns a list of unscheduled maintenance periods for a check on an entity" do
|
144
|
-
req = stub_request(:get, "http://#{server}/unscheduled_maintenances").
|
145
|
-
with(:query => {:check => {entity => check}}).
|
161
|
+
req = stub_request(:get, "http://#{server}/unscheduled_maintenances/#{entity}/#{check}").
|
146
162
|
to_return(:body => response)
|
147
163
|
|
148
164
|
result = Flapjack::Diner.unscheduled_maintenances(entity, :check => check)
|
@@ -163,8 +179,7 @@ describe Flapjack::Diner do
|
|
163
179
|
end
|
164
180
|
|
165
181
|
it "returns a list of outages for all checks on an entity" do
|
166
|
-
req = stub_request(:get, "http://#{server}/outages").
|
167
|
-
with(:query => {:entity => entity}).
|
182
|
+
req = stub_request(:get, "http://#{server}/outages/#{entity}").
|
168
183
|
to_return(:body => response)
|
169
184
|
|
170
185
|
result = Flapjack::Diner.outages(entity)
|
@@ -174,8 +189,7 @@ describe Flapjack::Diner do
|
|
174
189
|
end
|
175
190
|
|
176
191
|
it "returns a list of outages for a check on an entity" do
|
177
|
-
req = stub_request(:get, "http://#{server}/outages").
|
178
|
-
with(:query => {:check => {entity => check}}).
|
192
|
+
req = stub_request(:get, "http://#{server}/outages/#{entity}/#{check}").
|
179
193
|
to_return(:body => response)
|
180
194
|
|
181
195
|
result = Flapjack::Diner.outages(entity, :check => check)
|
@@ -196,8 +210,7 @@ describe Flapjack::Diner do
|
|
196
210
|
end
|
197
211
|
|
198
212
|
it "returns a list of downtimes for all checks on an entity" do
|
199
|
-
req = stub_request(:get, "http://#{server}/downtime").
|
200
|
-
with(:query => {:entity => entity}).
|
213
|
+
req = stub_request(:get, "http://#{server}/downtime/#{entity}").
|
201
214
|
to_return(:body => response)
|
202
215
|
|
203
216
|
result = Flapjack::Diner.downtime(entity)
|
@@ -210,8 +223,8 @@ describe Flapjack::Diner do
|
|
210
223
|
start = Time.iso8601('2011-08-01T00:00:00+10:00')
|
211
224
|
finish = Time.iso8601('2011-08-31T00:00:00+10:00')
|
212
225
|
|
213
|
-
req = stub_request(:get, "http://#{server}/downtime").
|
214
|
-
with(:query => {:
|
226
|
+
req = stub_request(:get, "http://#{server}/downtime/#{entity}").
|
227
|
+
with(:query => {:start_time => start.iso8601, :end_time => finish.iso8601}).
|
215
228
|
to_return(:body => response)
|
216
229
|
|
217
230
|
result = Flapjack::Diner.downtime(entity, :start_time => start, :end_time => finish)
|
@@ -221,8 +234,7 @@ describe Flapjack::Diner do
|
|
221
234
|
end
|
222
235
|
|
223
236
|
it "returns a list of downtimes for a check on an entity" do
|
224
|
-
req = stub_request(:get, "http://#{server}/downtime").
|
225
|
-
with(:query => {:check => {entity => check}}).
|
237
|
+
req = stub_request(:get, "http://#{server}/downtime/#{entity}/#{check}").
|
226
238
|
to_return(:body => response)
|
227
239
|
|
228
240
|
result = Flapjack::Diner.downtime(entity, :check => check)
|
@@ -774,7 +786,7 @@ describe Flapjack::Diner do
|
|
774
786
|
timezone_data = {:timezone => "Australia/Perth"}
|
775
787
|
|
776
788
|
req = stub_request(:put, "http://#{server}/contacts/#{contact_id}/timezone").with(
|
777
|
-
:body => timezone_data).to_return(:body => timezone_data.to_json, :status => [200, '
|
789
|
+
:body => timezone_data).to_return(:body => timezone_data.to_json, :status => [200, 'OK'])
|
778
790
|
|
779
791
|
logger.should_receive(:info).
|
780
792
|
with("PUT http://#{server}/contacts/#{contact_id}/timezone\n Params: #{timezone_data.inspect}")
|
@@ -860,7 +872,7 @@ describe Flapjack::Diner do
|
|
860
872
|
|
861
873
|
it "raises an exception if a time argument is provided with the wrong data type" do
|
862
874
|
start_str = '2011-08-01T00:00:00+10:00'
|
863
|
-
finish_str = '
|
875
|
+
finish_str = 'yesterday'
|
864
876
|
|
865
877
|
start = Time.iso8601(start_str)
|
866
878
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flapjack-diner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.15'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -131,7 +131,6 @@ extensions: []
|
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
133
|
- .gitignore
|
134
|
-
- .rbenv-version
|
135
134
|
- .rspec
|
136
135
|
- .travis.yml
|
137
136
|
- Gemfile
|
@@ -157,18 +156,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
157
156
|
- - ! '>='
|
158
157
|
- !ruby/object:Gem::Version
|
159
158
|
version: '0'
|
160
|
-
segments:
|
161
|
-
- 0
|
162
|
-
hash: 2019754927088119775
|
163
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
160
|
none: false
|
165
161
|
requirements:
|
166
162
|
- - ! '>='
|
167
163
|
- !ruby/object:Gem::Version
|
168
164
|
version: '0'
|
169
|
-
segments:
|
170
|
-
- 0
|
171
|
-
hash: 2019754927088119775
|
172
165
|
requirements: []
|
173
166
|
rubyforge_project:
|
174
167
|
rubygems_version: 1.8.23
|
data/.rbenv-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.9.3-p125
|