swirl 1.5.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/swirl +56 -18
- data/lib/swirl/ec2.rb +1 -1
- metadata +2 -2
data/bin/swirl
CHANGED
@@ -2,28 +2,66 @@
|
|
2
2
|
require 'irb'
|
3
3
|
require 'yaml'
|
4
4
|
require 'swirl'
|
5
|
+
require 'optparse'
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
interactive = false
|
8
|
+
account = "default"
|
9
|
+
etc = "#{ENV["HOME"]}/.swirl"
|
10
|
+
|
11
|
+
ARGV.options do |o|
|
12
|
+
o.on("-a ACCOUT", "Account name (default is default)") {|s| account = s }
|
13
|
+
o.on("-c FILE", "Swirl file (default is ~/.swirl)") {|s| etc = s }
|
14
|
+
o.on("-i", "Interactive console") { interactive = true }
|
15
|
+
o.on("-h", "--help") { puts o; exit }
|
16
|
+
o.parse!
|
17
|
+
end
|
18
|
+
|
19
|
+
config = \
|
20
|
+
if ENV["AWS_ACCESS_KEY_ID"] && ENV["AWS_SECRET_ACCESS_KEY"]
|
21
|
+
{
|
22
|
+
:aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"],
|
23
|
+
:aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
|
24
|
+
}
|
25
|
+
else
|
26
|
+
account = account.to_sym
|
27
|
+
data = YAML.load_file(etc)
|
28
|
+
if data.key?(account)
|
29
|
+
data[account]
|
16
30
|
else
|
17
|
-
|
18
|
-
:aws_access_key_id => ENV["AWS_ACCESS_KEY_ID"],
|
19
|
-
:aws_secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
|
20
|
-
}
|
31
|
+
abort("I don't see the account you're looking for")
|
21
32
|
end
|
22
33
|
end
|
23
34
|
|
24
|
-
|
25
|
-
rescue abort("unable to find keys")
|
35
|
+
c = Swirl::EC2.new config
|
26
36
|
|
27
|
-
|
37
|
+
# We can now start the interactive session
|
38
|
+
# if requested
|
39
|
+
if interactive
|
40
|
+
# Create sugar for working in the console.
|
41
|
+
# >> c.call "DescribeInstances", ...
|
42
|
+
Kernel.send(:define_method, :c) { c }
|
28
43
|
|
29
|
-
|
44
|
+
# Start the interactive session
|
45
|
+
IRB.start
|
46
|
+
else
|
47
|
+
begin
|
48
|
+
case cmd = ARGV[0] || "list"
|
49
|
+
when "list"
|
50
|
+
resvs = c.call("DescribeInstances")["reservationSet"]
|
51
|
+
insts = resvs.map {|r| r["instancesSet"] }.flatten
|
52
|
+
insts.each do |ins|
|
53
|
+
data = [
|
54
|
+
ins["instanceState"]["name"],
|
55
|
+
ins["instanceId"],
|
56
|
+
ins["availabilityZone"],
|
57
|
+
ins["dnsName"],
|
58
|
+
ins["privateDnsName"],
|
59
|
+
ins["launchTime"]
|
60
|
+
]
|
61
|
+
puts data * "\t"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
rescue => e
|
65
|
+
$stderr.puts "! " + e.to_s
|
66
|
+
end
|
67
|
+
end
|
data/lib/swirl/ec2.rb
CHANGED
@@ -66,7 +66,7 @@ module Swirl
|
|
66
66
|
messages = Array(data["Response"]["Errors"]).map {|_, e| e["Message"] }
|
67
67
|
raise InvalidRequest, messages.join(",")
|
68
68
|
else
|
69
|
-
msg = "unexpected response #{
|
69
|
+
msg = "unexpected response #{code} -> #{data.inspect}"
|
70
70
|
raise InvalidRequest, msg
|
71
71
|
end
|
72
72
|
end
|