mongolly 0.2.0 → 0.2.1

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.
@@ -43,7 +43,8 @@ module Mongolly
43
43
  log_level: 'info',
44
44
  mongo_start_command: nil,
45
45
  mongo_stop_command: nil,
46
- config_server_ssh_user: nil
46
+ config_server_ssh_user: nil,
47
+ config_server_ssh_keypath: nil
47
48
  }
48
49
 
49
50
  File.open( CONFIG_PATH, "w" ) do |f|
@@ -20,7 +20,8 @@ class Mongo::MongoClient
20
20
  if mongos?
21
21
  @mongolly_logger.info("Detected sharded cluster")
22
22
  with_disabled_balancing do
23
- stop_config_server(options[:config_server_ssh_user], options[:mongo_stop_command])
23
+ # Stop Config Server
24
+ ssh_command(options[:config_server_ssh_user], config_server, options[:mongo_stop_command], options[:config_server_ssh_keypath])
24
25
 
25
26
  backup_instance(config_server, options, false)
26
27
 
@@ -28,7 +29,8 @@ class Mongo::MongoClient
28
29
  @mongolly_logger.debug("Found Shard #{name} with hosts #{hosts}.")
29
30
  replica_set_connection(hosts, options).snapshot_ebs(options)
30
31
  end
31
- start_config_server(options[:config_server_ssh_user], options[:mongo_start_command])
32
+ # Start Config Server
33
+ ssh_command(options[:config_server_ssh_user], config_server, options[:mongo_start_command], options[:config_server_ssh_keypath])
32
34
  end
33
35
  else
34
36
  backup_instance(snapshot_ebs_target, options, true )
@@ -89,64 +91,6 @@ protected
89
91
  self['config'].collection('locks').find({_id: 'balancer'}).count > 1
90
92
  end
91
93
 
92
- def stop_config_server(user, stop_command)
93
- raise RuntimeError.new "mongo ssh user not specified" unless user.to_s.strip != ''
94
- raise RuntimeError.new "mongo ssh user not specified" unless stop_command.to_s.strip != ''
95
- @mongolly_logger.debug "Stopping config server #{config_server}"
96
- unless @mongolly_dry_run
97
- exit_code = nil
98
- output = ''
99
- Net::SSH.start(config_server, user.strip) do |ssh|
100
- channel = ssh.open_channel do |ch|
101
- ch.request_pty
102
- ch.exec(stop_command.strip) do |ch, success|
103
- raise "Unable to stop config server on #{config_server}" unless success
104
- end
105
- end
106
- channel.on_request("exit-status") do |ch,data|
107
- exit_code = data.read_long
108
- end
109
- channel.on_extended_data do |ch,type,data|
110
- output += data
111
- end
112
- ssh.loop
113
- end
114
-
115
- if exit_code != 0
116
- raise RuntimeError.new "Unable to stop config server, #{output}"
117
- end
118
- end
119
- end
120
-
121
- def start_config_server(user, start_command )
122
- raise RuntimeError.new "mongo ssh user not specified" unless user.to_s.strip != ''
123
- raise RuntimeError.new "mongo ssh user not specified" unless start_command.to_s.strip != ''
124
- @mongolly_logger.debug "Starting config server #{config_server}"
125
- unless @mongolly_dry_run
126
- exit_code = nil
127
- output = ''
128
- Net::SSH.start(config_server, user.strip) do |ssh|
129
- channel = ssh.open_channel do |ch|
130
- ch.request_pty
131
- ch.exec(start_command.strip) do |ch, success|
132
- raise "Unable to start config server on #{config_server}" unless success
133
- end
134
- end
135
- channel.on_request("exit-status") do |ch,data|
136
- exit_code = data.read_long
137
- end
138
- channel.on_extended_data do |ch,type,data|
139
- output += data
140
- end
141
- ssh.loop
142
- end
143
-
144
- if exit_code != 0
145
- raise RuntimeError.new "Unable to start config server, #{output}"
146
- end
147
- end
148
- end
149
-
150
94
  def config_server
151
95
  unless @config_server
152
96
  @config_server = self['admin'].command( { getCmdLineOpts: 1 } )["parsed"]["configdb"].split(",").sort.first.split(":").first
@@ -239,4 +183,31 @@ protected
239
183
  return db
240
184
  end
241
185
 
186
+ def ssh_command(user, host, command, keypath = nil)
187
+ @mongolly_logger.debug("Running #{command} on #{host} as #{user}")
188
+ return if @mongolly_dry_run
189
+ exit_code = nil
190
+ output = ''
191
+ Net::SSH.start(host, user.strip, keys: keypath) do |ssh|
192
+ channel = ssh.open_channel do |ch|
193
+ ch.request_pty
194
+ ch.exec(command.strip) do |ch, success|
195
+ raise "Unable to exec #{command.strip} on #{host}" unless success
196
+ end
197
+ end
198
+ channel.on_request("exit-status") do |ch,data|
199
+ exit_code = data.read_long
200
+ end
201
+ channel.on_extended_data do |ch,type,data|
202
+ output += data
203
+ end
204
+ ssh.loop
205
+ end
206
+
207
+ if exit_code != 0
208
+ raise RuntimeError.new "Unable to exec #{command} on #{host}, #{output}"
209
+ end
210
+ end
211
+
212
+
242
213
  end
@@ -1,3 +1,3 @@
1
1
  module Mongolly
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  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.2.0
4
+ version: 0.2.1
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: 2013-05-28 00:00:00.000000000 Z
12
+ date: 2013-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor