class Skalera::Services::Credentials
Public Class Methods
add(service_name, host, username, password)
click to toggle source
# File lib/skalera/services/credentials.rb, line 36 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
extract(creds, key, field)
click to toggle source
# File lib/skalera/services/credentials.rb, line 26 def self.extract(creds, key, field) result = {} # TODO: handle errors when decoding the contents 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
for(service_name) { |host, username, password| ... }
click to toggle source
# File lib/skalera/services/credentials.rb, line 6 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 rescue Diplomat::KeyNotFound STDERR.puts "ERROR: key not found: credentials/#{service_name}" end