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 +4 -4
- data/README.md +7 -0
- data/lib/diplomat.rb +1 -1
- data/lib/diplomat/kv.rb +6 -2
- data/lib/diplomat/nodes.rb +15 -0
- data/lib/diplomat/rest_client.rb +4 -3
- data/lib/diplomat/service.rb +14 -1
- data/lib/diplomat/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd8fd2de1577af47ba483ec661d17065898e0347
|
4
|
+
data.tar.gz: 67472f8f9b059e34acb2da7565416545a16a4150
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/diplomat/rest_client.rb
CHANGED
@@ -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 =>
|
87
|
-
}
|
87
|
+
:value => val
|
88
|
+
} if val or nil_values
|
88
89
|
acc
|
89
90
|
end
|
90
91
|
end
|
data/lib/diplomat/service.rb
CHANGED
@@ -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]
|
data/lib/diplomat/version.rb
CHANGED
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.
|
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-
|
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.
|
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
|