ec2launcher 1.3.12 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +5 -1
- data/bin/ec2launcher +1 -1
- data/lib/ec2launcher/init_options.rb +9 -0
- data/lib/ec2launcher/terminator.rb +23 -1
- data/lib/ec2launcher/version.rb +1 -1
- metadata +2 -3
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
## 1.4.0
|
|
2
|
+
|
|
3
|
+
* When terminating an instance, delete all EBS snapshots for volumes attached to that instance.
|
|
4
|
+
|
|
1
5
|
## 1.3.12
|
|
2
6
|
|
|
3
|
-
* Use run_with_backoff when searching for AMI.
|
|
7
|
+
* Use run_with_backoff when searching for AMI and existing hosts.
|
|
4
8
|
* Fixed bug introduced by BlockDeviceBuilder refactoring.
|
|
5
9
|
|
|
6
10
|
## 1.3.11
|
data/bin/ec2launcher
CHANGED
|
@@ -28,7 +28,7 @@ if opt_parser.command == "init"
|
|
|
28
28
|
puts "Successfully created #{opt_parser.location}"
|
|
29
29
|
elsif opt_parser.command =~ /^term/
|
|
30
30
|
terminator = EC2Launcher::Terminator.new(opt_parser.options.directory, opt_parser.options.environ)
|
|
31
|
-
terminator.terminate(opt_parser.hostname, opt_parser.options.access_key, opt_parser.options.secret_key)
|
|
31
|
+
terminator.terminate(opt_parser.hostname, opt_parser.options.access_key, opt_parser.options.secret_key, opt_parser.snapshot_removal)
|
|
32
32
|
elsif opt_parser.command == "launch"
|
|
33
33
|
launcher = EC2Launcher::Launcher.new
|
|
34
34
|
launcher.launch(opt_parser.options)
|
|
@@ -73,6 +73,13 @@ module EC2Launcher
|
|
|
73
73
|
@options.skip_setup = true
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
+
opts.separator ""
|
|
77
|
+
opts.separator "Termination options:"
|
|
78
|
+
|
|
79
|
+
opts.on("--[no-]snapshot-removal", "Remove EBS snapshots. Defaults to TRUE.") do |removal|
|
|
80
|
+
@options.snapshot_removal = removal
|
|
81
|
+
end
|
|
82
|
+
|
|
76
83
|
opts.separator ""
|
|
77
84
|
opts.separator "Overrides:"
|
|
78
85
|
|
|
@@ -162,6 +169,8 @@ module EC2Launcher
|
|
|
162
169
|
@options.instance_type = nil
|
|
163
170
|
@options.volume_size = nil
|
|
164
171
|
|
|
172
|
+
@options.snapshot_removal = true
|
|
173
|
+
|
|
165
174
|
@options.verbosity = :normal
|
|
166
175
|
|
|
167
176
|
@options.directory = "./"
|
|
@@ -43,7 +43,8 @@ module EC2Launcher
|
|
|
43
43
|
# @param[String] server_name Name of the server instance
|
|
44
44
|
# @param[String] access_key Amazon IAM access key
|
|
45
45
|
# @param[String] secret Amazon IAM secret key
|
|
46
|
-
|
|
46
|
+
# @param[Boolean] snapshot_removal Remove EBS snapshots for EBS volumes attached to the instance.
|
|
47
|
+
def terminate(server_name, access_key, secret, snapshot_removal = true)
|
|
47
48
|
##############################
|
|
48
49
|
# Initialize AWS and create EC2 connection
|
|
49
50
|
##############################
|
|
@@ -71,6 +72,11 @@ module EC2Launcher
|
|
|
71
72
|
end # memoize
|
|
72
73
|
|
|
73
74
|
if instance
|
|
75
|
+
# Remove EBS snapshots
|
|
76
|
+
AWS.memoize do
|
|
77
|
+
remove_snapshots(ec2, instance) if snapshot_removal
|
|
78
|
+
end
|
|
79
|
+
|
|
74
80
|
private_ip_address = instance.private_ip_address
|
|
75
81
|
|
|
76
82
|
run_with_backoff(30, 1, "terminating instance: #{server_name} [#{instance.instance_id}]") do
|
|
@@ -91,5 +97,21 @@ module EC2Launcher
|
|
|
91
97
|
@log.error("Unable to find instance: #{server_name}")
|
|
92
98
|
end
|
|
93
99
|
end
|
|
100
|
+
|
|
101
|
+
def remove_snapshots(ec2, instance)
|
|
102
|
+
# Find EBS volumes for instance
|
|
103
|
+
volumes = instance.block_device_mappings.values
|
|
104
|
+
|
|
105
|
+
# Iterate over over volumes to find snapshots
|
|
106
|
+
@log.info(" Searching for snapshots...")
|
|
107
|
+
snapshots = []
|
|
108
|
+
volumes.each do |vol|
|
|
109
|
+
volume_snaps = ec2.snapshots.filter("volume-id", vol.id)
|
|
110
|
+
snapshots += volume_snaps
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
@log.info(" Deleting #{snapshots.size} snapshots...")
|
|
114
|
+
snapshots.each {|snap| snap.delete }
|
|
115
|
+
end
|
|
94
116
|
end
|
|
95
117
|
end
|
data/lib/ec2launcher/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ec2launcher
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-11-
|
|
12
|
+
date: 2012-11-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: aws-sdk
|
|
@@ -147,4 +147,3 @@ summary: Tool to launch EC2 instances.
|
|
|
147
147
|
test_files:
|
|
148
148
|
- test/ec2launcher/dsl/config_parser_test.rb
|
|
149
149
|
- test/test_helper.rb
|
|
150
|
-
has_rdoc:
|