lita-consul 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.rubocop.yml +10 -0
- data/.travis.yml +4 -6
- data/Gemfile +1 -1
- data/Rakefile +5 -3
- data/lib/lita-consul.rb +5 -5
- data/lib/lita/handlers/consul.rb +56 -55
- data/lita-consul.gemspec +20 -19
- data/locales/en.yml +10 -0
- data/spec/lita/handlers/consul_spec.rb +28 -28
- data/spec/spec_helper.rb +22 -7
- metadata +20 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 228253cda33615f45e9c3534c5f2021e533ccf10
|
4
|
+
data.tar.gz: 37dbddaec48469f56ff89abd0beefeb1a4ff4099
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ab37ec998d27af58cc7cdb423c5a66fcddafb8e8f2782967150e4233ba161b69f3683fac80e817e621e6868d3e73b7fa9318d0c9758f51635380d649f0ea491
|
7
|
+
data.tar.gz: fe69edfcae89d93e99a9cacbb7b76b7ea0821a06fb5f02c051a695ecc14ad2019de62b97da745a56390ec5cb38f087b1beb1dd211f295e54d3e1e4a2176c05b5
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color --profile 5
|
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
3
4
|
|
4
5
|
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
RuboCop::RakeTask.new(:rubocop)
|
5
7
|
|
6
|
-
task default: :spec
|
8
|
+
task default: [:spec, :rubocop]
|
data/lib/lita-consul.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require 'lita'
|
2
2
|
|
3
3
|
Lita.load_locales Dir[File.expand_path(
|
4
|
-
File.join(
|
4
|
+
File.join('..', '..', 'locales', '*.yml'), __FILE__
|
5
5
|
)]
|
6
6
|
|
7
|
-
require
|
7
|
+
require 'lita/handlers/consul'
|
8
8
|
|
9
9
|
Lita::Handlers::Consul.template_root File.expand_path(
|
10
|
-
File.join(
|
11
|
-
|
10
|
+
File.join('..', '..', 'templates'),
|
11
|
+
__FILE__
|
12
12
|
)
|
data/lib/lita/handlers/consul.rb
CHANGED
@@ -1,80 +1,81 @@
|
|
1
|
-
require
|
1
|
+
require 'base64'
|
2
2
|
|
3
3
|
module Lita
|
4
4
|
module Handlers
|
5
5
|
class Consul < Handler
|
6
|
+
config :consul_host, type: String, default: 'http://127.0.0.1'
|
7
|
+
config :consul_port, type: String, default: '8500'
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
route(
|
10
|
+
%r{^consul\sget\s(?<key>[\w\-\/]+)},
|
11
|
+
:consul_get,
|
12
|
+
command: true,
|
13
|
+
help: {
|
14
|
+
t('help.get.syntax') => t('help.get.desc')
|
15
|
+
}
|
16
|
+
)
|
9
17
|
|
10
|
-
route
|
11
|
-
|
12
|
-
|
18
|
+
route(
|
19
|
+
%r{^consul\sset\s(?<key>[\w\-\/]+)\s(?<value>[\w\-\/]+)},
|
20
|
+
:consul_set,
|
21
|
+
command: true,
|
22
|
+
help: {
|
23
|
+
t('help.set.syntax') => t('help.set.desc')
|
24
|
+
}
|
25
|
+
)
|
13
26
|
|
14
|
-
route
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
27
|
+
route(
|
28
|
+
/^consul\smembers$/,
|
29
|
+
:consul_members,
|
30
|
+
command: true,
|
31
|
+
help: {
|
32
|
+
t('help.members.syntax') => t('help.members.desc')
|
33
|
+
}
|
34
|
+
)
|
21
35
|
|
22
36
|
def consul_members(response)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
response.reply e.message
|
32
|
-
end
|
37
|
+
resp = http.get("#{api_url}/catalog/nodes")
|
38
|
+
replies = []
|
39
|
+
MultiJson.load(resp.body).each do |node|
|
40
|
+
replies << "#{node['Node']} - #{node['Address']}"
|
41
|
+
end
|
42
|
+
response.reply replies.join("\n")
|
43
|
+
rescue Faraday::ConnectionFailed => e
|
44
|
+
response.reply e.message
|
33
45
|
end
|
34
46
|
|
35
47
|
def consul_get(response)
|
36
|
-
key = response.
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
response.reply e.message
|
42
|
-
end
|
48
|
+
key = response.match_data['key']
|
49
|
+
value = get_key_value(key)
|
50
|
+
response.reply "#{key} = #{value}"
|
51
|
+
rescue Faraday::ConnectionFailed => e
|
52
|
+
response.reply e.message
|
43
53
|
end
|
44
54
|
|
45
55
|
def consul_set(response)
|
46
|
-
key = response.
|
47
|
-
value = response.
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
response.reply e.message
|
54
|
-
end
|
56
|
+
key = response.match_data['key']
|
57
|
+
value = response.match_data['value']
|
58
|
+
http.put("#{api_url}/kv/#{key}", value)
|
59
|
+
value = get_key_value(key)
|
60
|
+
response.reply "#{key} = #{value}"
|
61
|
+
rescue Faraday::ConnectionFailed => e
|
62
|
+
response.reply e.message
|
55
63
|
end
|
56
64
|
|
57
65
|
private
|
58
66
|
|
59
67
|
def get_key_value(key)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
end
|
68
|
+
resp = http.get("#{api_url}/kv/#{key}")
|
69
|
+
obj = MultiJson.load(resp.body)
|
70
|
+
if obj[0]['Value'].nil?
|
71
|
+
'null'
|
72
|
+
else
|
73
|
+
Base64.decode64(obj[0]['Value'])
|
74
|
+
end
|
68
75
|
end
|
69
|
-
|
70
|
-
def api_url
|
71
|
-
host = "http://127.0.0.1"
|
72
|
-
port = "8500"
|
73
|
-
|
74
|
-
host = config.consul_host if config.consul_host
|
75
|
-
port = config.consul_port if config.consul_port
|
76
76
|
|
77
|
-
|
77
|
+
def api_url
|
78
|
+
"#{config.consul_host}:#{config.consul_port}/v1"
|
78
79
|
end
|
79
80
|
|
80
81
|
Lita.register_handler(self)
|
data/lita-consul.gemspec
CHANGED
@@ -1,26 +1,27 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
4
|
-
spec.authors = [
|
5
|
-
spec.email = [
|
6
|
-
spec.description =
|
7
|
-
spec.summary =
|
8
|
-
spec.homepage =
|
9
|
-
spec.license =
|
10
|
-
spec.metadata = {
|
2
|
+
spec.name = 'lita-consul'
|
3
|
+
spec.version = '0.0.7'
|
4
|
+
spec.authors = ['David Pires']
|
5
|
+
spec.email = ['david.pires@gmail.com']
|
6
|
+
spec.description = 'Lita handler for Consul'
|
7
|
+
spec.summary = 'A lita handler for interacting with Consul'
|
8
|
+
spec.homepage = 'https://github.com/dpires/lita-consul.git'
|
9
|
+
spec.license = 'MIT'
|
10
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
11
11
|
|
12
|
-
spec.files = `git ls-files`.split(
|
12
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
13
13
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
-
spec.require_paths = [
|
15
|
+
spec.require_paths = ['lib']
|
16
16
|
|
17
|
-
spec.add_runtime_dependency
|
17
|
+
spec.add_runtime_dependency 'lita', '>= 4.6'
|
18
18
|
|
19
|
-
spec.add_development_dependency
|
20
|
-
spec.add_development_dependency
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
19
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
20
|
+
spec.add_development_dependency 'coveralls'
|
21
|
+
spec.add_development_dependency 'pry-byebug'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rack-test'
|
24
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
25
|
+
spec.add_development_dependency 'rubocop'
|
26
|
+
spec.add_development_dependency 'simplecov'
|
26
27
|
end
|
data/locales/en.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Lita::Handlers::Consul, lita_handler: true do
|
4
4
|
describe 'lita routes' do
|
@@ -11,10 +11,10 @@ describe Lita::Handlers::Consul, lita_handler: true do
|
|
11
11
|
allow_any_instance_of(Faraday::Connection).to receive(:get).and_return(response)
|
12
12
|
allow_any_instance_of(Faraday::Connection).to receive(:put).and_return(response)
|
13
13
|
end
|
14
|
-
|
15
|
-
let(:response) { double(
|
16
|
-
let(:single_key_response)
|
17
|
-
%
|
14
|
+
|
15
|
+
let(:response) { double('Faraday::Response') }
|
16
|
+
let(:single_key_response) do
|
17
|
+
%(
|
18
18
|
[
|
19
19
|
{
|
20
20
|
"CreateIndex":67,
|
@@ -25,11 +25,11 @@ describe Lita::Handlers::Consul, lita_handler: true do
|
|
25
25
|
"Value":"dGVzdGluZw=="
|
26
26
|
}
|
27
27
|
]
|
28
|
-
|
29
|
-
|
28
|
+
)
|
29
|
+
end
|
30
30
|
|
31
|
-
let(:null_value_response)
|
32
|
-
%
|
31
|
+
let(:null_value_response) do
|
32
|
+
%(
|
33
33
|
[
|
34
34
|
{
|
35
35
|
"CreateIndex":67,
|
@@ -40,11 +40,11 @@ describe Lita::Handlers::Consul, lita_handler: true do
|
|
40
40
|
"Value":null
|
41
41
|
}
|
42
42
|
]
|
43
|
-
|
44
|
-
|
43
|
+
)
|
44
|
+
end
|
45
45
|
|
46
|
-
let(:new_key_response)
|
47
|
-
%
|
46
|
+
let(:new_key_response) do
|
47
|
+
%(
|
48
48
|
[
|
49
49
|
{
|
50
50
|
"CreateIndex":67,
|
@@ -55,23 +55,23 @@ describe Lita::Handlers::Consul, lita_handler: true do
|
|
55
55
|
"Value":"d3d3LnRlc3QuY29t"
|
56
56
|
}
|
57
57
|
]
|
58
|
-
|
59
|
-
|
58
|
+
)
|
59
|
+
end
|
60
60
|
|
61
|
-
let(:members_response)
|
62
|
-
%
|
61
|
+
let(:members_response) do
|
62
|
+
%(
|
63
63
|
[
|
64
64
|
{"Node":"node1.node.consul","Address":"192.168.0.33"},
|
65
65
|
{"Node":"node2.node.consul","Address":"192.168.0.34"}
|
66
66
|
]
|
67
|
-
|
68
|
-
|
67
|
+
)
|
68
|
+
end
|
69
69
|
|
70
70
|
describe '#consul members' do
|
71
71
|
it 'should catch connection error' do
|
72
|
-
allow_any_instance_of(Faraday::Connection).to receive(:get).and_raise(Faraday::ConnectionFailed.new(
|
72
|
+
allow_any_instance_of(Faraday::Connection).to receive(:get).and_raise(Faraday::ConnectionFailed.new('Connection refused - connect(2)'))
|
73
73
|
send_command('consul members')
|
74
|
-
expect(replies.last).to eq('Connection refused - connect(2)')
|
74
|
+
expect(replies.last).to eq('Connection refused - connect(2)')
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'should list member nodes' do
|
@@ -83,36 +83,36 @@ describe Lita::Handlers::Consul, lita_handler: true do
|
|
83
83
|
|
84
84
|
describe '#consul get' do
|
85
85
|
it 'should catch error when exception occurs' do
|
86
|
-
allow_any_instance_of(Lita::Handlers::Consul).to receive(:get_key_value).and_raise(Faraday::ConnectionFailed.new(
|
86
|
+
allow_any_instance_of(Lita::Handlers::Consul).to receive(:get_key_value).and_raise(Faraday::ConnectionFailed.new('Connection refused - connect(2)'))
|
87
87
|
send_command('consul get mykey')
|
88
|
-
expect(replies.last).to eq('Connection refused - connect(2)')
|
88
|
+
expect(replies.last).to eq('Connection refused - connect(2)')
|
89
89
|
end
|
90
90
|
|
91
91
|
it 'should return value for key' do
|
92
92
|
allow(response).to receive(:body).and_return(single_key_response)
|
93
93
|
send_command('consul get mykey')
|
94
|
-
expect(replies.last).to eq(
|
94
|
+
expect(replies.last).to eq('mykey = testing')
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'should return null value for key' do
|
98
98
|
allow(response).to receive(:body).and_return(null_value_response)
|
99
99
|
send_command('consul get mykey')
|
100
|
-
expect(replies.last).to eq(
|
100
|
+
expect(replies.last).to eq('mykey = null')
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
104
|
describe '#consul set' do
|
105
105
|
it 'should catch error when exception occurs' do
|
106
|
-
allow_any_instance_of(Lita::Handlers::Consul).to receive(:get_key_value).and_raise(Faraday::ConnectionFailed.new(
|
106
|
+
allow_any_instance_of(Lita::Handlers::Consul).to receive(:get_key_value).and_raise(Faraday::ConnectionFailed.new('Connection refused - connect(2)'))
|
107
107
|
send_command('consul set mykey value')
|
108
|
-
expect(replies.last).to eq('Connection refused - connect(2)')
|
108
|
+
expect(replies.last).to eq('Connection refused - connect(2)')
|
109
109
|
end
|
110
110
|
|
111
111
|
it 'should set and return value for key' do
|
112
112
|
allow(response).to receive(:body).and_return(new_key_response)
|
113
113
|
allow(response).to receive(:status).and_return(200)
|
114
114
|
send_command('consul set myapp/config/url www.test.com')
|
115
|
-
expect(replies.last).to eq(
|
115
|
+
expect(replies.last).to eq('myapp/config/url = www.test.com')
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,29 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
3
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
4
|
SimpleCov::Formatter::HTMLFormatter,
|
5
5
|
Coveralls::SimpleCov::Formatter
|
6
6
|
]
|
7
|
-
SimpleCov.start { add_filter
|
7
|
+
SimpleCov.start { add_filter '/spec/' }
|
8
8
|
|
9
|
-
require
|
10
|
-
require
|
9
|
+
require 'lita-consul'
|
10
|
+
require 'lita/rspec'
|
11
11
|
|
12
|
-
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
13
|
-
# was generated with Lita 4, the compatibility mode should be left disabled.
|
14
12
|
Lita.version_3_compatibility_mode = false
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.expect_with :rspec do |expectations|
|
16
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
17
|
+
end
|
18
|
+
|
19
|
+
config.mock_with :rspec do |mocks|
|
20
|
+
mocks.verify_partial_doubles = true
|
21
|
+
end
|
22
|
+
|
23
|
+
config.filter_run :focus
|
24
|
+
config.run_all_when_everything_filtered = true
|
25
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
26
|
+
config.order = :random
|
27
|
+
|
28
|
+
Kernel.srand config.seed
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-consul
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Pires
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: coveralls
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: pry-byebug
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +109,7 @@ dependencies:
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: 3.0.0
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: rubocop
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - ">="
|
@@ -109,7 +123,7 @@ dependencies:
|
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: simplecov
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
129
|
- - ">="
|
@@ -130,6 +144,8 @@ extensions: []
|
|
130
144
|
extra_rdoc_files: []
|
131
145
|
files:
|
132
146
|
- ".gitignore"
|
147
|
+
- ".rspec"
|
148
|
+
- ".rubocop.yml"
|
133
149
|
- ".travis.yml"
|
134
150
|
- Gemfile
|
135
151
|
- LICENSE
|