diplomat 0.13.2 → 0.14.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 638859b7d485cfb4a37766bd7200a60e9852b55f
4
- data.tar.gz: 901ea80b4cb6464e702acc333797eaa40b74f7e1
3
+ metadata.gz: dd8fd2de1577af47ba483ec661d17065898e0347
4
+ data.tar.gz: 67472f8f9b059e34acb2da7565416545a16a4150
5
5
  SHA512:
6
- metadata.gz: 83498aaefff2fae7565159695858b89ffc36c6797cfd67daecee80e45ff488176e2d078bf548a669353192ea813110ac82eda738c3aafa9ccfdacbea5c0fb490
7
- data.tar.gz: 0dd991bc36661431069d0ecdd09fdd92ca0d1bdd0303b4ae0f34043f69a33606f84840c2728ee85aedfef69249898ca8afe938306a9330bfceff7925a0c190bb
6
+ metadata.gz: fc1c47f0f2a6fd0ef1d8d368ff476c2943b7ac28d0ea8baa69cedd18e22ba78131196b8b6867c0ab8debfcd6b5ee84d5e26b9065a994bb11148e17c6bc91d435
7
+ data.tar.gz: c6c453c1bebd64a5354304820e3946abb3f98ff3974e0ba15cb9c4c9939b5016a2dcc6bda78bbaf17f7d2c3d547f1db1ac0b3de1d07d3e04304256645137f45f
data/README.md CHANGED
@@ -106,6 +106,13 @@ foo_service = Diplomat::Service.get('foo', :all, { :dc => 'My_Datacenter'})
106
106
  # => [#<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>]
107
107
  ```
108
108
 
109
+ If you wish to list all the services on consul:
110
+
111
+ ```ruby
112
+ services = Diplomat::Service.get_all
113
+ # => #<OpenStruct consul=[], foo=[], bar=[]>
114
+ ```
115
+
109
116
  ### Datacenters
110
117
 
111
118
  Getting a list of datacenters is quite simple and gives you the option to extract all services out of
data/lib/diplomat.rb CHANGED
@@ -21,7 +21,7 @@ module Diplomat
21
21
  self.root_path = File.expand_path "..", __FILE__
22
22
  self.lib_path = File.expand_path "../diplomat", __FILE__
23
23
 
24
- require_libs "configuration", "rest_client", "kv", "datacenter", "service", "members", "check", "health", "session", "lock", "error", "event"
24
+ require_libs "configuration", "rest_client", "kv", "datacenter", "service", "members", "nodes", "check", "health", "session", "lock", "error", "event"
25
25
  self.configuration ||= Diplomat::Configuration.new
26
26
 
27
27
  class << self
data/lib/diplomat/kv.rb CHANGED
@@ -9,8 +9,10 @@ module Diplomat
9
9
  # Get a value by its key, potentially blocking for the first or next value
10
10
  # @param key [String] the key
11
11
  # @param options [Hash] the query params
12
+ # @option options [Boolean] :recurse If to make recursive get or not
12
13
  # @option options [String] :consistency The read consistency type
13
14
  # @option options [String] :dc Target datacenter
15
+ # @option options [Boolean] :nil_values If to return keys/dirs with nil values
14
16
  # @param not_found [Symbol] behaviour if the key doesn't exist;
15
17
  # :reject with exception, :return degenerate value, or :wait for it to appear
16
18
  # @param found [Symbol] behaviour if the key does exist;
@@ -42,6 +44,8 @@ module Diplomat
42
44
  url += use_consistency(@options)
43
45
  url += dc(@options)
44
46
 
47
+ return_nil_values = (@options and @options[:nil_values])
48
+
45
49
  # 404s OK using this connection
46
50
  raw = @conn_no_err.get concat_url url
47
51
  if raw.status == 404
@@ -60,7 +64,7 @@ module Diplomat
60
64
  when :return
61
65
  @raw = raw
62
66
  parse_body
63
- return return_value
67
+ return return_value(return_nil_values)
64
68
  when :wait
65
69
  index = raw.headers["x-consul-index"]
66
70
  end
@@ -75,7 +79,7 @@ module Diplomat
75
79
  req.options.timeout = 86400
76
80
  end
77
81
  parse_body
78
- return_value
82
+ return_value(return_nil_values)
79
83
  end
80
84
 
81
85
  # Associate a value with a key
@@ -0,0 +1,15 @@
1
+ require 'base64'
2
+ require 'faraday'
3
+
4
+ module Diplomat
5
+ class Nodes < Diplomat::RestClient
6
+ @access_methods = [ :get ]
7
+
8
+ # Get all nodes
9
+ # @return [OpenStruct] all data associated with the nodes in catalog
10
+ def get
11
+ ret = @conn.get "/v1/catalog/nodes"
12
+ return JSON.parse(ret.body)
13
+ end
14
+ end
15
+ end
@@ -75,16 +75,17 @@ module Diplomat
75
75
  end
76
76
 
77
77
  # Get the key/value(s) from the raw output
78
- def return_value
78
+ def return_value(nil_values=false)
79
79
  if @raw.count == 1
80
80
  @value = @raw.first["Value"]
81
81
  @value = Base64.decode64(@value) unless @value.nil?
82
82
  else
83
83
  @value = @raw.reduce([]) do |acc, e|
84
+ val = e["Value"].nil? ? nil : Base64.decode64(e["Value"])
84
85
  acc << {
85
86
  :key => e["Key"],
86
- :value => Base64.decode64(e["Value"])
87
- } unless e["Value"].nil?
87
+ :value => val
88
+ } if val or nil_values
88
89
  acc
89
90
  end
90
91
  end
@@ -4,7 +4,7 @@ require 'faraday'
4
4
  module Diplomat
5
5
  class Service < Diplomat::RestClient
6
6
 
7
- @access_methods = [ :get, :register, :deregister ]
7
+ @access_methods = [ :get, :get_all, :register, :deregister ]
8
8
 
9
9
  # Get a service by it's key
10
10
  # @param key [String] the key
@@ -41,6 +41,19 @@ module Diplomat
41
41
  return OpenStruct.new JSON.parse(ret.body).first
42
42
  end
43
43
 
44
+ # Get all the services
45
+ # @return [OpenStruct] the list of all services
46
+ def get_all
47
+ url = "/v1/catalog/services"
48
+ begin
49
+ ret = @conn.get url
50
+ rescue Faraday::ClientError
51
+ raise Diplomat::PathNotFound
52
+ end
53
+
54
+ return OpenStruct.new JSON.parse(ret.body)
55
+ end
56
+
44
57
  # Register a service
45
58
  # @param definition [Hash] Hash containing definition of service
46
59
  # @return [Boolean]
@@ -1,3 +1,3 @@
1
1
  module Diplomat
2
- VERSION = "0.13.2"
2
+ VERSION = "0.14.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diplomat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hamelink
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-18 00:00:00.000000000 Z
11
+ date: 2015-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -186,6 +186,7 @@ files:
186
186
  - lib/diplomat/kv.rb
187
187
  - lib/diplomat/lock.rb
188
188
  - lib/diplomat/members.rb
189
+ - lib/diplomat/nodes.rb
189
190
  - lib/diplomat/rest_client.rb
190
191
  - lib/diplomat/service.rb
191
192
  - lib/diplomat/session.rb
@@ -210,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
211
  version: '0'
211
212
  requirements: []
212
213
  rubyforge_project:
213
- rubygems_version: 2.4.8
214
+ rubygems_version: 2.4.5.1
214
215
  signing_key:
215
216
  specification_version: 4
216
217
  summary: Diplomat is a simple wrapper for Consul