skalera-services 0.1.0 → 0.2.0
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/.ruby-version +1 -1
- data/Rakefile +37 -0
- data/bin/dummy.rb +5 -0
- data/lib/skalera/services.rb +1 -0
- data/lib/skalera/services/consul.rb +5 -0
- data/lib/skalera/services/credentials.rb +39 -0
- data/lib/skalera/services/errbit.rb +1 -0
- data/lib/skalera/services/redis.rb +1 -1
- data/lib/skalera/services/version.rb +1 -1
- data/skalera-services.gemspec +6 -0
- metadata +88 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c758968620d43b811998ddda3e2792ef03560a70
|
4
|
+
data.tar.gz: 3799661c72f7b7a0bc5648f03dae68ac1ba56030
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dce29c6b934aea5ae3812ac0268de1d905daa090ca5ec525461bc49b9dd10df55b6471bc12ea9e8ee9619013fe0d1e2dd7eac0ceaa80e9e9bbed327e875f8909
|
7
|
+
data.tar.gz: 99cfe15a74c6dc3c3004d0c7c259dc5ca849ca30622413d53626d06ac6599d6712d13282b3d613855ceb8c151a9a0c75cf29f7a7d5b7a30ce35f0c31885cbe33
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.2.
|
1
|
+
2.2.3
|
data/Rakefile
CHANGED
@@ -1 +1,38 @@
|
|
1
|
+
exec('bundle', 'exec', $PROGRAM_NAME, *ARGV) unless ENV['BUNDLE_GEMFILE']
|
2
|
+
|
1
3
|
require 'bundler/gem_tasks'
|
4
|
+
require 'rubocop/rake_task'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
|
7
|
+
task default: [:spec, :rubocop]
|
8
|
+
|
9
|
+
task spec: [:'spec:unit', :'spec:integration']
|
10
|
+
|
11
|
+
def rspec_options(task)
|
12
|
+
# output xml if we are running through jenkins
|
13
|
+
return unless ENV['JENKINS_HOME']
|
14
|
+
opts = [
|
15
|
+
'--format RspecJunitFormatter',
|
16
|
+
"--out reports/#{task.name}.xml ",
|
17
|
+
'--format documentation'
|
18
|
+
]
|
19
|
+
task.rspec_opts = opts.join(' ')
|
20
|
+
end
|
21
|
+
|
22
|
+
namespace :spec do
|
23
|
+
ENV['COVERAGE'] = 'yes'
|
24
|
+
|
25
|
+
desc 'run unit tests'
|
26
|
+
RSpec::Core::RakeTask.new(:unit) do |task|
|
27
|
+
rspec_options(task)
|
28
|
+
task.pattern = 'spec/unit/**/*_spec.rb'
|
29
|
+
end
|
30
|
+
|
31
|
+
desc 'run integration tests'
|
32
|
+
RSpec::Core::RakeTask.new(:integration) do |task|
|
33
|
+
rspec_options(task)
|
34
|
+
task.pattern = 'spec/integration/**/*_spec.rb'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
RuboCop::RakeTask.new
|
data/bin/dummy.rb
CHANGED
@@ -14,8 +14,13 @@ Skalera::Services.bootstrap(SERVICE_NAME)
|
|
14
14
|
begin
|
15
15
|
# run your stuff here...
|
16
16
|
influx = Skalera::Services::InfluxDB.instance('metrics')
|
17
|
+
puts influx
|
17
18
|
redis = Skalera::Services::Redis.instance
|
19
|
+
puts redis
|
18
20
|
DB = Skalera::Services::Postgres.instance('postgres')
|
21
|
+
Skalera::Services::Credentials.for('vcenter') do |host, user, password|
|
22
|
+
puts "#{host} / #{user} / #{password}"
|
23
|
+
end
|
19
24
|
rescue => e
|
20
25
|
STDERR.puts("#{e.class.name}: #{e.message}")
|
21
26
|
STDERR.puts(e.backtrace)
|
data/lib/skalera/services.rb
CHANGED
@@ -14,8 +14,13 @@ module Skalera
|
|
14
14
|
rescue Diplomat::KeyNotFound
|
15
15
|
Diplomat.put("services/#{service_name}", service_name)
|
16
16
|
rescue Faraday::ConnectionFailed => e
|
17
|
+
# TODO: use logging
|
17
18
|
STDERR.puts("ERROR: could not lookup host #{consul}")
|
18
19
|
raise e
|
20
|
+
rescue Faraday::ClientError => e
|
21
|
+
# TODO: use logging
|
22
|
+
STDERR.puts("ERROR: #{e}")
|
23
|
+
raise e
|
19
24
|
end
|
20
25
|
end
|
21
26
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'diplomat'
|
2
|
+
|
3
|
+
module Skalera
|
4
|
+
module Services
|
5
|
+
class Credentials
|
6
|
+
def self.for(service_name)
|
7
|
+
creds = Diplomat::Kv.get("credentials/#{service_name}", recurse: true)
|
8
|
+
|
9
|
+
users = extract(creds, service_name, 'username')
|
10
|
+
passwords = extract(creds, service_name, 'password')
|
11
|
+
|
12
|
+
users.map do |host, username|
|
13
|
+
password = passwords[host]
|
14
|
+
if host.nil? || username.nil? || password.nil?
|
15
|
+
# TODO: use logging
|
16
|
+
STDERR.puts "host: #{host}, username: #{username}, password: '#{password}'"
|
17
|
+
next
|
18
|
+
end
|
19
|
+
yield host, username, password if block_given?
|
20
|
+
[host, username, password]
|
21
|
+
end.compact # in case there is an error
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.extract(creds, key, field)
|
25
|
+
result = {}
|
26
|
+
creds.select { |c| c[:key].match(%r{/#{field}$}) }.each do |hash|
|
27
|
+
host = hash[:key].match(%r{#{key}/(.+)/#{field}})[1]
|
28
|
+
result[host] = hash[:value]
|
29
|
+
end
|
30
|
+
result
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.add(service_name, host, username, password)
|
34
|
+
Diplomat::Kv.put("credentials/#{service_name}/#{host}/username", username)
|
35
|
+
Diplomat::Kv.put("credentials/#{service_name}/#{host}/password", password)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -20,6 +20,7 @@ module Skalera
|
|
20
20
|
Diplomat.get(key_name(service_name))
|
21
21
|
rescue Diplomat::KeyNotFound
|
22
22
|
key = SecureRandom.hex(8)
|
23
|
+
# TODO: use logging
|
23
24
|
puts "created errbit key '#{key}' for service '#{service_name}'"
|
24
25
|
Diplomat::Kv.put(key_name(service_name), key)
|
25
26
|
end
|
@@ -3,7 +3,7 @@ require 'redis'
|
|
3
3
|
module Skalera
|
4
4
|
module Services
|
5
5
|
class Redis
|
6
|
-
def self.instance(database=0)
|
6
|
+
def self.instance(database = 0)
|
7
7
|
redis_config = Diplomat::Service.get('redis')
|
8
8
|
|
9
9
|
redis = ::Redis.new(url: url(password, redis_config.Address, redis_config.ServicePort, database))
|
data/skalera-services.gemspec
CHANGED
@@ -28,4 +28,10 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 1'
|
29
29
|
spec.add_development_dependency 'rake', '~> 10'
|
30
30
|
spec.add_development_dependency 'pry', '~> 0'
|
31
|
+
spec.add_development_dependency 'rspec', '~> 3'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0'
|
33
|
+
spec.add_development_dependency 'simplecov', '~> 0'
|
34
|
+
spec.add_development_dependency 'simplecov-json', '~> 0'
|
35
|
+
spec.add_development_dependency 'simplecov-rcov', '~> 0'
|
36
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0'
|
31
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skalera-services
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Englund
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: airbrake
|
@@ -136,6 +136,90 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '3'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '3'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: simplecov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: simplecov-json
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: simplecov-rcov
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rspec_junit_formatter
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
139
223
|
description:
|
140
224
|
email:
|
141
225
|
- martin@englund.nu
|
@@ -159,6 +243,7 @@ files:
|
|
159
243
|
- lib/skalera/services.rb
|
160
244
|
- lib/skalera/services/airbrake.rb
|
161
245
|
- lib/skalera/services/consul.rb
|
246
|
+
- lib/skalera/services/credentials.rb
|
162
247
|
- lib/skalera/services/errbit.rb
|
163
248
|
- lib/skalera/services/influxdb.rb
|
164
249
|
- lib/skalera/services/postgres.rb
|
@@ -185,9 +270,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
270
|
version: '0'
|
186
271
|
requirements: []
|
187
272
|
rubyforge_project:
|
188
|
-
rubygems_version: 2.4.5
|
273
|
+
rubygems_version: 2.4.5.1
|
189
274
|
signing_key:
|
190
275
|
specification_version: 4
|
191
276
|
summary: Helper gem to handle services in consul.
|
192
277
|
test_files: []
|
193
|
-
has_rdoc:
|