class KumoDockerCloud::EnvironmentConfig

Constants

LOGGER

Attributes

app_name[R]
env_name[R]

Public Class Methods

new(options, logger = LOGGER) click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 10
def initialize(options, logger = LOGGER)
  @env_name    = options.fetch(:env_name)
  @config_path = options.fetch(:config_path)
  @log         = logger
  @app_name    = options.fetch(:app_name)
  @app_image = options.fetch(:app_image)
end

Public Instance Methods

config() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 68
def config
  return @config if @config

  file = File.read(config_file_path)
  erb_result = ERB.new(file).result(get_binding)
  @config = YAML.load(erb_result)
end
deploy_tag() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 26
def deploy_tag
  production? ? 'production' : 'non-production'
end
development?() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 34
def development?
  !(%w(production staging).include?(env_name))
end
error_queue_url() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 98
def error_queue_url
  @error_queue_url ||= AssetWala::SqsQueue.get_error_queue_url
end
get_binding() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 18
def get_binding
  binding
end
image_name() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 43
def image_name
  if existing_image_name?
    existing_image_name
  else
    @app_image
  end
end
image_tag() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 56
def image_tag
  image_name.split(':').last
end
plain_text_secrets() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 76
def plain_text_secrets
  @plain_text_secrets ||= Hash[
    encrypted_secrets.map do |name, cipher_text|
      @log.info "Decrypting '#{name}'"
      if cipher_text.start_with? '[ENC,'
        begin
          [name, "#{kms.decrypt cipher_text[5, cipher_text.size]}"]
        rescue
          @log.error "Error decrypting secret '#{name}' from '#{encrypted_secrets_filename}'"
          raise
        end
      else
        [name, cipher_text]
      end
    end
  ]
end
production?() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 30
def production?
  env_name == 'production'
end
rails_env(name) click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 60
def rails_env(name)
  if %w(development test cucumber demo staging production).include?(name)
    name
  else
    'demo'
  end
end
ruby_env() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 38
def ruby_env
  return 'development' if development?
  env_name
end
stack_name() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 22
def stack_name
  "#{app_name}-#{env_name}"
end
tagged_app_image(service_name) click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 51
def tagged_app_image(service_name)
  service = docker_cloud_api.service_by_stack_and_service_name(stack_name, service_name)
  service ? service.image_name : @app_image
end
tags() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 94
def tags
  [deploy_tag]
end

Private Instance Methods

config_file_path() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 121
def config_file_path
  path = File.join(config_path, "#{env_name}.yml")
  path = File.join(config_path, "development.yml") unless File.exist?(path)
  path
end
config_path() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 133
def config_path
  File.expand_path(File.join(@config_path), __FILE__)
end
docker_cloud_api() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 113
def docker_cloud_api
  @docker_cloud_api ||= KumoDockerCloud::DockerCloudApi.new
end
encrypted_secrets() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 141
def encrypted_secrets
  file = File.read(encrypted_secrets_path)
  erb_result = ERB.new(file).result(get_binding)
  @encrypted_secrets ||= YAML.load(erb_result)
end
encrypted_secrets_filename() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 137
def encrypted_secrets_filename
  File.basename encrypted_secrets_path
end
encrypted_secrets_path() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 127
def encrypted_secrets_path
  secrets_filepath = File.join(config_path, "#{env_name}_secrets.yml")
  secrets_filepath = File.join(config_path, 'development_secrets.yml') unless File.exist?(secrets_filepath)
  secrets_filepath
end
existing_image_name() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 108
def existing_image_name
  @service ||= docker_cloud_api.services_by_stack_name(stack_name).first
  @service ? @service.image_name : nil
end
existing_image_name?() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 104
def existing_image_name?
  !!existing_image_name
end
kms() click to toggle source
# File lib/kumo_dockercloud/environment_config.rb, line 117
def kms
  @kms ||= KumoKi::KMS.new
end