diplomat 0.1.10 → 0.2.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: a23e42c39267a3f6bff598a5775ec170787be1bf
4
- data.tar.gz: 0778158f0ee8e2ba9210f1fc469b1a1b4fefff49
3
+ metadata.gz: 3f2bf40d8cc3eea258753340fb38086dc71c8f2f
4
+ data.tar.gz: e3db694a3793a961971686d989adfcbc98292c4e
5
5
  SHA512:
6
- metadata.gz: 943740a0d4bb06217d8cb55d5a74cb7b72a2575f768f278f606a5aa2390992c7055424566a94043ae4a8bb81bda054ec587ab45419db326e983564d43c5a59f2
7
- data.tar.gz: 976565fa6452fd2d96089297d5a312187461d09dedb49258f1856e25599d40ef607e5bdb866678ec745f0ae5c7e2511d2072476f690b8ed007af2df28eb1ce61
6
+ metadata.gz: ea31b94d60f6f5bc15ac1d1ec3632dc8b02eff9dac5d7cce5e1979ba1fe5c74a54f6d83f35f9314e8c5b5563c669c5af711bfed879bec9a6bbfd2fb77d1bf7a0
7
+ data.tar.gz: c27de31b09f4d25a59964d61a59d3d393bc158a3774b41bb53c82ef5e19cfaa68b2246e139142c2e9cc88f45b10c46d9139a8a7b7efb6ff8004993992daa862f
data/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  #### What's Diplomat for?
11
11
 
12
- Diplomat allows any ruby application to interact with [Consul's](http://www.consul.io/) distributed key value store, and also receive information about services currently available in the Consol cluster.
12
+ Diplomat allows any ruby application to interact with [Consul's](http://www.consul.io/) distributed key value store, and also receive information about services currently available in the Consul cluster.
13
13
 
14
14
  #### Does it work in rails?
15
15
 
@@ -31,7 +31,7 @@ production:
31
31
  <% end %>
32
32
  ```
33
33
 
34
- #### Why would I use Consol over ZooKeeper, Doozerd, etcd, Nagios, Sensu, SmartStack, SkyDNS, Chef, Puppet, Ansible, etc?
34
+ #### Why would I use Consul over ZooKeeper, Doozerd, etcd, Nagios, Sensu, SmartStack, SkyDNS, Chef, Puppet, Ansible, etc?
35
35
 
36
36
  [Read up what makes Consul different here](http://www.consul.io/intro/vs/index.html)
37
37
 
@@ -6,9 +6,14 @@ module Diplomat
6
6
 
7
7
  # Get a service by it's key
8
8
  # @param key [String] the key
9
+ # @param scope [Symbol] :first or :all results
9
10
  # @return [OpenStruct] all data associated with the service
10
- def get key
11
+ def get key, scope=:first
11
12
  ret = @conn.get "/v1/catalog/service/#{key}"
13
+
14
+ if scope == :all
15
+ return JSON.parse(ret.body).map { |service| OpenStruct.new service }
16
+ end
12
17
  return OpenStruct.new JSON.parse(ret.body).first
13
18
  end
14
19
 
@@ -1,3 +1,3 @@
1
1
  module Diplomat
2
- VERSION = "0.1.10"
2
+ VERSION = "0.2.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.1.10
4
+ version: 0.2.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: 2014-05-20 00:00:00.000000000 Z
11
+ date: 2014-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,33 +81,61 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: json
84
+ name: codeclimate-test-reporter
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.8'
89
+ version: 0.3.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1.8'
96
+ version: 0.3.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: codeclimate-test-reporter
98
+ name: fivemat
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: gem-release
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.3.0
117
+ version: '0.7'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.3.0
124
+ version: '0.7'
125
+ - !ruby/object:Gem::Dependency
126
+ name: json
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.8'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.8'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: faraday
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -129,14 +157,8 @@ executables: []
129
157
  extensions: []
130
158
  extra_rdoc_files: []
131
159
  files:
132
- - ".gitignore"
133
- - ".rspec"
134
- - ".travis.yml"
135
- - Gemfile
136
160
  - LICENSE
137
161
  - README.md
138
- - Rakefile
139
- - diplomat.gemspec
140
162
  - lib/diplomat.rb
141
163
  - lib/diplomat/check.rb
142
164
  - lib/diplomat/health.rb
@@ -145,11 +167,6 @@ files:
145
167
  - lib/diplomat/rest_client.rb
146
168
  - lib/diplomat/service.rb
147
169
  - lib/diplomat/version.rb
148
- - spec/check_spec.rb
149
- - spec/health_spec.rb
150
- - spec/kv_spec.rb
151
- - spec/members_spec.rb
152
- - spec/spec_helper.rb
153
170
  homepage: https://github.com/johnhamelink/diplomat
154
171
  licenses:
155
172
  - BSD
@@ -170,14 +187,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
187
  version: '0'
171
188
  requirements: []
172
189
  rubyforge_project:
173
- rubygems_version: 2.2.1
190
+ rubygems_version: 2.2.2
174
191
  signing_key:
175
192
  specification_version: 4
176
193
  summary: Diplomat is a simple wrapper for Consul
177
- test_files:
178
- - spec/check_spec.rb
179
- - spec/health_spec.rb
180
- - spec/kv_spec.rb
181
- - spec/members_spec.rb
182
- - spec/spec_helper.rb
194
+ test_files: []
183
195
  has_rdoc:
data/.gitignore DELETED
@@ -1,35 +0,0 @@
1
- Gemfile.lock
2
- *.gem
3
- *.rbc
4
- /.config
5
- /coverage/
6
- /InstalledFiles
7
- /pkg/
8
- /spec/reports/
9
- /test/tmp/
10
- /test/version_tmp/
11
- /tmp/
12
-
13
- ## Specific to RubyMotion:
14
- .dat*
15
- .repl_history
16
- build/
17
-
18
- ## Documentation cache and generated files:
19
- /.yardoc/
20
- /_yardoc/
21
- /doc/
22
- /rdoc/
23
-
24
- ## Environment normalisation:
25
- /.bundle/
26
- /lib/bundler/man/
27
-
28
- # for a library or gem, you might want to ignore these files since the code is
29
- # intended to run in multiple environments; otherwise, check them in:
30
- # Gemfile.lock
31
- # .ruby-version
32
- # .ruby-gemset
33
-
34
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
- .rvmrc
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - "1.9.3"
4
- - "2.0.0"
5
- - "2.1.0"
6
- addons:
7
- code_climate:
8
- repo_token: c910d8f8af55cc2d2f38170d5362be4e16be8ce232df9c565057985af264b7b
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in roundel.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,5 +0,0 @@
1
- require 'rspec/core/rake_task'
2
-
3
- RSpec::Core::RakeTask.new(:spec)
4
-
5
- task :default => :spec
data/diplomat.gemspec DELETED
@@ -1,29 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'diplomat/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "diplomat"
8
- spec.version = Diplomat::VERSION
9
- spec.authors = ["John Hamelink"]
10
- spec.email = ["john@johnhamelink.com"]
11
- spec.description = %q{Diplomat is a simple wrapper for Consul}
12
- spec.summary = %q{Diplomat is a simple wrapper for Consul}
13
- spec.homepage = "https://github.com/johnhamelink/diplomat"
14
- spec.license = "BSD"
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake", "~> 10.3"
23
- spec.add_development_dependency "pry", "~> 0.9"
24
- spec.add_development_dependency "rspec", "~> 2.14"
25
- spec.add_development_dependency "fakes-rspec", "~> 1.0"
26
- spec.add_development_dependency "json", "~> 1.8"
27
- spec.add_development_dependency "codeclimate-test-reporter", "~> 0.3.0"
28
- spec.add_dependency "faraday", "~> 0.9"
29
- end
data/spec/check_spec.rb DELETED
@@ -1,71 +0,0 @@
1
- require 'spec_helper'
2
- require 'json'
3
- require 'base64'
4
-
5
- describe Diplomat::Check do
6
-
7
- let(:faraday) { fake }
8
-
9
- context "check" do
10
-
11
- it "checks" do
12
- json = JSON.generate(
13
- {
14
- "service:redis"=> {
15
- "Node"=>"foobar",
16
- "CheckID"=>"service:redis",
17
- "Name"=>"Service 'redis' check",
18
- "Status"=>"passing",
19
- "Notes"=>"",
20
- "Output"=>"",
21
- "ServiceID"=>"redis",
22
- "ServiceName"=>"redis"}
23
- }
24
- )
25
-
26
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
27
-
28
- check = Diplomat::Check.new(faraday)
29
-
30
- expect(check.checks["service:redis"]["Node"]).to eq("foobar")
31
- end
32
-
33
- it "register_script" do
34
- faraday.stub(:put).and_return(OpenStruct.new({ body: '', status: 200 }))
35
- check = Diplomat::Check.new(faraday)
36
- expect(check.register_script("foobar-1", "Foobar", "Foobar test", "/script/test", "10s")).to eq(true)
37
- end
38
-
39
- it "register_ttl" do
40
- faraday.stub(:put).and_return(OpenStruct.new({ body: '', status: 200 }))
41
- check = Diplomat::Check.new(faraday)
42
- expect(check.register_ttl("foobar-1", "Foobar", "Foobar test", "15s")).to eq(true)
43
- end
44
-
45
- it "deregister" do
46
- faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
47
- check = Diplomat::Check.new(faraday)
48
- expect(check.deregister("foobar-1")).to eq(true)
49
- end
50
-
51
- it "pass" do
52
- faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
53
- check = Diplomat::Check.new(faraday)
54
- expect(check.pass("foobar-1")).to eq(true)
55
- end
56
-
57
- it "warn" do
58
- faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
59
- check = Diplomat::Check.new(faraday)
60
- expect(check.warn("foobar-1")).to eq(true)
61
- end
62
-
63
- it "fail" do
64
- faraday.stub(:get).and_return(OpenStruct.new({ body: '', status: 200 }))
65
- check = Diplomat::Check.new(faraday)
66
- expect(check.fail("foobar-1")).to eq(true)
67
- end
68
-
69
- end
70
-
71
- end
data/spec/health_spec.rb DELETED
@@ -1,150 +0,0 @@
1
- require 'spec_helper'
2
- require 'json'
3
- require 'base64'
4
-
5
- describe Diplomat::Health do
6
-
7
- let(:faraday) { fake }
8
-
9
- context "health" do
10
-
11
- it "node" do
12
- json = <<EOF
13
- [
14
- {
15
- "Node": "foobar",
16
- "CheckID": "serfHealth",
17
- "Name": "Serf Health Status",
18
- "Status": "passing",
19
- "Notes": "",
20
- "Output": "",
21
- "ServiceID": "",
22
- "ServiceName": ""
23
- },
24
- {
25
- "Node": "foobar",
26
- "CheckID": "service:redis",
27
- "Name": "Service 'redis' check",
28
- "Status": "passing",
29
- "Notes": "",
30
- "Output": "",
31
- "ServiceID": "redis",
32
- "ServiceName": "redis"
33
- }
34
- ]
35
- EOF
36
-
37
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
38
-
39
- health = Diplomat::Health.new(faraday)
40
-
41
- expect(health.node("foobar")[0]["Node"]).to eq("foobar")
42
- end
43
-
44
- it "checks" do
45
- json = <<EOF
46
- [
47
- {
48
- "Node": "foobar",
49
- "CheckID": "service:redis",
50
- "Name": "Service 'redis' check",
51
- "Status": "passing",
52
- "Notes": "",
53
- "Output": "",
54
- "ServiceID": "redis",
55
- "ServiceName": "redis"
56
- }
57
- ]
58
- EOF
59
-
60
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
61
-
62
- health = Diplomat::Health.new(faraday)
63
-
64
- expect(health.checks("foobar")[0]["Node"]).to eq("foobar")
65
- end
66
-
67
- it "service" do
68
- json = <<EOF
69
- [
70
- {
71
- "Node": {
72
- "Node": "foobar",
73
- "Address": "10.1.10.12"
74
- },
75
- "Service": {
76
- "ID": "redis",
77
- "Service": "redis",
78
- "Tags": null,
79
- "Port": 8000
80
- },
81
- "Checks": [
82
- {
83
- "Node": "foobar",
84
- "CheckID": "service:redis",
85
- "Name": "Service 'redis' check",
86
- "Status": "passing",
87
- "Notes": "",
88
- "Output": "",
89
- "ServiceID": "redis",
90
- "ServiceName": "redis"
91
- },
92
- {
93
- "Node": "foobar",
94
- "CheckID": "serfHealth",
95
- "Name": "Serf Health Status",
96
- "Status": "passing",
97
- "Notes": "",
98
- "Output": "",
99
- "ServiceID": "",
100
- "ServiceName": ""
101
- }
102
- ]
103
- }
104
- ]
105
- EOF
106
-
107
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
108
-
109
- health = Diplomat::Health.new(faraday)
110
-
111
- expect(health.service("foobar")[0]["Node"]["Node"]).to eq("foobar")
112
- end
113
-
114
- it "state" do
115
- json = <<EOF
116
- [
117
- {
118
- "Node": "foobar",
119
- "CheckID": "serfHealth",
120
- "Name": "Serf Health Status",
121
- "Status": "passing",
122
- "Notes": "",
123
- "Output": "",
124
- "ServiceID": "",
125
- "ServiceName": ""
126
- },
127
- {
128
- "Node": "foobar",
129
- "CheckID": "service:redis",
130
- "Name": "Service 'redis' check",
131
- "Status": "passing",
132
- "Notes": "",
133
- "Output": "",
134
- "ServiceID": "redis",
135
- "ServiceName": "redis"
136
- }
137
- ]
138
- EOF
139
-
140
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
141
-
142
- health = Diplomat::Health.new(faraday)
143
-
144
- expect(health.state("foobar")[0]["Node"]).to eq("foobar")
145
- end
146
-
147
-
148
- end
149
-
150
- end
data/spec/kv_spec.rb DELETED
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
- require 'json'
3
- require 'base64'
4
-
5
- describe Diplomat::Kv do
6
-
7
- let(:faraday) { fake }
8
-
9
- context "keys" do
10
- let(:key) { "key" }
11
- let(:key_url) { "/v1/kv/#{key}" }
12
- let(:key_params) { "toast" }
13
-
14
- it "GET" do
15
- json = JSON.generate([{
16
- "Key" => key,
17
- "Value" => Base64.encode64(key_params),
18
- "Flags" => 0
19
- }])
20
-
21
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
22
-
23
- kv = Diplomat::Kv.new(faraday)
24
-
25
- expect(kv.get("key")).to eq("toast")
26
- end
27
-
28
- it "PUT" do
29
-
30
- json = JSON.generate([{
31
- "Key" => key,
32
- "Value" => Base64.encode64(key_params),
33
- "Flags" => 0
34
- }])
35
-
36
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
37
- faraday.stub(:put).and_return(OpenStruct.new({ body: "true\n"}))
38
- kv = Diplomat::Kv.new(faraday)
39
-
40
- expect(kv.put(key, key_params)).to eq(key_params)
41
- end
42
-
43
- it "namespaces" do
44
- json = JSON.generate([{
45
- "Key" => key,
46
- "Value" => Base64.encode64(key_params),
47
- "Flags" => 0
48
- }])
49
-
50
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
51
- faraday.stub(:put).and_return(OpenStruct.new({ body: "true\n"}))
52
- kv = Diplomat::Kv.new(faraday)
53
-
54
- expect(kv.put("toast/#{key}", key_params)).to eq(key_params)
55
- end
56
-
57
- end
58
-
59
- end
data/spec/members_spec.rb DELETED
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
- require 'json'
3
- require 'base64'
4
-
5
- describe Diplomat::Members do
6
-
7
- let(:faraday) { fake }
8
-
9
- context "member" do
10
-
11
- it "GET" do
12
- json = JSON.generate(
13
- [{
14
- "Name" => "foobar",
15
- "Addr" => "10.1.10.12",
16
- "Port" => 8301,
17
- "Tags" => {
18
- "bootstrap" => "1",
19
- "dc" => "dc1",
20
- "port" => 8300,
21
- "role" => "consul",
22
- },
23
- "Status" => 1,
24
- "ProtocolMin" => 1,
25
- "ProtocolMax" => 2,
26
- "ProtocolCur" => 2,
27
- "DelegateMin" => 1,
28
- "DelegateMax" => 3,
29
- "DelegateCur" => 3
30
- }]
31
- )
32
-
33
- faraday.stub(:get).and_return(OpenStruct.new({ body: json }))
34
-
35
- members = Diplomat::Members.new(faraday)
36
-
37
- expect(members.get[0]["Name"]).to eq("foobar")
38
- end
39
-
40
- end
41
-
42
- end
data/spec/spec_helper.rb DELETED
@@ -1,15 +0,0 @@
1
- require "bundler/setup"
2
- Bundler.setup
3
-
4
- require "codeclimate-test-reporter"
5
- CodeClimate::TestReporter.start
6
-
7
- require 'diplomat'
8
- require 'fakes-rspec'
9
-
10
- RSpec.configure do |config|
11
- config.treat_symbols_as_metadata_keys_with_true_values = true
12
- config.run_all_when_everything_filtered = true
13
- config.filter_run :focus
14
- config.order = 'random'
15
- end