diplomat 2.6.1 → 2.6.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a7d8de13c2c322771e2077560a34336a92744122540db247dc5ee8f4c97a7f1
4
- data.tar.gz: a13421e5a4c9672f8f8410065ee5f4ab38833acc027f8cfb0edc6c2c0bfd30fd
3
+ metadata.gz: a511e72072393dd5a7ae290168917f50e27f13bfa46384ca480840277bd33f22
4
+ data.tar.gz: be98732d7e185789f5d62011d208dbff64088e2634a863d2da3ea9d35f029058
5
5
  SHA512:
6
- metadata.gz: c1f93bed5e1bf7d1ebd3a62dc3fb0a869c34ce774ae0e992bd0efdbb6a0004ab57e757e5e8d850456032c739bc86ae86bbc1e9b1cd3e7a64e8d5635402f7d851
7
- data.tar.gz: 332e033972fc6e8aed716800553edcab761320eea3d2353647102310e199a0eadcdba85a926b2dedbfdc8f4348b7cc3a1d0ed94562dffeacc24251d852d2f698
6
+ metadata.gz: 1ab4b6033d60b9a9930da3736e105980da473cf186e289db808d0eb5d8bc964d2712fec70711c3d918a84968696ea1ea1a51926e0c41aa663971d4e3825988eb
7
+ data.tar.gz: 6df7409db9894e31b74d764354c305a70997eef07053d9369756d1572be004239c3268f8d79842116e5d6e8a962e3c21ef97b6c43bcefdaf9898a38735605ce0
data/README.md CHANGED
@@ -196,6 +196,13 @@ foo_service = Diplomat::Service.get('foo', :all, { :dc => 'My_Datacenter'})
196
196
  # => [#<OpenStruct Node="hotel", Address="1.2.3.4", ServiceID="hotel_foo", ServiceName="foo", ServiceTags=["foo"], ServicePort=5432>,#<OpenStruct Node="indigo", Address="1.2.3.5", ServiceID="indigo_foo", ServiceName="foo", ServiceTags=["foo"], ServicePort=5432>]
197
197
  ```
198
198
 
199
+ Or if you want to filter services
200
+
201
+ ```ruby
202
+ foo_service = Diplomat::Service.get('foo', :all, { :filter => 'ServiceID == "indigo_foo"'})
203
+ # => [#<OpenStruct Node="indigo", Address="1.2.3.5", ServiceID="indigo_foo", ServiceName="foo", ServiceTags=["foo"], ServicePort=5432>]
204
+ ```
205
+
199
206
  If you wish to list all the services on consul:
200
207
 
201
208
  ```ruby
@@ -331,6 +338,40 @@ Get the health status from autopilot
331
338
  Diplomat::Autopilot.get_health()
332
339
  ```
333
340
 
341
+ ### Health
342
+
343
+ Retrieve health of a node
344
+
345
+ ```ruby
346
+ Diplomat::Health.node('fooNode', :dc => 'abc')
347
+ ```
348
+
349
+ Retrieve health of a given check
350
+
351
+ ```ruby
352
+ Diplomat::Health.checks('fooCheck', :dc => 'abc')
353
+ ```
354
+
355
+ Retrieve health of a given service
356
+
357
+ ```ruby
358
+ Diplomat::Health.service('fooService', :dc => 'abc')
359
+ ```
360
+
361
+ Retrieve a list of anything that correspond to the state ("any", "passing", "warning", or "critical")
362
+ You can use filters too !
363
+
364
+ ```ruby
365
+ Diplomat::Health.state("critical", {:dc => 'abc', :filter => 'Node==foo'})
366
+ ```
367
+
368
+ You also have some convenience method (`any`, `passing`, `warning`, `critical`)
369
+ That can be filtered
370
+
371
+ ```ruby
372
+ Diplomat::Health.critical({:dc => 'abc', :filter => 'ServiceName==foo'})
373
+ ```
374
+
334
375
  ### Maintenance mode
335
376
 
336
377
  Enable maintenance mode on a host, with optional reason and DC (requires access to local agent)
@@ -8,11 +8,12 @@ module Diplomat
8
8
 
9
9
  # Get node health
10
10
  # @param n [String] the node
11
- # @param options [Hash] :dc string for dc specific query
11
+ # @param options [Hash] :dc, :filter string for specific query
12
12
  # @return [OpenStruct] all data associated with the node
13
13
  def node(n, options = {})
14
14
  custom_params = []
15
15
  custom_params << use_named_parameter('dc', options[:dc]) if options[:dc]
16
+ custom_params << use_named_parameter('filter', options[:filter]) if options[:filter]
16
17
 
17
18
  ret = send_get_request(@conn, ["/v1/health/node/#{n}"], options, custom_params)
18
19
  JSON.parse(ret.body).map { |node| OpenStruct.new node }
@@ -20,11 +21,12 @@ module Diplomat
20
21
 
21
22
  # Get service checks
22
23
  # @param s [String] the service
23
- # @param options [Hash] :dc string for dc specific query
24
+ # @param options [Hash] :dc, :filter string for specific query
24
25
  # @return [OpenStruct] all data associated with the node
25
26
  def checks(s, options = {})
26
27
  custom_params = []
27
28
  custom_params << use_named_parameter('dc', options[:dc]) if options[:dc]
29
+ custom_params << use_named_parameter('filter', options[:filter]) if options[:filter]
28
30
 
29
31
  ret = send_get_request(@conn, ["/v1/health/checks/#{s}"], options, custom_params)
30
32
  JSON.parse(ret.body).map { |check| OpenStruct.new check }
@@ -44,6 +46,7 @@ module Diplomat
44
46
  custom_params << use_named_parameter('near', options[:near]) if options[:near]
45
47
  custom_params << use_named_parameter('node-meta', options[:node_meta]) if options[:node_meta]
46
48
  custom_params << use_named_parameter('index', options[:index]) if options[:index]
49
+ custom_params << use_named_parameter('filter', options[:filter]) if options[:filter]
47
50
 
48
51
  ret = send_get_request(@conn, ["/v1/health/service/#{s}"], options, custom_params)
49
52
  if meta && ret.headers
@@ -59,35 +62,44 @@ module Diplomat
59
62
 
60
63
  # Get service health
61
64
  # @param s [String] the state ("any", "passing", "warning", or "critical")
62
- # @param options [Hash] :dc string for dc specific query
65
+ # @param options [Hash] :dc, :near, :filter string for specific query
63
66
  # @return [OpenStruct] all data associated with the node
64
67
  def state(s, options = {})
65
68
  custom_params = []
66
69
  custom_params << use_named_parameter('dc', options[:dc]) if options[:dc]
67
70
  custom_params << use_named_parameter('near', options[:near]) if options[:near]
71
+ custom_params << use_named_parameter('filter', options[:filter]) if options[:filter]
68
72
 
69
73
  ret = send_get_request(@conn, ["/v1/health/state/#{s}"], options, custom_params)
70
74
  JSON.parse(ret.body).map { |status| OpenStruct.new status }
71
75
  end
72
76
 
73
77
  # Convenience method to get services in any state
74
- def any
75
- state('any')
78
+ # @param options [Hash] :dc, :near, :filter string for specific query
79
+ # @return [OpenStruct] all data associated with the node
80
+ def any(options = {})
81
+ state('any', options)
76
82
  end
77
83
 
78
84
  # Convenience method to get services in passing state
79
- def passing
80
- state('passing')
85
+ # @param options [Hash] :dc, :near, :filter string for specific query
86
+ # @return [OpenStruct] all data associated with the node
87
+ def passing(options = {})
88
+ state('passing', options)
81
89
  end
82
90
 
83
91
  # Convenience method to get services in warning state
84
- def warning
85
- state('warning')
92
+ # @param options [Hash] :dc, :near, :filter string for specific query
93
+ # @return [OpenStruct] all data associated with the node
94
+ def warning(options = {})
95
+ state('warning', options)
86
96
  end
87
97
 
88
98
  # Convenience method to get services in critical state
89
- def critical
90
- state('critical')
99
+ # @param options [Hash] :dc, :near, :filter string for specific query
100
+ # @return [OpenStruct] all data associated with the node
101
+ def critical(options = {})
102
+ state('critical', options)
91
103
  end
92
104
  end
93
105
  end
@@ -17,6 +17,7 @@ module Diplomat
17
17
  custom_params << use_named_parameter('wait', options[:wait]) if options[:wait]
18
18
  custom_params << use_named_parameter('index', options[:index]) if options[:index]
19
19
  custom_params << use_named_parameter('dc', options[:dc]) if options[:dc]
20
+ custom_params << use_named_parameter('filter', options[:filter]) if options[:filter]
20
21
  custom_params += [*options[:tag]].map { |value| use_named_parameter('tag', value) } if options[:tag]
21
22
 
22
23
  ret = send_get_request(@conn, ["/v1/catalog/service/#{key}"], options, custom_params)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Diplomat
4
- VERSION = '2.6.1'
4
+ VERSION = '2.6.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diplomat
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 2.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hamelink
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-01-05 00:00:00.000000000 Z
13
+ date: 2022-08-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -187,9 +187,12 @@ dependencies:
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0.9'
190
+ - - "!="
191
+ - !ruby/object:Gem::Version
192
+ version: 2.0.0
190
193
  - - "<"
191
194
  - !ruby/object:Gem::Version
192
- version: '2.0'
195
+ version: '3.0'
193
196
  type: :runtime
194
197
  prerelease: false
195
198
  version_requirements: !ruby/object:Gem::Requirement
@@ -197,9 +200,12 @@ dependencies:
197
200
  - - ">="
198
201
  - !ruby/object:Gem::Version
199
202
  version: '0.9'
203
+ - - "!="
204
+ - !ruby/object:Gem::Version
205
+ version: 2.0.0
200
206
  - - "<"
201
207
  - !ruby/object:Gem::Version
202
- version: '2.0'
208
+ version: '3.0'
203
209
  description: Diplomat is a simple wrapper for Consul
204
210
  email:
205
211
  - john@johnhamelink.com