class F2yAwsTool::Deploy

Public Class Methods

new(options) click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 4
def initialize(options)
  @options = options
end

Public Instance Methods

client() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 20
def client
  @client ||= Aws::OpsWorks::Client.new(
      region: region,
      access_key_id: access_key_id,
      secret_access_key: secret_access_key,
      logger: aws_logger,
      log_level: aws_log_level
  )
end
run() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 8
def run
  deploy_id = create_deployment.deployment_id
  deployed_app = describe_deployment(deploy_id)
  log.info(sprintf("ID: %s, STATUS: %s", deploy_id, deployed_app.status))
  if wait?
    client.wait_until(:deployment_successful, deployment_ids: [deploy_id])
    deployed_app = describe_deployment(deploy_id)
    log.info(sprintf("ID: %s, STATUS: %s, DURATION: %s", deploy_id, deployed_app.status, Time.at(deployed_app.duration).utc.strftime("%H:%M:%S")))
  end
  return {deployment_id: deploy_id, status: deployed_app.status.to_sym}
end

Private Instance Methods

access_key_id() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 37
def access_key_id
  @access_key_id ||= @options.fetch(:access_key_id){ENV.fetch('AWS_ACCESS_KEY_ID')}
end
app_id() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 49
def app_id
  @app_id ||= config.fetch(:app_id)
end
aws_log_level() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 77
def aws_log_level
  @aws_log_level ||= log_level.downcase.to_sym
end
aws_logger() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 73
def aws_logger
  @log_aws ||= @options.fetch(:log_aws) ? log : nil
end
comment() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 69
def comment
  @comment ||= @options.fetch(:comment)
end
config() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 103
def config
  @config ||= begin
    HashWithIndifferentAccess.new(YAML.load(File.read(target.fetch(:file))))
  rescue KeyError
    target
  end
end
create_deployment() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 85
def create_deployment
  client.create_deployment(
      {
          stack_id: stack_id,
          app_id: app_id,
          command: {
              name: "deploy",
              args: {"migrate" => ["#{migrate?}"]},
          },
          comment: comment
      }
  )
end
describe_deployment(deploy_id) click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 32
def describe_deployment(deploy_id)
  client.describe_deployments({deployment_ids: [deploy_id]}).deployments.first
end
log() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 81
def log
  @log ||= F2yAwsTool.log(log_level)
end
log_level() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 65
def log_level
  @log_level ||= @options.fetch(:log_level)
end
migrate?() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 57
def migrate?
  @migrate ||= @options.fetch(:migrate)
end
region() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 53
def region
  @region ||= config.fetch(:region){ENV.fetch('AWS_REGION')}
end
secret_access_key() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 41
def secret_access_key
  @secret_access_key ||= @options.fetch(:secret_access_key){ENV.fetch('AWS_SECRET_ACCESS_KEY')}
end
stack_id() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 45
def stack_id
  @stack_id ||= config.fetch(:stack_id)
end
target() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 99
def target
  @target ||= HashWithIndifferentAccess.new(@options.fetch(:target))
end
wait?() click to toggle source
# File lib/f2y_aws_tool/deploy.rb, line 61
def wait?
  @wait ||= @options.fetch(:wait)
end