class Oops::OpsworksDeploy

Attributes

app_name[RW]
stack_name[RW]

Public Class Methods

new(app_name, stack_name) click to toggle source
# File lib/oops/opsworks_deploy.rb, line 5
def initialize(app_name, stack_name)
  @client = Aws::OpsWorks::Client.new region: 'us-east-1'
  self.stack_name = stack_name
  self.app_name = app_name
end

Public Instance Methods

deploy(file_url) click to toggle source
# File lib/oops/opsworks_deploy.rb, line 11
def deploy(file_url)
  @client.update_app(app_id: app_id, app_source: { url: file_url })
  instance_ids = @client.describe_instances(stack_id: stack_id).instances.map(&:instance_id).to_a
  deployment = @client.create_deployment(stack_id: stack_id, app_id: app_id, command: { name: 'deploy', args: { "migrate"=>["true"] } }, instance_ids: instance_ids )
  Deployment.new(@client, deployment)
end

Private Instance Methods

app_id() click to toggle source
# File lib/oops/opsworks_deploy.rb, line 46
def app_id
  @app_id ||= get_by_name(@client.describe_apps(stack_id: stack_id)[:apps], app_name)[:app_id]
end
get_by_name(collection, name) click to toggle source
# File lib/oops/opsworks_deploy.rb, line 50
def get_by_name collection, name
  collection.detect do |x|
    x[:name] == name
  end || abort("Can't find #{name.inspect} among #{collection.map{|x| x[:name] }.inspect}")
end
stack_id() click to toggle source
# File lib/oops/opsworks_deploy.rb, line 42
def stack_id
  @stack_id ||= get_by_name(@client.describe_stacks[:stacks], stack_name)[:stack_id]
end