mongolly 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,7 +12,7 @@ module Mongolly
12
12
  super
13
13
  @config = read_config
14
14
  @db_name, @db_config = database_config
15
- exit unless valid_config?
15
+ # exit unless valid_config?
16
16
  end
17
17
 
18
18
  CONFIG_PATH = File.expand_path '~/.mongolly'
@@ -26,7 +26,7 @@ module Mongolly
26
26
  SnapshotManager.take_snapshots( db, @config["aws_access_key_id"], @config["aws_secret_access_key"], @db_config["region"], @db_config["volumes"] )
27
27
  end
28
28
 
29
- desc "clean", "removes snapshots older than the given data"
29
+ desc "clean", "removes snapshots older than the given date"
30
30
  method_option :maximum_age, aliases: '-a', required: true
31
31
  method_option :database, aliases: '-d'
32
32
  def clean
@@ -45,6 +45,40 @@ module Mongolly
45
45
  end
46
46
  end
47
47
 
48
+
49
+ desc "restore", "starts a new instance a builds for restore"
50
+ method_option :database, aliases: '-d'
51
+ method_option :backup_key, aliases: '-k', required: true
52
+ method_option :ssh_keypair, aliases: '-s', required: true
53
+ def restore
54
+ mongo_ami = {
55
+ "us-east-1" => "ami-e565ba8c",
56
+ "us-west-2" => "ami-3ac64a0a",
57
+ "us-west-1" => "ami-e78cd4a2",
58
+ "eu-west-1" => "ami-f9231b8d",
59
+ "ap-southeast-1" => "ami-be3374ec",
60
+ "ap-northeast-1" => "ami-e47acbe5",
61
+ "sa-east-1" => "ami-a6855bbb"
62
+ }
63
+
64
+ ec2 = AWS::EC2.new(access_key_id: @config["aws_access_key_id"], secret_access_key: @config["aws_secret_access_key"]).regions[@db_config["region"]]
65
+
66
+ snapshots = ec2.snapshots.with_owner(:self).tagged_values(options[:backup_key])
67
+ raise RuntimeError.new("No snapshots found for backup_key #{options[:backup_key]}") if snapshots.count == 0
68
+
69
+ snapshots = Hash[*snapshots.each_with_index.map { |snapshot, i| ["/dev/sdh#{i+1}", {snapshot_id: snapshot.id}] }.flatten]
70
+
71
+ instance = ec2.instances.run(image_id: mongo_ami[@db_config["region"]],
72
+ key_name: options[:ssh_keypair],
73
+ block_device_mappings: snapshots
74
+ )
75
+ sleep 10 # Seems to be a race condition when creating the new instance
76
+
77
+ sleep 5 while instance.status == :pending
78
+ sleep 10 # Give the network interface time to come up
79
+ puts "Instance Status: #{instance.status}. IP: #{instance.elastic_ip}"
80
+ end
81
+
48
82
  private
49
83
  def seed_config
50
84
  return true if File.exists? CONFIG_PATH
@@ -1,3 +1,3 @@
1
1
  module Mongolly
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -18,8 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_dependency("thor", ["~> 0.15.4"])
21
- gem.add_dependency("mongo", ["~> 1.6.4"])
22
- gem.add_dependency("bson_ext", ["~> 1.6.4"])
21
+ gem.add_dependency("mongo", ["~> 1.7.0"])
22
+ gem.add_dependency("bson_ext", ["~> 1.7.0"])
23
23
  gem.add_dependency("aws-sdk", ["~> 1.5.8"])
24
24
 
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongolly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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-07-27 00:00:00.000000000 Z
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.6.4
37
+ version: 1.7.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.6.4
45
+ version: 1.7.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bson_ext
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 1.6.4
53
+ version: 1.7.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.6.4
61
+ version: 1.7.0
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: aws-sdk
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -105,18 +105,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
105
  - - ! '>='
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
- segments:
109
- - 0
110
- hash: 3409233611429320048
111
108
  required_rubygems_version: !ruby/object:Gem::Requirement
112
109
  none: false
113
110
  requirements:
114
111
  - - ! '>='
115
112
  - !ruby/object:Gem::Version
116
113
  version: '0'
117
- segments:
118
- - 0
119
- hash: 3409233611429320048
120
114
  requirements: []
121
115
  rubyforge_project:
122
116
  rubygems_version: 1.8.24