Skip to content

Commit d4e853e

Browse files
authored
Merge pull request #13 from timvaillancourt/log_git_info
Log version + git-commit info on startup
2 parents 7789620 + 1f388d9 commit d4e853e

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

MongoBackup/Backup.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020

2121
class Backup(object):
2222
def __init__(self, options):
23-
self.program_name = 'mongodb-consistent-backup'
23+
self.program_name = None
24+
self.version = None
25+
self.git_commit = None
2426
self.host = 'localhost'
2527
self.port = 27017
2628
self.authdb = 'admin'
@@ -30,7 +32,7 @@ def __init__(self, options):
3032
self.max_repl_lag_secs = 5
3133
self.backup_name = None
3234
self.backup_binary = None
33-
self.backup_location = "/backups"
35+
self.backup_location = None
3436
self.dump_gzip = False
3537
self.balancer_wait_secs = 300
3638
self.balancer_sleep = 10
@@ -74,6 +76,14 @@ def __init__(self, options):
7476
for option in vars(options):
7577
setattr(self, option, getattr(options, option))
7678

79+
# Check for required fields:
80+
required = ['program_name', 'version', 'git_commit', 'backup_name', 'backup_binary', 'backup_location']
81+
for field in required:
82+
try:
83+
getattr(self, field)
84+
except Exception:
85+
raise Exception, 'Field: %s is required by %s!' % (field, __name__), None
86+
7787
# Set default lock file:
7888
if not self.lock_file:
7989
self.lock_file = '/tmp/%s.lock' % self.program_name
@@ -155,14 +165,16 @@ def exception(self, error_message):
155165
return self.cleanup_and_exit(None, None)
156166

157167
def run(self):
168+
logging.info("Starting %s version %s (git commit hash: %s)" % (self.program_name, self.version, self.git_commit))
169+
158170
try:
159171
self._lock = Lock(self.lock_file)
160172
except Exception, e:
161173
logging.fatal("Could not acquire lock! Is another %s process running? Exiting" % self.program_name)
162174
sys.exit(1)
163175

164176
if not self.is_mongos:
165-
logging.info("Starting backup of %s:%s in replset mode" % (self.host, self.port))
177+
logging.info("Running backup of %s:%s in replset mode" % (self.host, self.port))
166178

167179
try:
168180
self.mongodumper = Mongodumper(
@@ -183,7 +195,7 @@ def run(self):
183195
self.exception("Problem performing replset mongodump! Error: %s" % e)
184196

185197
else:
186-
logging.info("Starting backup of %s:%s in sharded mode" % (self.host, self.port))
198+
logging.info("Running backup of %s:%s in sharded mode" % (self.host, self.port))
187199

188200
# connect to balancer and stop it
189201
try:

MongoBackup/__init__.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
from yaml import load
66
from Backup import Backup
77

8-
__version__ = '#.#.#'
9-
__git_commit__ = 'GIT_COMMIT_HASH'
8+
__version__ = '#.#.#'
9+
git_commit = 'GIT_COMMIT_HASH'
10+
prog_name = os.path.basename(sys.argv[0])
1011

1112

1213
def handle_options(parser):
@@ -51,7 +52,7 @@ def printPythonVersions():
5152
# noinspection PyUnusedLocal
5253
def run():
5354
parser = OptionParser()
54-
parser.add_option("--version", dest="version", help="Display version number and exit", action="store_true", default=False)
55+
parser.add_option("--version", dest="print_version", help="Display version number and exit", action="store_true", default=False)
5556
parser.add_option("-v", "--verbose", dest="verbose", help="Increase verbosity", action="store_true", default=False)
5657
parser.add_option("-c", "--config", dest="config", help="Use YAML config file as defaults")
5758
parser.add_option("-l", "--location", dest="backup_location", help="Directory to save the backup(s) to (required)")
@@ -81,15 +82,17 @@ def run():
8182
parser.add_option("--no-archive", dest="no_archiver", help="Disable archiving of backups directories post-resolving", action="store_true", default=False)
8283
parser.add_option("--no-archive-gzip", dest="no_archiver_gzip", help="Disable gzip compression of archive files", action="store_true", default=False)
8384
parser.add_option("--lazy", dest="no_oplog_tailer", help="Disable tailing/resolving of clusterwide oplogs. This makes a shard-consistent, not cluster-consistent backup", action="store_true", default=False)
84-
parser.add_option("--lock-file", dest="lock_file", help="Location of lock file (default: /tmp/%s.lock)" % os.path.basename(sys.argv[0]), default="/tmp/%s.lock" % os.path.basename(sys.argv[0]))
85+
parser.add_option("--lock-file", dest="lock_file", help="Location of lock file (default: /tmp/%s.lock)" % prog_name, default="/tmp/%s.lock" % prog_name)
8586
parser.set_defaults()
8687

8788
options = handle_options(parser)
8889

89-
if options.version:
90-
binary = os.path.basename(sys.argv[0])
91-
print "%s version: %s, git commit hash: %s" % (binary, __version__, __git_commit__)
90+
options.program_name = prog_name
91+
options.version = __version__
92+
options.git_commit = git_commit
9293

94+
if options.print_version:
95+
print "%s version: %s, git commit hash: %s" % (prog_name, __version__, git_commit)
9396
if options.verbose:
9497
printPythonVersions()
9598
sys.exit(0)

0 commit comments

Comments
 (0)