aebus 0.0.4 → 0.1.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/lib/aebus.rb +14 -11
- data/lib/aebus/version.rb +1 -1
- metadata +10 -10
data/lib/aebus.rb
CHANGED
@@ -62,7 +62,7 @@ module Aebus
|
|
62
62
|
vs.delay = to_be_run[0]
|
63
63
|
vs.tags = to_be_run[1]
|
64
64
|
|
65
|
-
if
|
65
|
+
if vs.needs_backup?
|
66
66
|
logger.info("Volume #{target} needs to be backed up. Tags: #{vs.tags.join(',')}, max delay #{vs.delay}")
|
67
67
|
to_backup += 1
|
68
68
|
else
|
@@ -105,6 +105,9 @@ module Aebus
|
|
105
105
|
:server => EC2::zone_to_url(@config.defaults["zone"]))
|
106
106
|
|
107
107
|
target_volumes = target_volumes(args)
|
108
|
+
|
109
|
+
abort("Configuration contains invalid volumes") unless validate_target_volumes(target_volumes)
|
110
|
+
|
108
111
|
if (options.manual) then
|
109
112
|
|
110
113
|
target_volumes.each do |volume|
|
@@ -124,7 +127,7 @@ module Aebus
|
|
124
127
|
to_be_run = volume.backups_to_be_run(snap_map[target], @current_time_utc)
|
125
128
|
max_delay = [max_delay, to_be_run[0]].max
|
126
129
|
tags = to_be_run[1]
|
127
|
-
if
|
130
|
+
if tags.count > 0
|
128
131
|
tags << EC2::AEBUS_AUTO_TAG
|
129
132
|
logger.info("Creating backup for volume #{target} with tags #{tags.join(',')}, max delay #{max_delay}")
|
130
133
|
to_backup +=1
|
@@ -137,7 +140,7 @@ module Aebus
|
|
137
140
|
end
|
138
141
|
|
139
142
|
snap_map = get_snapshots_map # we reload the map since we may have created more snapshots
|
140
|
-
if
|
143
|
+
if options.purge then
|
141
144
|
target_volumes.each do |target|
|
142
145
|
volume = @config.volumes[target]
|
143
146
|
purgeable_snapshot_ids = volume.purgeable_snapshot_ids(snap_map[target])
|
@@ -153,10 +156,10 @@ module Aebus
|
|
153
156
|
|
154
157
|
end
|
155
158
|
|
156
|
-
message = "Backup Completed at #{Time.now}. Checked #{target_volumes.count} volume(s), backed up #{backed_up}, max delay detected #{max_delay}, #{to_purge} purgeable snapshot(s), #{purged} purged"
|
159
|
+
message = "Backup Completed at #{Time.now}. Checked #{target_volumes.count} volume(s), #{to_backup} to be backed up, #{backed_up} actually backed up, max delay detected #{max_delay}s, #{to_purge} purgeable snapshot(s), #{purged} purged"
|
157
160
|
logger.info(message)
|
158
161
|
puts(message)
|
159
|
-
if to_backup > 0 or
|
162
|
+
if to_backup > 0 or to_purge > 0 then
|
160
163
|
send_report message
|
161
164
|
end
|
162
165
|
end
|
@@ -164,7 +167,7 @@ module Aebus
|
|
164
167
|
def target_volumes(args)
|
165
168
|
|
166
169
|
result = @config.volume_ids
|
167
|
-
if
|
170
|
+
if args && (args.count > 0) then
|
168
171
|
result &= args
|
169
172
|
end
|
170
173
|
|
@@ -225,7 +228,7 @@ module Aebus
|
|
225
228
|
name = "backup_#{utc_time.strftime("%Y%m%d")}_#{volume_id}"
|
226
229
|
volume_name = volume_id
|
227
230
|
tags.each do |tag|
|
228
|
-
if tag["key"].eql?(AWS_NAME_TAG)
|
231
|
+
if tag["key"].eql?(AWS_NAME_TAG)
|
229
232
|
volume_name = tag["value"]
|
230
233
|
break
|
231
234
|
end
|
@@ -244,7 +247,7 @@ module Aebus
|
|
244
247
|
result = Hash.new
|
245
248
|
snap_array.each do |snap|
|
246
249
|
snapshot = EC2::Snapshot.new(snap)
|
247
|
-
if
|
250
|
+
if result.include?(snapshot.volume_id)
|
248
251
|
vol_array = result[snapshot.volume_id]
|
249
252
|
index = vol_array.index{ |s| snapshot.start_time > s.start_time}
|
250
253
|
index ||= vol_array.count
|
@@ -262,7 +265,7 @@ module Aebus
|
|
262
265
|
def purge_snapshot(snapshot_id)
|
263
266
|
begin
|
264
267
|
response = @ec2.delete_snapshot(:snapshot_id => snapshot_id)
|
265
|
-
if
|
268
|
+
if response["return"]
|
266
269
|
logger.info("Purged snapshot #{snapshot_id}")
|
267
270
|
true
|
268
271
|
else
|
@@ -288,13 +291,13 @@ module Aebus
|
|
288
291
|
end
|
289
292
|
|
290
293
|
def send_report(message)
|
291
|
-
if message.nil?
|
294
|
+
if message.nil?
|
292
295
|
logger.warn("Tried to send a message, but no message was specified")
|
293
296
|
return
|
294
297
|
end
|
295
298
|
to_address = @config.defaults["to_address"]
|
296
299
|
from_address = @config.defaults["from_address"]
|
297
|
-
if to_address.nil? or from_address.nil?
|
300
|
+
if to_address.nil? or from_address.nil?
|
298
301
|
logger.warn("Tried to send a message but either to or from address where missing from configuration")
|
299
302
|
return
|
300
303
|
end
|
data/lib/aebus/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aebus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-02-01 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: commander
|
16
|
-
requirement: &
|
16
|
+
requirement: &70205690834260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 4.0.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70205690834260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: parse-cron
|
27
|
-
requirement: &
|
27
|
+
requirement: &70205690826400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.1.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70205690826400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: amazon-ec2
|
38
|
-
requirement: &
|
38
|
+
requirement: &70205690825740 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.9.17
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70205690825740
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: aws-ses
|
49
|
-
requirement: &
|
49
|
+
requirement: &70205690824640 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 0.4.4
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70205690824640
|
58
58
|
description: A tool to automate snapshot management in EC2
|
59
59
|
email:
|
60
60
|
- nessche@gmail.com
|