diplomat 0.13.2 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
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