flapjack-diner 1.4.0 → 2.0.0.a4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +1 -1
- data/README.md +620 -413
- data/flapjack-diner.gemspec +1 -1
- data/lib/flapjack-diner/argument_validator.rb +77 -7
- data/lib/flapjack-diner/configuration.rb +409 -0
- data/lib/flapjack-diner/index_range.rb +42 -0
- data/lib/flapjack-diner/log_formatter.rb +22 -0
- data/lib/flapjack-diner/query.rb +114 -0
- data/lib/flapjack-diner/relationships.rb +180 -0
- data/lib/flapjack-diner/request.rb +280 -0
- data/lib/flapjack-diner/resources.rb +64 -0
- data/lib/flapjack-diner/response.rb +91 -0
- data/lib/flapjack-diner/tools.rb +47 -251
- data/lib/flapjack-diner/utility.rb +16 -0
- data/lib/flapjack-diner/version.rb +1 -1
- data/lib/flapjack-diner.rb +54 -20
- data/spec/argument_validator_spec.rb +87 -28
- data/spec/flapjack-diner_spec.rb +42 -64
- data/spec/relationships_spec.rb +211 -0
- data/spec/resources/checks_spec.rb +219 -79
- data/spec/resources/contacts_spec.rb +179 -151
- data/spec/resources/events_spec.rb +208 -0
- data/spec/resources/maintenance_periods_spec.rb +177 -565
- data/spec/resources/media_spec.rb +157 -171
- data/spec/resources/metrics_spec.rb +45 -0
- data/spec/resources/rules_spec.rb +278 -0
- data/spec/resources/states_spec.rb +93 -0
- data/spec/resources/statistics_spec.rb +53 -0
- data/spec/resources/tags_spec.rb +243 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/support/fixture_data.rb +541 -0
- metadata +33 -31
- data/.rubocop.yml +0 -21
- data/.rubocop_todo.yml +0 -135
- data/lib/flapjack-diner/resources/checks.rb +0 -64
- data/lib/flapjack-diner/resources/contacts.rb +0 -70
- data/lib/flapjack-diner/resources/entities.rb +0 -68
- data/lib/flapjack-diner/resources/maintenance_periods.rb +0 -82
- data/lib/flapjack-diner/resources/media.rb +0 -61
- data/lib/flapjack-diner/resources/notification_rules.rb +0 -66
- data/lib/flapjack-diner/resources/notifications.rb +0 -28
- data/lib/flapjack-diner/resources/pagerduty_credentials.rb +0 -59
- data/lib/flapjack-diner/resources/reports.rb +0 -33
- data/spec/pacts/flapjack-diner-flapjack.json +0 -4515
- data/spec/resources/entities_spec.rb +0 -181
- data/spec/resources/notification_rules_spec.rb +0 -341
- data/spec/resources/notifications_spec.rb +0 -208
- data/spec/resources/pagerduty_credentials_spec.rb +0 -237
- data/spec/resources/reports_spec.rb +0 -255
data/.rubocop.yml
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
inherit_from: .rubocop_todo.yml
|
2
|
-
|
3
|
-
AllCops:
|
4
|
-
Exclude:
|
5
|
-
- 'lib/flapjack-diner.rb'
|
6
|
-
|
7
|
-
# doesn't handle multi-file state
|
8
|
-
Documentation:
|
9
|
-
Enabled: false
|
10
|
-
|
11
|
-
Style/HashSyntax:
|
12
|
-
EnforcedStyle: hash_rockets
|
13
|
-
|
14
|
-
Style/SignalException:
|
15
|
-
EnforcedStyle: only_raise
|
16
|
-
|
17
|
-
Style/SpaceInsideBlockBraces:
|
18
|
-
SpaceBeforeBlockParameters: false
|
19
|
-
|
20
|
-
Style/SpaceInsideHashLiteralBraces:
|
21
|
-
EnforcedStyle: no_space
|
data/.rubocop_todo.yml
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
# This configuration was generated by `rubocop --auto-gen-config`.
|
2
|
-
# The point is for the user to remove these configuration records
|
3
|
-
# one by one as the offences are removed from the code base.
|
4
|
-
|
5
|
-
# AccessorMethodName:
|
6
|
-
# Enabled: false
|
7
|
-
|
8
|
-
# AlignArray:
|
9
|
-
# Enabled: false
|
10
|
-
|
11
|
-
# AlignHash:
|
12
|
-
# Enabled: false
|
13
|
-
|
14
|
-
# AlignParameters:
|
15
|
-
# Enabled: false
|
16
|
-
|
17
|
-
# AndOr:
|
18
|
-
# Enabled: false
|
19
|
-
|
20
|
-
# AssignmentInCondition:
|
21
|
-
# Enabled: false
|
22
|
-
|
23
|
-
# BlockAlignment:
|
24
|
-
# Enabled: false
|
25
|
-
|
26
|
-
# BlockNesting:
|
27
|
-
# Max: 4
|
28
|
-
|
29
|
-
# Blocks:
|
30
|
-
# Enabled: false
|
31
|
-
|
32
|
-
# BracesAroundHashParameters:
|
33
|
-
# Enabled: false
|
34
|
-
|
35
|
-
# CaseIndentation:
|
36
|
-
# Enabled: false
|
37
|
-
|
38
|
-
# ClassLength:
|
39
|
-
# Max: 221
|
40
|
-
|
41
|
-
# CollectionMethods:
|
42
|
-
# Enabled: false
|
43
|
-
|
44
|
-
# CommentAnnotation:
|
45
|
-
# Enabled: false
|
46
|
-
|
47
|
-
# CyclomaticComplexity:
|
48
|
-
# Max: 32
|
49
|
-
|
50
|
-
# DotPosition:
|
51
|
-
# Enabled: false
|
52
|
-
|
53
|
-
# EmptyLines:
|
54
|
-
# Enabled: false
|
55
|
-
|
56
|
-
# EmptyLinesAroundBody:
|
57
|
-
# Enabled: false
|
58
|
-
|
59
|
-
# EndAlignment:
|
60
|
-
# Enabled: false
|
61
|
-
|
62
|
-
# FavorUnlessOverNegatedIf:
|
63
|
-
# Enabled: false
|
64
|
-
|
65
|
-
# FinalNewline:
|
66
|
-
# Enabled: false
|
67
|
-
|
68
|
-
# HashMethods:
|
69
|
-
# Enabled: false
|
70
|
-
|
71
|
-
# IfUnlessModifier:
|
72
|
-
# Enabled: false
|
73
|
-
|
74
|
-
# IndentationWidth:
|
75
|
-
# Enabled: false
|
76
|
-
|
77
|
-
# LineLength:
|
78
|
-
# Max: 120
|
79
|
-
|
80
|
-
# MethodCallParentheses:
|
81
|
-
# Enabled: false
|
82
|
-
|
83
|
-
# MethodLength:
|
84
|
-
# Max: 95
|
85
|
-
|
86
|
-
# MultilineBlockChain:
|
87
|
-
# Enabled: false
|
88
|
-
|
89
|
-
# ParenthesesAroundCondition:
|
90
|
-
# Enabled: false
|
91
|
-
|
92
|
-
# PredicateName:
|
93
|
-
# Enabled: false
|
94
|
-
|
95
|
-
# RaiseArgs:
|
96
|
-
# Enabled: false
|
97
|
-
|
98
|
-
# RedundantSelf:
|
99
|
-
# Enabled: false
|
100
|
-
|
101
|
-
# RescueException:
|
102
|
-
# Enabled: false
|
103
|
-
|
104
|
-
# Semicolon:
|
105
|
-
# Enabled: false
|
106
|
-
|
107
|
-
# ShadowingOuterLocalVariable:
|
108
|
-
# Enabled: false
|
109
|
-
|
110
|
-
# SpaceAfterNot:
|
111
|
-
# Enabled: false
|
112
|
-
|
113
|
-
# SpaceAroundOperators:
|
114
|
-
# Enabled: false
|
115
|
-
|
116
|
-
# SpaceInsideHashLiteralBraces:
|
117
|
-
# Enabled: false
|
118
|
-
|
119
|
-
# SpaceInsideParens:
|
120
|
-
# Enabled: false
|
121
|
-
|
122
|
-
# SpecialGlobalVars:
|
123
|
-
# Enabled: false
|
124
|
-
|
125
|
-
# StringLiterals:
|
126
|
-
# Enabled: false
|
127
|
-
|
128
|
-
# TrivialAccessors:
|
129
|
-
# Enabled: false
|
130
|
-
|
131
|
-
# UselessAssignment:
|
132
|
-
# Enabled: false
|
133
|
-
|
134
|
-
# WordArray:
|
135
|
-
# Enabled: false
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Checks
|
12
|
-
def create_checks(*args)
|
13
|
-
data = unwrap_create_data(*args)
|
14
|
-
validate_params(data) do
|
15
|
-
validate :query => :entity_id, :as => [:required, :string]
|
16
|
-
validate :query => :name, :as => [:required, :string]
|
17
|
-
validate :query => :tags, :as => :array_of_strings
|
18
|
-
end
|
19
|
-
perform_post('/checks', nil, :checks => data)
|
20
|
-
end
|
21
|
-
|
22
|
-
def checks(*ids)
|
23
|
-
perform_get('checks', '/checks', ids)
|
24
|
-
end
|
25
|
-
|
26
|
-
def checks_matching(name_re)
|
27
|
-
raise "Must be a regexp: #{name_re.inspect}" unless
|
28
|
-
name_re.is_a?(Regexp)
|
29
|
-
checks.reject {|e| name_re.match(e[:name]).nil? }
|
30
|
-
end
|
31
|
-
|
32
|
-
def update_checks(*args)
|
33
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
34
|
-
raise "'update_checks' requires at least one check id " \
|
35
|
-
'parameter' if ids.nil? || ids.empty?
|
36
|
-
validate_params(params) do
|
37
|
-
validate :query => :enabled, :as => :boolean
|
38
|
-
validate :query => :tags, :as => :array_of_strings
|
39
|
-
end
|
40
|
-
perform_patch("/checks/#{escaped_ids(ids)}", nil,
|
41
|
-
update_checks_ops(params))
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def update_checks_ops(params)
|
47
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
48
|
-
case k
|
49
|
-
when :enabled
|
50
|
-
memo << patch_replace('checks', k, v)
|
51
|
-
when :add_tag
|
52
|
-
memo << patch_add('checks', 'tags', v)
|
53
|
-
when :remove_tag
|
54
|
-
memo << patch_remove('checks', 'tags', v)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
raise "'update_checks' did not find any valid update " \
|
58
|
-
'fields' if ops.empty?
|
59
|
-
ops
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Contacts
|
12
|
-
def create_contacts(*args)
|
13
|
-
data = unwrap_create_data(*args)
|
14
|
-
validate_params(data) do
|
15
|
-
validate :query => [:first_name, :last_name, :email],
|
16
|
-
:as => [:required, :string]
|
17
|
-
validate :query => :timezone, :as => :string
|
18
|
-
validate :query => :tags, :as => :array_of_strings
|
19
|
-
end
|
20
|
-
perform_post('/contacts', nil, :contacts => data)
|
21
|
-
end
|
22
|
-
|
23
|
-
def contacts(*ids)
|
24
|
-
perform_get('contacts', '/contacts', ids)
|
25
|
-
end
|
26
|
-
|
27
|
-
def update_contacts(*args)
|
28
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
29
|
-
raise "'update_contacts' requires at least one contact id " \
|
30
|
-
'parameter' if ids.nil? || ids.empty?
|
31
|
-
validate_params(params) do
|
32
|
-
validate :query => [:first_name, :last_name,
|
33
|
-
:email, :timezone], :as => :string
|
34
|
-
validate :query => :tags, :as => :array_of_strings
|
35
|
-
end
|
36
|
-
perform_patch("/contacts/#{escaped_ids(ids)}", nil,
|
37
|
-
update_contacts_ops(params))
|
38
|
-
end
|
39
|
-
|
40
|
-
def delete_contacts(*ids)
|
41
|
-
raise "'delete_contacts' requires at least one contact id " \
|
42
|
-
'parameter' if ids.nil? || ids.empty?
|
43
|
-
perform_delete('/contacts', ids)
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
def update_contacts_ops(params)
|
49
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
50
|
-
case k
|
51
|
-
when :add_entity
|
52
|
-
memo << patch_add('contacts', 'entities', v)
|
53
|
-
when :remove_entity
|
54
|
-
memo << patch_remove('contacts', 'entities', v)
|
55
|
-
when :add_notification_rule
|
56
|
-
memo << patch_add('contacts', 'notification_rules', v)
|
57
|
-
when :remove_notification_rule
|
58
|
-
memo << patch_remove('contacts', 'notification_rules', v)
|
59
|
-
when :first_name, :last_name, :email, :timezone
|
60
|
-
memo << patch_replace('contacts', k, v)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
raise "'update_contacts' did not find any valid update " \
|
64
|
-
'fields' if ops.empty?
|
65
|
-
ops
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Entities
|
12
|
-
def create_entities(*args)
|
13
|
-
data = unwrap_create_data(*args)
|
14
|
-
validate_params(data) do
|
15
|
-
validate :query => :id, :as => [:required, :string]
|
16
|
-
validate :query => :name, :as => :string
|
17
|
-
validate :query => :tags, :as => :array_of_strings
|
18
|
-
end
|
19
|
-
perform_post('/entities', nil, :entities => data)
|
20
|
-
end
|
21
|
-
|
22
|
-
def entities(*ids)
|
23
|
-
perform_get('entities', '/entities', ids)
|
24
|
-
end
|
25
|
-
|
26
|
-
def entities_matching(name_re)
|
27
|
-
raise "Must be a regexp: #{name_re.inspect}" unless
|
28
|
-
name_re.is_a?(Regexp)
|
29
|
-
entities.reject {|e| name_re.match(e[:name]).nil? }
|
30
|
-
end
|
31
|
-
|
32
|
-
def update_entities(*args)
|
33
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
34
|
-
raise "'update_entities' requires at least one entity id " \
|
35
|
-
' parameter' if ids.nil? || ids.empty?
|
36
|
-
validate_params(params) do
|
37
|
-
validate :query => :name, :as => :string
|
38
|
-
validate :query => :tags, :as => :array_of_strings
|
39
|
-
end
|
40
|
-
perform_patch("/entities/#{escaped_ids(ids)}", nil,
|
41
|
-
update_entities_ops(params))
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def update_entities_ops(params)
|
47
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
48
|
-
case k
|
49
|
-
when :name
|
50
|
-
memo << patch_replace('entities', k, v)
|
51
|
-
when :add_contact
|
52
|
-
memo << patch_add('entities', 'contacts', v)
|
53
|
-
when :remove_contact
|
54
|
-
memo << patch_remove('entities', 'contacts', v)
|
55
|
-
when :add_tag
|
56
|
-
memo << patch_add('entities', 'tags', v)
|
57
|
-
when :remove_tag
|
58
|
-
memo << patch_remove('entities', 'tags', v)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
raise "'update_entities' did not find any valid update " \
|
62
|
-
'fields' if ops.empty?
|
63
|
-
ops
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module MaintenancePeriods
|
12
|
-
%w(entities checks).each do |data_type|
|
13
|
-
define_method("create_scheduled_maintenances_#{data_type}") do |*args|
|
14
|
-
ids, data = unwrap_ids(*args), unwrap_create_data(*args)
|
15
|
-
if ids.nil? || ids.empty?
|
16
|
-
raise "'create_scheduled_maintenances_#{data_type}' requires " \
|
17
|
-
"at least one #{data_type} id parameter"
|
18
|
-
end
|
19
|
-
validate_params(data) do
|
20
|
-
validate :query => :start_time, :as => [:required, :time]
|
21
|
-
validate :query => :duration, :as => [:required, :integer]
|
22
|
-
validate :query => :summary, :as => :string
|
23
|
-
end
|
24
|
-
perform_post("/scheduled_maintenances/#{data_type}", ids,
|
25
|
-
:scheduled_maintenances => data)
|
26
|
-
end
|
27
|
-
|
28
|
-
define_method("create_unscheduled_maintenances_#{data_type}") do |*a|
|
29
|
-
ids, data = unwrap_ids(*a), unwrap_create_data(*a)
|
30
|
-
if ids.nil? || ids.empty?
|
31
|
-
raise "'create_unscheduled_maintenances_#{data_type}' requires " \
|
32
|
-
"at least one #{data_type} id parameter"
|
33
|
-
end
|
34
|
-
validate_params(data) do
|
35
|
-
validate :query => :duration, :as => [:required, :integer]
|
36
|
-
validate :query => :summary, :as => :string
|
37
|
-
end
|
38
|
-
perform_post("/unscheduled_maintenances/#{data_type}", ids,
|
39
|
-
:unscheduled_maintenances => data)
|
40
|
-
end
|
41
|
-
|
42
|
-
define_method("update_unscheduled_maintenances_#{data_type}") do |*a|
|
43
|
-
ids, params = unwrap_ids(*a), unwrap_params(*a)
|
44
|
-
if ids.nil? || ids.empty?
|
45
|
-
raise "'update_unscheduled_maintenances_#{data_type}' requires " \
|
46
|
-
"at least one #{data_type} id parameter"
|
47
|
-
end
|
48
|
-
validate_params(params) do
|
49
|
-
validate :query => :end_time, :as => :time
|
50
|
-
end
|
51
|
-
ops = update_unscheduled_maintenances_ops(data_type, params)
|
52
|
-
perform_patch("/unscheduled_maintenances/#{data_type}", ids, ops)
|
53
|
-
end
|
54
|
-
|
55
|
-
define_method("delete_scheduled_maintenances_#{data_type}") do |*args|
|
56
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
57
|
-
if ids.nil? || ids.empty?
|
58
|
-
raise "'delete_scheduled_maintenances_#{data_type}' requires " \
|
59
|
-
"at least one #{data_type} id parameter"
|
60
|
-
end
|
61
|
-
validate_params(params) do
|
62
|
-
validate :query => :start_time, :as => [:required, :time]
|
63
|
-
end
|
64
|
-
perform_delete("/scheduled_maintenances/#{data_type}", ids, params)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
def update_unscheduled_maintenances_ops(data_type, params)
|
71
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
72
|
-
next unless :end_time.eql?(k)
|
73
|
-
memo << patch_replace('unscheduled_maintenances', k, v)
|
74
|
-
end
|
75
|
-
raise "'update_unscheduled_maintenances_#{data_type}' did not " \
|
76
|
-
'find any valid update fields' if ops.empty?
|
77
|
-
ops
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Media
|
12
|
-
def create_contact_media(*args)
|
13
|
-
ids, data = unwrap_ids(*args), unwrap_create_data(*args)
|
14
|
-
raise "'create_contact_media' requires at least one contact id " \
|
15
|
-
'parameter' if ids.nil? || ids.empty?
|
16
|
-
validate_params(data) do
|
17
|
-
validate :query => [:type, :address], :as => [:required, :string]
|
18
|
-
validate :query => [:interval, :rollup_threshold],
|
19
|
-
:as => [:required, :integer]
|
20
|
-
end
|
21
|
-
perform_post("/contacts/#{escaped_ids(ids)}/media", nil,
|
22
|
-
:media => data)
|
23
|
-
end
|
24
|
-
|
25
|
-
def media(*ids)
|
26
|
-
perform_get('media', '/media', ids)
|
27
|
-
end
|
28
|
-
|
29
|
-
def update_media(*args)
|
30
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
31
|
-
raise "'update_media' requires at least one media id " \
|
32
|
-
'parameter' if ids.nil? || ids.empty?
|
33
|
-
validate_params(params) do
|
34
|
-
validate :query => :address, :as => :string
|
35
|
-
validate :query => [:interval, :rollup_threshold], :as => :integer
|
36
|
-
end
|
37
|
-
perform_patch("/media/#{escaped_ids(ids)}", nil,
|
38
|
-
update_media_ops(params))
|
39
|
-
end
|
40
|
-
|
41
|
-
def delete_media(*ids)
|
42
|
-
raise "'delete_media' requires at least one media id " \
|
43
|
-
'parameter' if ids.nil? || ids.empty?
|
44
|
-
perform_delete('/media', ids)
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def update_media_ops(params)
|
50
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
51
|
-
next unless [:address, :interval, :rollup_threshold].include?(k)
|
52
|
-
memo << patch_replace('media', k, v)
|
53
|
-
end
|
54
|
-
raise "'update_media' did not find any valid update " \
|
55
|
-
'fields' if ops.empty?
|
56
|
-
ops
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module NotificationRules
|
12
|
-
def create_contact_notification_rules(*args)
|
13
|
-
ids, data = unwrap_ids(*args), unwrap_create_data(*args)
|
14
|
-
raise "'create_contact_notification_rules' requires at least one " \
|
15
|
-
'contact id parameter' if ids.nil? || ids.empty?
|
16
|
-
validate_params(data) do
|
17
|
-
validate :query => STRING_PARAMS, :as => :array_of_strings
|
18
|
-
validate :query => BOOLEAN_PARAMS, :as => :boolean
|
19
|
-
end
|
20
|
-
perform_post("/contacts/#{escaped_ids(ids)}/notification_rules",
|
21
|
-
nil, :notification_rules => data)
|
22
|
-
end
|
23
|
-
|
24
|
-
def notification_rules(*ids)
|
25
|
-
perform_get('notification_rules', '/notification_rules', ids)
|
26
|
-
end
|
27
|
-
|
28
|
-
def update_notification_rules(*args)
|
29
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
30
|
-
raise "'update_notification_rules' requires at least one " \
|
31
|
-
'notification rule id parameter' if ids.nil? || ids.empty?
|
32
|
-
validate_params(params) do
|
33
|
-
validate :query => STRING_PARAMS, :as => :array_of_strings
|
34
|
-
validate :query => BOOLEAN_PARAMS, :as => :boolean
|
35
|
-
end
|
36
|
-
perform_patch("/notification_rules/#{escaped_ids(ids)}", nil,
|
37
|
-
update_notification_rules_ops(params))
|
38
|
-
end
|
39
|
-
|
40
|
-
def delete_notification_rules(*ids)
|
41
|
-
raise "'delete_notification_rules' requires at least one " \
|
42
|
-
'notification rule id parameter' if ids.nil? || ids.empty?
|
43
|
-
perform_delete('/notification_rules', ids)
|
44
|
-
end
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
STRING_PARAMS = [:entities, :regex_entities, :tags, :regex_tags,
|
49
|
-
:unknown_media, :warning_media, :critical_media]
|
50
|
-
BOOLEAN_PARAMS = [:unknown_blackhole, :warning_blackhole,
|
51
|
-
:critical_blackhole]
|
52
|
-
OTHER_PARAMS = [:time_restrictions]
|
53
|
-
|
54
|
-
def update_notification_rules_ops(params)
|
55
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
56
|
-
next unless (STRING_PARAMS + BOOLEAN_PARAMS + OTHER_PARAMS).include?(k)
|
57
|
-
memo << patch_replace('notification_rules', k, v)
|
58
|
-
end
|
59
|
-
raise "'update_notification_rules' did not find any valid update " \
|
60
|
-
'fields' if ops.empty?
|
61
|
-
ops
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Notifications
|
12
|
-
%w(entities checks).each do |data_type|
|
13
|
-
define_method("create_test_notifications_#{data_type}") do |*args|
|
14
|
-
ids, data = unwrap_ids(*args), unwrap_create_data(*args)
|
15
|
-
raise "'create_test_notifications_#{data_type}' requires at " \
|
16
|
-
"least one #{data_type} id parameter" if ids.nil? || ids.empty?
|
17
|
-
raise "No notification data provided" if data.nil?
|
18
|
-
validate_params(data) do
|
19
|
-
validate :query => :summary, :as => :string
|
20
|
-
end
|
21
|
-
perform_post("/test_notifications/#{data_type}", ids,
|
22
|
-
:test_notifications => data)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module PagerdutyCredentials
|
12
|
-
def create_contact_pagerduty_credentials(*args)
|
13
|
-
ids, data = unwrap_ids(*args), unwrap_create_data(*args)
|
14
|
-
raise "'create_contact_pagerduty_credentials' requires at least " \
|
15
|
-
'one contact id parameter' if ids.nil? || ids.empty?
|
16
|
-
validate_params(data) do
|
17
|
-
validate :query => [:service_key], :as => [:required, :string]
|
18
|
-
end
|
19
|
-
perform_post("/contacts/#{escaped_ids(ids)}/pagerduty_credentials",
|
20
|
-
nil, :pagerduty_credentials => data)
|
21
|
-
end
|
22
|
-
|
23
|
-
def pagerduty_credentials(*ids)
|
24
|
-
perform_get('pagerduty_credentials', '/pagerduty_credentials', ids)
|
25
|
-
end
|
26
|
-
|
27
|
-
def update_pagerduty_credentials(*args)
|
28
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
29
|
-
raise "'update_pagerduty_credentials' requires at least one " \
|
30
|
-
' pagerduty_credentials id parameter' if ids.nil? || ids.empty?
|
31
|
-
validate_params(params) do
|
32
|
-
validate :query => [:service_key, :subdomain,
|
33
|
-
:token], :as => :string
|
34
|
-
end
|
35
|
-
perform_patch("/pagerduty_credentials/#{escaped_ids(ids)}",
|
36
|
-
nil, update_pagerduty_credentials_ops(params))
|
37
|
-
end
|
38
|
-
|
39
|
-
def delete_pagerduty_credentials(*ids)
|
40
|
-
raise "'delete_pagerduty_credentials' requires at least one " \
|
41
|
-
'pagerduty_credentials id parameter' if ids.nil? || ids.empty?
|
42
|
-
perform_delete('/pagerduty_credentials', ids)
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def update_pagerduty_credentials_ops(params)
|
48
|
-
ops = params.each_with_object([]) do |(k, v), memo|
|
49
|
-
next unless [:service_key, :subdomain, :token].include?(k)
|
50
|
-
memo << patch_replace('pagerduty_credentials', k, v)
|
51
|
-
end
|
52
|
-
raise "'update_pagerduty_credentials' did not find any valid " \
|
53
|
-
'update fields' if ops.empty?
|
54
|
-
ops
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
require 'json'
|
3
|
-
require 'uri'
|
4
|
-
|
5
|
-
require 'flapjack-diner/version'
|
6
|
-
require 'flapjack-diner/argument_validator'
|
7
|
-
|
8
|
-
module Flapjack
|
9
|
-
module Diner
|
10
|
-
module Resources
|
11
|
-
module Reports
|
12
|
-
%w(entities checks).each do |data_type|
|
13
|
-
define_method("status_report_#{data_type}") do |*ids|
|
14
|
-
perform_get('status_reports', "/status_report/#{data_type}", ids)
|
15
|
-
end
|
16
|
-
|
17
|
-
%w(scheduled_maintenance unscheduled_maintenance
|
18
|
-
downtime outage).each do |report_type|
|
19
|
-
define_method("#{report_type}_report_#{data_type}") do |*args|
|
20
|
-
ids, params = unwrap_ids(*args), unwrap_params(*args)
|
21
|
-
validate_params(params) do
|
22
|
-
validate :query => [:start_time, :end_time], :as => :time
|
23
|
-
end
|
24
|
-
perform_get("#{report_type}_reports",
|
25
|
-
"/#{report_type}_report/#{data_type}",
|
26
|
-
ids, params)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|