class RHC::Config

Responsible for encapsulating the loading and retrieval of OpenShift configuration files and converting them to commandline option equivalents. It also provides the converse option - converting a set of commandline options back into a config file.

In general, the values stored in the config should be identical (require little or no type conversion) to their option form. As new global options are added, only this class should have to change to persist that option.

During normal use, a new Config object should load the appropriate settings and those settings should be converted into commandline option defaults.

TODO: Encapsulate config writing to the home location TODO: Allow the config object to initialized with a path TODO: Remove deprecated methods, remove extra sources.

Constants

OPTIONS

Option name [config_key type comment_string_for_config]

if nil, == key  nil == string  won't be written to file if nil

Public Class Methods

default() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 86
def self.default
  @default ||= RHC::Config.new
end
initialize() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 100
def self.initialize
  @default = nil
  default
end
method_missing(method, *args, &block) click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 91
def self.method_missing(method, *args, &block)
  if default.respond_to?(method)
    default.send(method, *args, &block)
  else
    raise NoMethodError, method
  end
end
new() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 106
def initialize
  set_defaults
end
options_to_config(options) click to toggle source
# File lib/rhc/config.rb, line 64
def self.options_to_config(options)
  OPTIONS.inject([]) do |arr, (name, opts)|
    opts ||= []
    next arr unless opts[2]
    value = options[name]
    arr.concat(opts[2].each_line.to_a.map(&:strip).map{ |s| "# #{s}" })
    arr << "#{value.nil? ? '#' : ''}#{opts[0] || name}=#{self.type_to_config(opts[1], value)}"
    arr << ""
    arr
  end.join("\n")
end
type_to_config(type, value) click to toggle source
# File lib/rhc/config.rb, line 76
def self.type_to_config(type, value)
  case type
  when :integer, :boolean
    value.nil? ? "<#{type}>" : value
  else
    value.nil? ? "<#{type || 'string'}>" : value
  end
end

Public Instance Methods

[](key) click to toggle source
# File lib/rhc/config.rb, line 159
def [](key)
  lazy_init

  # evaluate in cascading order
  configs = [@opts, @opts_config, @env_config, @local_config, @global_config, @defaults]
  result = nil
  configs.each do |conf|
    result = conf[key] if !conf.nil?
    break if !result.nil?
  end

  result
end
check_cpath(opts) click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 209
def check_cpath(opts)
  unless opts["config"].nil?
    opts_config_path = File.expand_path(opts["config"])
    if !File.readable?(opts_config_path)
      raise Errno::EACCES.new "Could not open config file: #{@opts_config_path}"
    else
      set_opts_config(opts_config_path)
    end
  end
end
config_path() click to toggle source

#config_path

authoritive configuration path this is used to determine where config options should be written to when a script modifies the config such as in rhc setup

# File lib/rhc/config.rb, line 251
def config_path
  @config_path ||= local_config_path
end
default_proxy() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 272
def default_proxy
  @default_proxy ||= (
    proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
    if proxy
      if proxy !~ %r^(\w+):\/\// then
        proxy = "http://#{proxy}"
      end
      ENV['http_proxy'] = proxy
      proxy_uri = URI.parse(ENV['http_proxy'])
      Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
    else
      Net::HTTP
    end
  )
end
default_rhlogin() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 267
def default_rhlogin
  get_value('default_rhlogin')
end
get_value(key) click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 174
def get_value(key)
  self[key]
end
global_config_path() click to toggle source

DEPRECATED - may be made private

# File lib/rhc/config.rb, line 221
def global_config_path
  linux_cfg = '/etc/openshift/' + conf_name
  File.exists?(linux_cfg) ? linux_cfg : File.join(File.expand_path(File.dirname(__FILE__) + "/../../conf"), conf_name)
end
has_global_config?() click to toggle source
# File lib/rhc/config.rb, line 226
def has_global_config?
  lazy_init
  !@global_config.nil?
end
has_local_config?() click to toggle source
# File lib/rhc/config.rb, line 231
def has_local_config?
  lazy_init
  !@local_config.nil?
end
has_opts_config?() click to toggle source
# File lib/rhc/config.rb, line 236
def has_opts_config?
  !@opts_config.nil?
end
home_conf_path() click to toggle source
# File lib/rhc/config.rb, line 262
def home_conf_path
  home_conf_dir
end
home_dir() click to toggle source
# File lib/rhc/config.rb, line 258
def home_dir
  RHC::Config.home_dir
end
path() click to toggle source
# File lib/rhc/config.rb, line 254
def path
  config_path
end
proxy_vars() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 294
def proxy_vars
  Hash[[:address,:user,:pass,:port].map do |x|
    [x,default_proxy.instance_variable_get("@proxy_#{x}")]
  end]
end
read_config_files() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 111
def read_config_files
  load_config_files
end
save!(options) click to toggle source
# File lib/rhc/config.rb, line 152
def save!(options)
  File.open(path, 'w'){ |f| f.puts self.class.options_to_config(options) }
  @opts, @opts_config, @local_config, @global_config = nil
  load_config_files
  self
end
set_defaults() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 116
def set_defaults
  @defaults = RHC::Vendor::ParseConfig.new()
  @opts  = RHC::Vendor::ParseConfig.new() # option switches that override config file

  @env_config = RHC::Vendor::ParseConfig.new()
  @global_config = nil
  @local_config = nil
  @opts_config = nil # config file passed in the options

  @default_proxy = nil

  @defaults.add('libra_server', 'openshift.redhat.com')
  @env_config.add('libra_server', ENV['LIBRA_SERVER']) if ENV['LIBRA_SERVER']

  @opts_config_path = nil
end
set_local_config(conf_path, must_exist=true) click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 184
def set_local_config(conf_path, must_exist=true)
  conf_path = File.expand_path(conf_path)
  @config_path = conf_path if @opts_config_path.nil?
  @local_config = RHC::Vendor::ParseConfig.new(conf_path)
rescue Errno::EACCES => e
  raise Errno::EACCES.new "Could not open config file: #{e.message}" if must_exist
end
set_opts_config(conf_path) click to toggle source

DEPRECATED - needs to be renamed to something cleaner

# File lib/rhc/config.rb, line 193
def set_opts_config(conf_path)
  @opts_config_path = File.expand_path(conf_path)
  @config_path = @opts_config_path
  @opts_config = RHC::Vendor::ParseConfig.new(@opts_config_path) if File.exists?(@opts_config_path)
rescue Errno::EACCES => e
  raise Errno::EACCES.new "Could not open config file: #{e.message}"
end
should_run_ssh_wizard?() click to toggle source

DEPRECATED - should be moved to Helpers

# File lib/rhc/config.rb, line 241
def should_run_ssh_wizard?
  not File.exists? ssh_priv_key_file_path
end
to_options() click to toggle source
# File lib/rhc/config.rb, line 133
def to_options
  OPTIONS.inject({}) do |h, (name, opts)|
      opts = Array(opts)
      value = self[opts[0] || name.to_s]
      if value
        value = case opts[1]
                when :integer
                  Integer(value)
                when :boolean
                  !!(value =~ %r^\s*(y|yes|1|t|true)\s*$/)
                else
                  value unless value.blank?
                end
        h[name] = value unless value.nil?
      end
      h
    end
end
use_config(path) click to toggle source
# File lib/rhc/config.rb, line 201
def use_config(path)
  path = File.expand_path(path)
  set_opts_config(path)
rescue => e
  raise ArgumentError, "Unable to read configuration file: #{e.message}", $!.backtrace
end
username() click to toggle source

DEPRECATED - underlying value and command option needs to be migrated to login

# File lib/rhc/config.rb, line 179
def username
  self['default_rhlogin']
end
using_proxy?() click to toggle source

DEPRECATED - will be removed when old commands are gone

# File lib/rhc/config.rb, line 289
def using_proxy?
  default_proxy.instance_variable_get(:@is_proxy_class) || false
end