Skip to content

Commit 8fa5e72

Browse files
Merge pull request #102 from timvaillancourt/MCB_1.0-bugfix13
MCB_1.0: Fix stacktrace when using NSCA
2 parents 8127a9a + 6197f2f commit 8fa5e72

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

mongodb_consistent_backup/Common/Config.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ def __call__(self, parser, namespace, values, option_string=None):
3131

3232

3333
class ConfigParser(BaseConfiguration):
34+
def makeParserLoadSubmodules(self, parser):
35+
for _, modname, ispkg in walk_packages(path=mongodb_consistent_backup.__path__, prefix=mongodb_consistent_backup.__name__+'.'):
36+
if not ispkg:
37+
continue
38+
try:
39+
components = modname.split('.')
40+
mod = __import__(components[0])
41+
for comp in components[1:]:
42+
mod = getattr(mod, comp)
43+
parser = mod.config(parser)
44+
except AttributeError, e:
45+
continue
46+
return parser
47+
3448
def makeParser(self):
3549
parser = super(ConfigParser, self).makeParser()
3650
parser.add_argument("-V", "--version", dest="version", help="Print mongodb_consistent_backup version info and exit", action=PrintVersions)
@@ -47,14 +61,13 @@ def makeParser(self):
4761
parser.add_argument("--lock-file", dest="lock_file", help="Location of lock file (default: /tmp/mongodb_consistent_backup.lock)", default='/tmp/mongodb_consistent_backup.lock', type=str)
4862
parser.add_argument("--sharding.balancer.wait_secs", dest="sharding.balancer.wait_secs", help="Maximum time to wait for balancer to stop, in seconds (default: 300)", default=300, type=int)
4963
parser.add_argument("--sharding.balancer.ping_secs", dest="sharding.balancer.ping_secs", help="Interval to check balancer state, in seconds (default: 3)", default=3, type=int)
50-
return parser
64+
return self.makeParserLoadSubmodules(parser)
5165

5266

5367
class Config(object):
5468
# noinspection PyUnusedLocal
5569
def __init__(self):
5670
self._config = ConfigParser()
57-
self.parse_submodules()
5871
self.parse()
5972

6073
self.version = mongodb_consistent_backup.__version__
@@ -69,18 +82,6 @@ def _get(self, keys, data=None):
6982
else:
7083
return data[keys]
7184

72-
def parse_submodules(self):
73-
for _, modname, ispkg in walk_packages(path=mongodb_consistent_backup.__path__, prefix=mongodb_consistent_backup.__name__+'.'):
74-
if ispkg:
75-
try:
76-
components = modname.split('.')
77-
mod = __import__(components[0])
78-
for comp in components[1:]:
79-
mod = getattr(mod, comp)
80-
mod.config(self._config.parser)
81-
except AttributeError, e:
82-
continue
83-
8485
def check_required(self):
8586
required = [
8687
'backup.name',

mongodb_consistent_backup/Notify/Nsca/Nsca.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@ def __init__(self, manager, config, timer, base_dir, backup_dir, **kwargs):
2020
self.failed = self.critical
2121
self.notifier = None
2222

23-
split = self.server.split(":")
24-
self.server_name = split[0]
25-
self.server_port = 5667
26-
if len(split) == 2:
27-
self.server_port = int(split[1])
28-
self.server = "%s:%i" % (self.server_name, self.server_port)
29-
3023
self.mode_type = ''
3124
self.encryption = 1
3225
if self.password:
@@ -36,7 +29,13 @@ def __init__(self, manager, config, timer, base_dir, backup_dir, **kwargs):
3629
req_attrs = ['server', 'check_name', 'check_host']
3730
for attr in req_attrs:
3831
if not getattr(self, attr):
39-
raise OperationError('NSCA module requires attribute: %s!' % attr)
32+
raise OperationError('NSCA notifier module requires attribute: %s!' % attr)
33+
34+
self.server_name = self.server
35+
self.server_port = 5667
36+
if ':' in self.server:
37+
self.server_name, self.server_port = self.server.split(":")
38+
self.server = "%s:%i" % (self.server_name, self.server_port)
4039

4140
try:
4241
self.notifier = NSCANotifier(

0 commit comments

Comments
 (0)