Sha256: 6e40fd159b0cf0b27c5ee918c7e194a8eb7e83d4acf7a47a94a06e9d8561b63c
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
require 'diplomat' module Skalera module Services class Credentials def self.for(service_name) creds = Diplomat::Kv.get("credentials/#{service_name}", recurse: true) users = extract(creds, service_name, 'username') passwords = extract(creds, service_name, 'password') users.map do |host, username| password = passwords[host] if host.nil? || username.nil? || password.nil? # TODO: use logging STDERR.puts "host: #{host}, username: #{username}, password: '#{password}'" next end yield host, username, password if block_given? [host, username, password] end.compact # in case there is an error end def self.extract(creds, key, field) result = {} creds.select { |c| c[:key].match(%r{/#{field}$}) }.each do |hash| host = hash[:key].match(%r{#{key}/(.+)/#{field}})[1] result[host] = hash[:value] end result end def self.add(service_name, host, username, password) Diplomat::Kv.put("credentials/#{service_name}/#{host}/username", username) Diplomat::Kv.put("credentials/#{service_name}/#{host}/password", password) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
skalera-services-0.2.1 | lib/skalera/services/credentials.rb |
skalera-services-0.2.0 | lib/skalera/services/credentials.rb |