Class: Opsicle::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/opsicle/config.rb

Constant Summary collapse

FOG_CONFIG_PATH =
'~/.fog'
OPSICLE_CONFIG_PATH =
'./.opsicle'
MissingConfig =
Class.new(StandardError)
MissingEnvironment =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(environment) ⇒ Config

Returns a new instance of Config.



12
13
14
# File 'lib/opsicle/config.rb', line 12

def initialize(environment)
  @environment = environment.to_sym
end

Instance Attribute Details

#environmentObject (readonly)

Returns the value of attribute environment.



10
11
12
# File 'lib/opsicle/config.rb', line 10

def environment
  @environment
end

Instance Method Details

#aws_configObject



16
17
18
19
20
# File 'lib/opsicle/config.rb', line 16

def aws_config
  return @aws_config if @aws_config
  fog_config = load_config(File.expand_path(FOG_CONFIG_PATH))
  @aws_config = { access_key_id: fog_config[:aws_access_key_id], secret_access_key: fog_config[:aws_secret_access_key] }
end

#configure_aws!Object



26
27
28
# File 'lib/opsicle/config.rb', line 26

def configure_aws!
  AWS.config(aws_config)
end

#load_config(file) ⇒ Object

Raises:



30
31
32
33
34
35
36
# File 'lib/opsicle/config.rb', line 30

def load_config(file)
  raise MissingConfig, "Missing configuration file: #{file}  Run 'opsicle help'" unless File.exist?(file)
  env_config = symbolize_keys(YAML.load_file(file))[environment] rescue {}
  raise MissingEnvironment, "Configuration for the \'#{environment}\' environment could not be found in #{file}" unless env_config != nil

  env_config
end

#opsworks_configObject



22
23
24
# File 'lib/opsicle/config.rb', line 22

def opsworks_config
  @opsworks_config ||= load_config(OPSICLE_CONFIG_PATH)
end

#symbolize_keys(hash) ⇒ Object

We want all ouf our YAML loaded keys to be symbols taken from devblog.avdi.org/2009/07/14/recursively-symbolize-keys/



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/opsicle/config.rb', line 40

def symbolize_keys(hash)
  hash.inject({}){|result, (key, value)|
    new_key = case key
              when String then key.to_sym
              else key
              end
    new_value = case value
                when Hash then symbolize_keys(value)
                else value
                end
    result[new_key] = new_value
    result
  }
end