lita-consul 0.0.6 → 0.0.7
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 +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
|