Skip to content

Commit a9b008e

Browse files
Merge pull request #87 from timvaillancourt/MCB_1.0-cleanup_v4
Mcb 1.0 cleanup v4
2 parents ad47426 + dedf986 commit a9b008e

File tree

12 files changed

+72
-70
lines changed

12 files changed

+72
-70
lines changed

mongodb_consistent_backup/Archive/Archive.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
from Tar import Tar
4-
from mongodb_consistent_backup.Common import config_to_string, parse_submodule
4+
from mongodb_consistent_backup.Common import config_to_string, parse_method
55

66

77
class Archive:
@@ -15,10 +15,10 @@ def __init__(self, config, backup_dir):
1515

1616
def init(self):
1717
archive_method = self.config.archive.method
18-
if not archive_method or parse_submodule(archive_method) == "none":
18+
if not archive_method or parse_method(archive_method) == "none":
1919
logging.info("Archiving disabled, skipping")
2020
else:
21-
self.method = parse_submodule(archive_method)
21+
self.method = parse_method(archive_method)
2222
logging.info("Using archiving method: %s" % self.method)
2323
try:
2424
self._archiver = globals()[self.method.capitalize()](

mongodb_consistent_backup/Archive/Tar/Tar.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from types import MethodType
77

88
from TarThread import TarThread
9+
from mongodb_consistent_backup.Common import parse_method
910

1011

1112
# Allows pooled .apply_async()s to work on Class-methods:
@@ -28,9 +29,9 @@ def __init__(self, config, backup_base_dir):
2829

2930
def compression(self, method=None):
3031
if method:
31-
self.config.archive.tar.compression = method.lower()
32+
self.config.archive.tar.compression = parse_method(method)
3233
logging.info("Setting tar compression method to: %s" % self.config.archive.tar.compression)
33-
return self.config.archive.tar.compression
34+
return parse_method(self.config.archive.tar.compression)
3435

3536
def do_gzip(self):
3637
if self.compression() == 'gzip':

mongodb_consistent_backup/Backup/Backup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
from Mongodump import Mongodump
4-
from mongodb_consistent_backup.Common import config_to_string, parse_submodule
4+
from mongodb_consistent_backup.Common import config_to_string, parse_method
55

66

77
class Backup:
@@ -17,9 +17,9 @@ def __init__(self, config, backup_dir, secondaries, config_server=None):
1717

1818
def init(self):
1919
backup_method = self.config.backup.method
20-
if not backup_method or parse_submodule(backup_method) == "none":
20+
if not backup_method or parse_method(backup_method) == "none":
2121
raise Exception, 'Must specify a backup method!', None
22-
self.method = parse_submodule(backup_method)
22+
self.method = parse_method(backup_method)
2323
config_string = config_to_string(self.config.backup[self.method])
2424
logging.info("Using backup method: %s (options: %s)" % (self.method, config_string))
2525
try:

mongodb_consistent_backup/Common/DB.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,5 @@ def connection(self):
7272
return self._conn
7373

7474
def close(self):
75-
return self._conn.close()
75+
if self._conn:
76+
return self._conn.close()

mongodb_consistent_backup/Common/Util.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import socket
22

3+
34
def config_to_string(config):
45
config_vars = ""
56
for key in config:
67
config_vars += "%s=%s," % (key, config[key])
78
return config_vars[:-1]
89

9-
def parse_submodule(name):
10-
return name.rstrip().lower()
10+
def parse_method(method):
11+
return method.rstrip().lower()
1112

1213
def validate_hostname(hostname):
1314
try:

mongodb_consistent_backup/Common/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
from DB import DB
33
from LocalCommand import LocalCommand
44
from Lock import Lock
5-
from Util import config_to_string, parse_submodule, validate_hostname
5+
from Util import config_to_string, parse_method, validate_hostname

mongodb_consistent_backup/Main.py

Lines changed: 46 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from Archive import Archive
1010
from Backup import Backup
11-
from Common import DB, Lock, validate_hostname
11+
from Common import Config, DB, Lock, validate_hostname
1212
from Notify import Notify
1313
from Oplog import Tailer, Resolver
1414
from Replication import Replset, ReplsetSharded
@@ -17,38 +17,45 @@
1717

1818

1919
class MongodbConsistentBackup(object):
20-
def __init__(self, config, prog_name="mongodb-consistent-backup"):
21-
self.config = config
22-
self.program_name = prog_name
23-
self.backup = None
24-
self.archive = None
25-
self.sharding = None
26-
self.replset = None
27-
self.replset_sharded = None
28-
self.notify = None
29-
self.oplogtailer = None
30-
self.oplog_resolver = None
31-
self.upload = None
32-
self.lock = None
33-
self.start_time = time()
34-
self.end_time = None
35-
self.backup_duration = None
36-
self.backup_time = None
37-
self.backup_root_directory = None
20+
def __init__(self, prog_name="mongodb-consistent-backup"):
21+
self.program_name = prog_name
22+
self.backup = None
23+
self.archive = None
24+
self.sharding = None
25+
self.replset = None
26+
self.replset_sharded = None
27+
self.notify = None
28+
self.oplogtailer = None
29+
self.oplog_resolver = None
30+
self.upload = None
31+
self.lock = None
32+
self.start_time = time()
33+
self.end_time = None
34+
self.backup_duration = None
35+
self.backup_time = None
36+
self.backup_root_directory = None
3837
self.backup_root_subdirectory = None
39-
self.connection = None
40-
self.db = None
41-
self.is_sharded = False
42-
self.secondaries = {}
43-
self.oplog_summary = {}
44-
self.backup_summary = {}
45-
self.log_level = None
46-
38+
self.connection = None
39+
self.db = None
40+
self.is_sharded = False
41+
self.secondaries = {}
42+
self.oplog_summary = {}
43+
self.backup_summary = {}
44+
self.log_level = None
45+
46+
self.setup_config()
4747
self.setup_signal_handlers()
4848
self.setup_logger()
4949
self.set_backup_dirs()
5050
self.get_db_conn()
5151

52+
def setup_config(self):
53+
try:
54+
self.config = Config()
55+
except Exception, e:
56+
print "Error setting up configuration: '%s'!" % e
57+
sys.exit(1)
58+
5259
def setup_logger(self):
5360
self.log_level = logging.INFO
5461
if self.config.verbose:
@@ -150,7 +157,7 @@ def run(self):
150157
try:
151158
self.notify = Notify(self.config)
152159
except Exception, e:
153-
raise e
160+
self.exception("Problem starting notifier! Error: %s" % e)
154161

155162
# Setup the archiver
156163
try:
@@ -159,7 +166,17 @@ def run(self):
159166
self.backup_root_directory,
160167
)
161168
except Exception, e:
162-
raise e
169+
self.exception("Problem starting archiver! Error: %s" % e)
170+
171+
# Setup the uploader
172+
try:
173+
self.upload = Upload(
174+
self.config,
175+
self.backup_root_directory,
176+
self.backup_root_subdirectory
177+
)
178+
except Exception, e:
179+
self.exception("Problem starting uploader! Error: %s" % e)
163180

164181
if not self.is_sharded:
165182
logging.info("Running backup of %s:%s in replset mode" % (self.config.host, self.config.port))
@@ -286,11 +303,6 @@ def run(self):
286303

287304
# upload backup
288305
try:
289-
self.upload = Upload(
290-
self.config,
291-
self.backup_root_directory,
292-
self.backup_root_subdirectory
293-
)
294306
self.upload.upload()
295307
except Exception, e:
296308
self.exception("Problem performing upload of backup! Error: %s" % e)

mongodb_consistent_backup/Notify/Notify.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22

3-
from mongodb_consistent_backup.Common import config_to_string, parse_submodule
3+
from mongodb_consistent_backup.Common import config_to_string, parse_method
44

55

66
class Notify:
@@ -13,10 +13,10 @@ def __init__(self, config):
1313

1414
def init(self):
1515
notify_method = self.config.notify.method
16-
if not notify_method or parse_submodule(notify_method) == "none":
16+
if not notify_method or parse_method(notify_method) == "none":
1717
logging.info("Notifying disabled, skipping")
1818
else:
19-
self.method = parse_submodule(notify_method)
19+
self.method = parse_method(notify_method)
2020
config_string = config_to_string(self.config.notify[self.method])
2121
logging.info("Using notify method: %s (options: %s)" % (self.method, config_string))
2222
try:

mongodb_consistent_backup/Oplog/Tailer/Tailer.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from time import sleep
55

66
from TailerThread import TailerThread
7+
from mongodb_consistent_backup.Common import parse_method
78

89

910
class Tailer:
@@ -22,9 +23,9 @@ def __init__(self, config, secondaries, base_dir):
2223

2324
def compression(self, method=None):
2425
if method:
25-
self.config.oplog.compression = method.lower()
26+
self.config.oplog.compression = parse_method(method)
2627
logging.info("Setting oplog compression method to: %s" % self.config.oplog.compression)
27-
return self.config.oplog.compression
28+
return parse_method(self.config.oplog.compression)
2829

2930
def do_gzip(self):
3031
if self.compression() == 'gzip':

mongodb_consistent_backup/Upload/Upload.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22

33
from S3 import S3
4-
from mongodb_consistent_backup.Common import config_to_string, parse_submodule
4+
from mongodb_consistent_backup.Common import config_to_string, parse_method
55

66

77
class Upload:
@@ -16,10 +16,10 @@ def __init__(self, config, base_dir, backup_dir):
1616

1717
def init(self):
1818
upload_method = self.config.upload.method
19-
if not upload_method or parse_submodule(upload_method) == "none":
19+
if not upload_method or parse_method(upload_method) == "none":
2020
logging.info("Uploading disabled, skipping")
2121
else:
22-
self.method = parse_submodule(upload_method)
22+
self.method = parse_method(upload_method)
2323
config_string = config_to_string(self.config.upload[self.method])
2424
logging.info("Using upload method: %s (options: %s)" % (self.method, config_string))
2525
try:

0 commit comments

Comments
 (0)