class Kontena::Machine::Aws::MasterDestroyer

Attributes

api_client[R]
ec2[R]

Public Class Methods

new(api_client, access_key_id, secret_key, region = 'eu-west-1') click to toggle source

@param [Kontena::Client] api_client Kontena api client @param [String] access_key_id aws_access_key_id @param [String] secret_key aws_secret_access_key @param [String] region

# File lib/kontena/machine/aws/master_destroyer.rb, line 14
def initialize(api_client, access_key_id, secret_key, region = 'eu-west-1')
  @api_client = api_client
  @ec2 = ::Aws::EC2::Resource.new(
    region: region,
    credentials: ::Aws::Credentials.new(access_key_id, secret_key)
  )
end

Public Instance Methods

run!(name) click to toggle source
# File lib/kontena/machine/aws/master_destroyer.rb, line 22
def run!(name)
  instances = ec2.instances({
    filters: [
      {name: 'tag:Name', values: [name]}
    ]
  })
  abort("Cannot find AWS instance #{name}") if instances.to_a.size == 0
  abort("There are multiple instances with name #{name}") if instances.to_a.size > 1
  instance = instances.first
  if instance
    spinner "Terminating AWS instance #{name.colorize(:cyan)} " do
      instance.terminate
      until instance.reload.state.name.to_s == 'terminated'
        sleep 1
      end
    end
  else
    abort "Cannot find instance #{name.colorize(:cyan)} in AWS"
  end
end