Sha256: 22cc6b474fa239451f1244bf4330a3871cea4e29d297c1ce36c8f0ba0a2710a2

Contents?: true

Size: 1.57 KB

Versions: 9

Compression:

Stored size: 1.57 KB

Contents

#!/usr/bin/env ruby
require 'irb'
require 'yaml'
require 'swirl'
require 'optparse'

interactive = false
account = "default"
etc = "#{ENV["HOME"]}/.swirl"

ARGV.options do |o|
  o.on("-a ACCOUT", "Account name (default is default)") {|s| account = s }
  o.on("-c FILE", "Swirl file (default is ~/.swirl)") {|s| etc = s }
  o.on("-i", "Interactive console") { interactive = true }
  o.on("-h", "--help") { puts o; exit }
  o.parse!
end

config = \
if ENV["AWS_ACCESS_KEY_ID"] && ENV["AWS_SECRET_ACCESS_KEY"]
  {
    :aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"],
    :aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
  }
else
  account = account.to_sym
  data = YAML.load_file(etc)
  if data.key?(account)
    data[account]
  else
    abort("I don't see the account you're looking for")
  end
end

c = Swirl::EC2.new config

# We can now start the interactive session
# if requested
if interactive
  # Create sugar for working in the console.
  # >> c.call "DescribeInstances", ...
  Kernel.send(:define_method, :c) { c }

  # Start the interactive session
  IRB.start
else
  begin
    case cmd = ARGV[0] || "list"
    when "list"
      resvs = c.call("DescribeInstances")["reservationSet"]
      insts = resvs.map {|r| r["instancesSet"] }.flatten
      insts.each do |ins|
        data = [
            ins["instanceState"]["name"],
            ins["instanceId"],
            ins["availabilityZone"],
            ins["dnsName"],
            ins["privateDnsName"],
            ins["launchTime"]
        ]
        puts data * "\t"
      end
    end
  rescue => e
    $stderr.puts "! " + e.to_s
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
swirl-1.7.4 bin/swirl
swirl-1.7.3 bin/swirl
swirl-1.7.2 bin/swirl
swirl-1.7.1 bin/swirl
swirl-1.7.0 bin/swirl
swirl-1.6.2 bin/swirl
swirl-1.6.1 bin/swirl
swirl-1.6.0 bin/swirl
swirl-1.5.3 bin/swirl