class MongoOplogBackup::Config
Attributes
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 7 def initialize(options) config_file = options.delete(:file) # Command line options take precedence @options = from_file(config_file).merge(options) end
Public Instance Methods
backup_dir()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 33 def backup_dir options[:dir] end
command_line_options()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 41 def command_line_options args = [] args << '--ssl' if options[:ssl] args << '--sslAllowInvalidCertificates' if options[:sslAllowInvalidCertificates] [:host, :port, :username, :password, :sslCAFile, :sslPEMKeyFile, :sslPEMKeyPassword].each do |option| args += ["--#{option}", options[option].strip] if options[option] end if options[:authenticationDatabase] args += ['--authenticationDatabase', options[:authenticationDatabase]] else args += ['--authenticationDatabase', 'admin'] if options[:username] && !options[:sslPEMKeyFile] args += ['--authenticationDatabase', '$external'] if options[:sslPEMKeyFile] end args += ['--authenticationMechanism', 'MONGODB-X509'] if options[:sslPEMKeyFile] args end
command_string(cmd)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 98 def command_string(cmd) previous = nil filtered = cmd.map do |token| pwd = (previous == '--password') previous = token if pwd '***' else token end end filtered.shelljoin end
exec(cmd)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 81 def exec(cmd) MongoOplogBackup.log.debug ">>> #{command_string(cmd)}" Command.execute(cmd) end
from_file(file)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 13 def from_file file options = {} unless file.nil? conf = YAML.load_file(file) options[:gzip] = conf["gzip"] unless conf["gzip"].nil? options[:ssl] = conf["ssl"] unless conf["ssl"].nil? options[:sslAllowInvalidCertificates] = conf["sslAllowInvalidCertificates"] unless conf["sslAllowInvalidCertificates"].nil? options[:sslCAFile] = conf["sslCAFile"] unless conf["sslCAFile"].nil? options[:sslPEMKeyFile] = conf["sslPEMKeyFile"] unless conf["sslPEMKeyFile"].nil? options[:sslPEMKeyPassword] = conf["sslPEMKeyPassword"] unless conf["sslPEMKeyPassword"].nil? options[:authenticationDatabase] = conf["authenticationDatabase"] unless conf["authenticationDatabase"].nil? options[:host] = conf["host"] unless conf["host"].nil? options[:port] = conf["port"].to_s unless conf["port"].nil? options[:username] = conf["username"] unless conf["username"].nil? options[:password] = conf["password"] unless conf["password"].nil? end options end
global_lock_file()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 77 def global_lock_file File.join(backup_dir, 'backup.lock') end
global_state_file()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 73 def global_state_file File.join(backup_dir, 'backup.json') end
mongo(db, script)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 90 def mongo(db, script) exec(['mongo'] + command_line_options + ['--quiet', '--norc', db, script]) end
mongodump(*args)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 86 def mongodump(*args) exec(['mongodump'] + command_line_options + args.flatten) end
mongorestore(*args)
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 94 def mongorestore(*args) exec(['mongorestore'] + command_line_options + args.flatten) end
oplog_dump()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 65 def oplog_dump if use_compression? File.join(oplog_dump_folder, 'local/oplog.rs.bson.gz') else File.join(oplog_dump_folder, 'local/oplog.rs.bson') end end
oplog_dump_folder()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 61 def oplog_dump_folder File.join(backup_dir, 'tmp-dump') end
use_compression?()
click to toggle source
# File lib/mongo_oplog_backup/config.rb, line 37 def use_compression? !!options[:gzip] end