drebs 0.1.1 → 0.1.2
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.
- checksums.yaml +8 -8
- data/drebs.gemspec +1 -1
- data/lib/drebs.rb +1 -1
- data/lib/drebs/cloud.rb +9 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzE1MjM4ZjhlYzBjMmZkNGFkYmJlNGZjMmVmMWExYWI5ZDFlYzEyZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjUyYjgwNmQ2YzU0Y2Q4ZThiZTExNWI1MDRjY2Y0ZTAwZjJhNjUyYQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWQzNDk4ZjQ5MDY2NTJkNmIwODk2YTcxYjFkZjZhMGIxNDQ0OTg1ZDBlY2Fl
|
10
|
+
MDE1ZWI0NmY2MDYzMmY3ZjdjZDg1OGRjMzkwMmZhZWRmOWIxNzFmZDJkYWQ1
|
11
|
+
YzUyZjdhNzVhMGJmYThlY2E3Yjg1ZTJkMDJhMDg2YzViNzQzN2E=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWZkMDc1MDI0ZTVjOTUwMzUyMWU2MTU2OTVmOGYyZWQxNWUxMGM0YWJhOWEz
|
14
|
+
OGIyMDg2Yjg3N2ViM2RiZThmYzM1ZjdiZGFiYWNlNTBjZDdiZTU3NWM3NDM4
|
15
|
+
ODE3ZDY0MGQyZGY3ZmRiNTRhMzNiNjVkMWEzNTQ5N2QzYzExODc=
|
data/drebs.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
Gem::Specification::new do |spec|
|
5
5
|
spec.name = "drebs"
|
6
|
-
spec.version = "0.1.
|
6
|
+
spec.version = "0.1.2"
|
7
7
|
spec.platform = Gem::Platform::RUBY
|
8
8
|
spec.summary = "drebs"
|
9
9
|
spec.description = "drebs: Disaster Recovery for Elastic Block Store. An AWS EBS backup script."
|
data/lib/drebs.rb
CHANGED
data/lib/drebs/cloud.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'right_aws'
|
2
|
+
require 'date'
|
2
3
|
|
3
4
|
module Drebs
|
4
5
|
class Cloud
|
@@ -46,22 +47,26 @@ module Drebs
|
|
46
47
|
return a_snapshot if a_snapshot[:aws_id] == snapshot_id
|
47
48
|
}
|
48
49
|
end
|
49
|
-
|
50
|
+
|
50
51
|
def create_local_snapshot(pre_snapshot_tasks, post_snapshot_tasks, mount_point)
|
51
52
|
local_instance=find_local_instance
|
52
53
|
ip = local_instance[:ip_address]
|
53
54
|
instance_id = local_instance[:aws_instance_id]
|
55
|
+
instance_tags = ec2.describe_tags(:filters => {"resource-id" => instance_id})
|
56
|
+
instance_name_tag = instance_tags.find{|t| t[:key] == "Name"}
|
57
|
+
instance_desc = instance_name_tag.nil? ? ip : instance_name_tag[:value]
|
54
58
|
volume_id = local_instance[:block_device_mappings].select{|m| m[:device_name]==mount_point}.first[:ebs_volume_id]
|
59
|
+
timestamp = DateTime.now.strftime("%Y%m%d%H%M%S")
|
55
60
|
return nil if not ebs = find_local_ebs(mount_point)
|
56
61
|
pre_snapshot_tasks.each do |task|
|
57
62
|
result, stdout, stderr = systemu(task)
|
58
63
|
unless result.exitstatus == 0
|
59
64
|
raise Exception.new(
|
60
|
-
"Error while executing pre-snapshot task: #{task} on #{
|
65
|
+
"Error while executing pre-snapshot task: #{task} on #{instance_desc}:#{mount_point} #{instance_id}:#{volume_id} at #{timestamp}"
|
61
66
|
)
|
62
67
|
end
|
63
68
|
end if pre_snapshot_tasks
|
64
|
-
snapshot = ec2.create_snapshot(ebs[:ebs_volume_id], "DREBS #{
|
69
|
+
snapshot = ec2.create_snapshot(ebs[:ebs_volume_id], "DREBS #{instance_desc}:#{mount_point} #{instance_id}:#{volume_id} at #{timestamp}")
|
65
70
|
Thread.new(snapshot[:aws_id], post_snapshot_tasks) do |snapshot_id, post_snapshot_tasks|
|
66
71
|
1.upto(500) do |a|
|
67
72
|
sleep(3)
|
@@ -71,7 +76,7 @@ module Drebs
|
|
71
76
|
result = systemu(task)
|
72
77
|
unless result.exitstatus == 0
|
73
78
|
raise Exception.new(
|
74
|
-
"Error while executing post-snapshot task: #{task} on #{
|
79
|
+
"Error while executing post-snapshot task: #{task} on #{instance_desc}:#{mount_point} #{instance_id}:#{volume_id} at #{timestamp}"
|
75
80
|
)
|
76
81
|
end
|
77
82
|
end if post_snapshot_tasks
|