class Conferred

Constants

DEFAULT_ETCD_HOST
DEFAULT_ETCD_PORT
DEFAULT_ETCD_SCHEME

Public Class Methods

etcd_host() click to toggle source
# File lib/conferred.rb, line 32
def etcd_host
  # if not provided set host to default docker host ip from within a container
  @@etcd_host || ENV["CONFERRED_ETCD_HOST"] || DEFAULT_ETCD_HOST
end
etcd_host=(host) click to toggle source
# File lib/conferred.rb, line 49
def etcd_host=(host)
  @@etcd_host = host
end
etcd_port() click to toggle source
# File lib/conferred.rb, line 37
def etcd_port
  @@etcd_port || ENV["CONFERRED_ETCD_PORT"] || DEFAULT_ETCD_PORT
end
etcd_port=(port) click to toggle source
# File lib/conferred.rb, line 45
def etcd_port=(port)
  @@etcd_port = port
end
etcd_scheme() click to toggle source
# File lib/conferred.rb, line 41
def etcd_scheme
  @@etcd_scheme || ENV["CONFERRED_ETCD_SCHEME"] || DEFAULT_ETCD_SCHEME
end
etcd_scheme=(scheme) click to toggle source
# File lib/conferred.rb, line 53
def etcd_scheme=(scheme)
  @@etcd_scheme = scheme
end
etcd_setting_prefix() click to toggle source
# File lib/conferred.rb, line 82
def etcd_setting_prefix
  "#{self.etcd_scheme}://#{self.etcd_host}:#{self.etcd_port}/#{etcd_setting_namespace}"
end
method_missing(setting, *args, &block) click to toggle source
Calls superclass method
# File lib/conferred.rb, line 57
def method_missing(setting, *args, &block)
   super if setting =~ /#{provider}_setting_value/
   method = :setting_value
   method = :setting_value? if setting[-1] == "?"
   method = :setting_value! if setting[-1] == "!"
   self.send method, setting 
 end
namespace() click to toggle source
# File lib/conferred.rb, line 28
def namespace
  @@namespace || ENV["CONFERRED_ETCD_NAMESPACE"] || ""
end
namespace=(value) click to toggle source
# File lib/conferred.rb, line 24
def namespace=(value)
  @@namespace=value
end
provider() click to toggle source
# File lib/conferred.rb, line 20
def provider
  @@provider || ENV["CONFERRED_PROVIDER"] || "env"
end
provider=(value) click to toggle source

attr_writer :etcd_port, :etcd_scheme, :etcd_host

# File lib/conferred.rb, line 16
def provider=(value)
  @@provider=value
end
setting_name(method_name) click to toggle source
# File lib/conferred.rb, line 65
def setting_name(method_name)
  method_name.to_s.chomp("!").chomp("?").upcase
end
setting_value(key) click to toggle source
# File lib/conferred.rb, line 69
def setting_value(key)
  #raise "Conferred: Undefined provider (#{@@provider})" unless self.responds_to setting_method_name
  self.send(setting_method_name, key) 
end
setting_value!(key) click to toggle source
# File lib/conferred.rb, line 78
def setting_value!(key)
  self.setting_value(key) || raise("#{self.setting_name(key)} missing from environment")
end
setting_value?(key) click to toggle source
# File lib/conferred.rb, line 74
def setting_value?(key)
  self.setting_value(key) != nil
end

Private Class Methods

env_setting_value(key) click to toggle source
# File lib/conferred.rb, line 88
def env_setting_value(key)
  ENV[self.setting_name(key)]
end
etcd_setting_endpoint(key) click to toggle source
# File lib/conferred.rb, line 101
def etcd_setting_endpoint(key)
  URI("#{self.etcd_setting_prefix}#{key}")
end
etcd_setting_namespace() click to toggle source
# File lib/conferred.rb, line 105
def etcd_setting_namespace
  return "" unless self.namespace 
  return "" if self.namespace.empty?
  "#{self.namespace}/"
end
etcd_setting_value(key) click to toggle source
# File lib/conferred.rb, line 92
def etcd_setting_value(key)
  begin
    resp = JSON.parse(Net::HTTP.get(etcd_setting_endpoint(key)))
    resp["node"]["value"]
  rescue
    env_setting_value(key)
  end
end
setting_method_name() click to toggle source
# File lib/conferred.rb, line 112
def setting_method_name
  "#{self.provider}_setting_value".to_sym
end