flapjack-diner 2.0.0.pre.alpha.3 → 2.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -10
  3. data/README.md +165 -272
  4. data/flapjack-diner.gemspec +1 -1
  5. data/lib/flapjack-diner.rb +54 -25
  6. data/lib/flapjack-diner/argument_validator.rb +0 -17
  7. data/lib/flapjack-diner/configuration.rb +417 -0
  8. data/lib/flapjack-diner/log_formatter.rb +22 -0
  9. data/lib/flapjack-diner/query.rb +114 -0
  10. data/lib/flapjack-diner/relationships.rb +180 -0
  11. data/lib/flapjack-diner/request.rb +280 -0
  12. data/lib/flapjack-diner/resources.rb +64 -0
  13. data/lib/flapjack-diner/response.rb +91 -0
  14. data/lib/flapjack-diner/tools.rb +46 -456
  15. data/lib/flapjack-diner/utility.rb +16 -0
  16. data/lib/flapjack-diner/version.rb +1 -1
  17. data/spec/flapjack-diner_spec.rb +9 -18
  18. data/spec/{resources/relationships_spec.rb → relationships_spec.rb} +75 -29
  19. data/spec/resources/checks_spec.rb +7 -7
  20. data/spec/resources/contacts_spec.rb +21 -19
  21. data/spec/resources/events_spec.rb +13 -13
  22. data/spec/resources/maintenance_periods_spec.rb +3 -3
  23. data/spec/resources/media_spec.rb +3 -3
  24. data/spec/resources/metrics_spec.rb +1 -1
  25. data/spec/resources/rules_spec.rb +278 -0
  26. data/spec/resources/states_spec.rb +1 -1
  27. data/spec/resources/statistics_spec.rb +1 -1
  28. data/spec/resources/tags_spec.rb +75 -19
  29. data/spec/support/fixture_data.rb +57 -98
  30. metadata +21 -29
  31. data/.rubocop.yml +0 -21
  32. data/.rubocop_todo.yml +0 -135
  33. data/lib/flapjack-diner/resources/acceptors.rb +0 -77
  34. data/lib/flapjack-diner/resources/checks.rb +0 -52
  35. data/lib/flapjack-diner/resources/contacts.rb +0 -54
  36. data/lib/flapjack-diner/resources/events.rb +0 -54
  37. data/lib/flapjack-diner/resources/maintenance_periods.rb +0 -76
  38. data/lib/flapjack-diner/resources/media.rb +0 -75
  39. data/lib/flapjack-diner/resources/metrics.rb +0 -23
  40. data/lib/flapjack-diner/resources/rejectors.rb +0 -77
  41. data/lib/flapjack-diner/resources/relationships.rb +0 -314
  42. data/lib/flapjack-diner/resources/states.rb +0 -24
  43. data/lib/flapjack-diner/resources/statistics.rb +0 -24
  44. data/lib/flapjack-diner/resources/tags.rb +0 -47
  45. data/spec/resources/acceptors_spec.rb +0 -278
  46. data/spec/resources/rejectors_spec.rb +0 -278
@@ -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
@@ -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,77 +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 Acceptors
12
-
13
- def create_acceptors(*args)
14
- data = unwrap_data(*args)
15
- validate_params(data) do
16
- validate :query => :id, :as => :uuid
17
- validate :query => :name, :as => :string
18
- validate :query => :all, :as => :boolean
19
- validate :query => :conditions_list, :as => :string
20
- # TODO proper validation of time_restrictions field
21
- validate :query => :contact, :as => [:singular_link_uuid, :required]
22
- validate :query => :media, :as => :multiple_link_uuid
23
- validate :query => :tags, :as => :multiple_link
24
- end
25
- _acceptors_validate_association(data)
26
- perform_post(:acceptors, '/acceptors', data)
27
- end
28
-
29
- def acceptors(*args)
30
- ids, data = unwrap_uuids(*args), unwrap_data(*args)
31
- validate_params(data) do
32
- validate :query => [:fields, :sort, :include], :as => :string_or_array_of_strings
33
- validate :query => :filter, :as => :hash
34
- validate :query => [:page, :per_page], :as => :positive_integer
35
- end
36
- perform_get('/acceptors', ids, data)
37
- end
38
-
39
- def update_acceptors(*args)
40
- data = unwrap_data(*args)
41
- validate_params(data) do
42
- validate :query => :id, :as => [:uuid, :required]
43
- validate :query => :name, :as => :string
44
- validate :query => :all, :as => :boolean
45
- validate :query => :conditions_list, :as => :string
46
- # TODO proper validation of time_restrictions field
47
- validate :query => :media, :as => :multiple_link_uuid
48
- validate :query => :tags, :as => :multiple_link
49
- end
50
- perform_patch(:acceptors, "/acceptors", data)
51
- end
52
-
53
- def delete_acceptors(*ids)
54
- raise "'delete_acceptors' requires at least one acceptor id parameter" if ids.nil? || ids.empty?
55
- perform_delete(:acceptors, '/acceptors', *ids)
56
- end
57
-
58
- private
59
-
60
- def _acceptors_validate_association(data)
61
- case data
62
- when Array
63
- data.each do |d|
64
- unless d.has_key?(:contact)
65
- raise ArgumentError.new("Contact association must be provided for all acceptors")
66
- end
67
- end
68
- when Hash
69
- unless data.has_key?(:contact)
70
- raise ArgumentError.new("Contact association must be provided for acceptor")
71
- end
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,52 +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_data(*args)
14
- validate_params(data) do
15
- validate :query => :id, :as => :uuid
16
- validate :query => :name, :as => [:required, :non_empty_string]
17
- validate :query => :enabled, :as => :boolean
18
- validate :query => :tags, :as => :multiple_link
19
- end
20
- perform_post(:checks, '/checks', data)
21
- end
22
-
23
- def checks(*args)
24
- ids, data = unwrap_uuids(*args), unwrap_data(*args)
25
- validate_params(data) do
26
- validate :query => [:fields, :sort, :include], :as => :string_or_array_of_strings
27
- validate :query => :filter, :as => :hash
28
- validate :query => [:page, :per_page], :as => :positive_integer
29
- end
30
- perform_get('/checks', ids, data)
31
- end
32
-
33
- def update_checks(*args)
34
- data = unwrap_data(*args)
35
- validate_params(data) do
36
- validate :query => :id, :as => [:required, :uuid]
37
- validate :query => :name, :as => :non_empty_string
38
- validate :query => :enabled, :as => :boolean
39
- validate :query => :tags, :as => :multiple_link
40
- end
41
- perform_patch(:checks, "/checks", data)
42
- end
43
-
44
- def delete_checks(*ids)
45
- raise "'delete_checks' requires at least one check id " \
46
- 'parameter' if ids.nil? || ids.empty?
47
- perform_delete(:checks, '/checks', *ids)
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,54 +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_data(*args)
14
- validate_params(data) do
15
- validate :query => :id, :as => :uuid
16
- validate :query => :name, :as => [:required, :non_empty_string]
17
- validate :query => :timezone, :as => :non_empty_string
18
- end
19
- # FIXME validate timezone string, if it's possible to do
20
- # this without an extra gem dependency
21
- perform_post(:contacts, '/contacts', data)
22
- end
23
-
24
- def contacts(*args)
25
- ids, data = unwrap_uuids(*args), unwrap_data(*args)
26
- validate_params(data) do
27
- validate :query => [:fields, :sort, :include], :as => :string_or_array_of_strings
28
- validate :query => :filter, :as => :hash
29
- validate :query => [:page, :per_page], :as => :positive_integer
30
- end
31
- perform_get('/contacts', ids, data)
32
- end
33
-
34
- def update_contacts(*args)
35
- data = unwrap_data(*args)
36
- validate_params(data) do
37
- validate :query => :id, :as => [:required, :uuid]
38
- validate :query => [:name, :timezone], :as => :non_empty_string
39
- end
40
- # FIXME validate timezone string, if it's possible to do
41
- # this without an extra gem dependency
42
- perform_patch(:contacts, "/contacts", data)
43
- end
44
-
45
- def delete_contacts(*ids)
46
- raise "'delete_contacts' requires at least one contact id " \
47
- 'parameter' if ids.nil? || ids.empty?
48
- perform_delete(:contacts, '/contacts', *ids)
49
- end
50
-
51
- end
52
- end
53
- end
54
- end
@@ -1,54 +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 Events
12
- def create_acknowledgements(*args)
13
- data = unwrap_data(*args)
14
- validate_params(data) do
15
- validate :query => :duration, :as => :positive_integer
16
- validate :query => :summary, :as => :non_empty_string
17
- validate :query => :check, :as => :singular_link_uuid
18
- validate :query => :tag, :as => :singular_link
19
- end
20
- _events_validate_association(data, 'acknowledgement')
21
- perform_post(:acknowledgements, "/acknowledgements", data)
22
- end
23
-
24
- def create_test_notifications(*args)
25
- data = unwrap_data(*args)
26
- validate_params(data) do
27
- validate :query => :summary, :as => :non_empty_string
28
- validate :query => :check, :as => :singular_link_uuid
29
- validate :query => :tag, :as => :singular_link
30
- end
31
- _events_validate_association(data, 'test notification')
32
- perform_post(:test_notifications, "/test_notifications", data)
33
- end
34
-
35
- private
36
-
37
- def _events_validate_association(data, type)
38
- case data
39
- when Array
40
- data.each do |d|
41
- unless d.has_key?(:check) || d.has_key?(:tag)
42
- raise ArgumentError.new("Check or tag association must be provided for all #{type}s")
43
- end
44
- end
45
- when Hash
46
- unless data.has_key?(:check) || data.has_key?(:tag)
47
- raise ArgumentError.new("Check or tag association must be provided for #{type}")
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,76 +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
-
13
- def create_scheduled_maintenances(*args)
14
- data = unwrap_data(*args)
15
- validate_params(data) do
16
- validate :query => :id, :as => :uuid
17
- validate :query => :start_time, :as => [:required, :time]
18
- validate :query => :end_time, :as => [:required, :time]
19
- validate :query => :summary, :as => :non_empty_string
20
- validate :query => :check, :as => :singular_link_uuid
21
- validate :query => :tag, :as => :singular_link
22
- end
23
- _maintenance_periods_validate_association(data, 'scheduled maintenance period')
24
- perform_post(:scheduled_maintenances, '/scheduled_maintenances', data)
25
- end
26
-
27
- def update_scheduled_maintenances(*args)
28
- data = unwrap_data(*args)
29
- validate_params(data) do
30
- validate :query => :id, :as => [:required, :uuid]
31
- validate :query => [:start_time, :end_time], :as => :time
32
- end
33
- perform_patch(:scheduled_maintenances, '/scheduled_maintenances',
34
- data)
35
- end
36
-
37
- def update_unscheduled_maintenances(*args)
38
- data = unwrap_data(*args)
39
- validate_params(data) do
40
- validate :query => :id, :as => [:required, :uuid]
41
- validate :query => :end_time, :as => :time
42
- end
43
- perform_patch(:unscheduled_maintenances, '/unscheduled_maintenances',
44
- data)
45
- end
46
-
47
- def delete_scheduled_maintenances(*ids)
48
- if ids.nil? || ids.empty?
49
- raise "'delete_scheduled_maintenances' requires " \
50
- "at least one scheduled maintenance id parameter"
51
- end
52
- perform_delete(:scheduled_maintenances, '/scheduled_maintenances',
53
- *ids)
54
- end
55
-
56
- private
57
-
58
- def _maintenance_periods_validate_association(data, type)
59
- case data
60
- when Array
61
- data.each do |d|
62
- unless d.has_key?(:check) || d.has_key?(:tag)
63
- raise ArgumentError.new("Check or tag association must be provided for all #{type}s")
64
- end
65
- end
66
- when Hash
67
- unless data.has_key?(:check) || data.has_key?(:tag)
68
- raise ArgumentError.new("Check or tag association must be provided for #{type}")
69
- end
70
- end
71
- end
72
-
73
- end
74
- end
75
- end
76
- end