mongolly 0.0.4 → 0.0.5

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.
@@ -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