Skip to content

Commit a5e7c4c

Browse files
Move read_pref string parser to Common/DB.py
1 parent edb2ad7 commit a5e7c4c

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

mongodb_consistent_backup/Backup/Mongodump/MongodumpThread.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from signal import signal, SIGINT, SIGTERM, SIG_IGN
1010
from subprocess import Popen, PIPE
1111

12-
from mongodb_consistent_backup.Common import is_datetime, parse_config_bool
12+
from mongodb_consistent_backup.Common import is_datetime, parse_config_bool, parse_read_pref
1313
from mongodb_consistent_backup.Oplog import Oplog
1414

1515

@@ -69,16 +69,6 @@ def is_version_gte(self, compare):
6969
return True
7070
return False
7171

72-
def parse_read_pref(self, mode="secondary"):
73-
rp = {"mode": mode}
74-
if self.read_pref_tags:
75-
rp["tags"] = {}
76-
for pair in self.read_pref_tags.replace(" ", "").split(","):
77-
if ":" in pair:
78-
key, value = pair.split(":")
79-
rp["tags"][key] = str(value)
80-
return json.dumps(rp)
81-
8272
def parse_mongodump_line(self, line):
8373
try:
8474
line = line.rstrip()
@@ -159,9 +149,9 @@ def mongodump_cmd(self):
159149

160150
# --readPreference
161151
if self.is_version_gte("3.2.0"):
162-
read_pref = self.parse_read_pref()
152+
read_pref = parse_read_pref("secondary", self.read_pref_tags)
163153
if read_pref:
164-
mongodump_flags.append("--readPreference=%s" % read_pref)
154+
mongodump_flags.append("--readPreference=%s" % json.dumps(read_pref))
165155
elif self.read_pref_tags:
166156
logging.fatal("Mongodump must be >= 3.2.0 to set read preference!")
167157
sys.exit(1)

mongodb_consistent_backup/Common/DB.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@
1111
from mongodb_consistent_backup.Errors import DBAuthenticationError, DBConnectionError, DBOperationError, Error
1212

1313

14+
def parse_read_pref(mode="secondary", tags_str=None):
15+
rp = {"mode": mode}
16+
if tags_str:
17+
rp["tags"] = {}
18+
for pair in tags_str.replace(" ", "").split(","):
19+
if ":" in pair:
20+
key, value = pair.split(":")
21+
rp["tags"][key] = str(value)
22+
return rp
23+
24+
1425
class DB:
1526
def __init__(self, uri, config, do_replset=False, read_pref='primaryPreferred', do_rp_tags=False,
1627
do_connect=True, conn_timeout=5000, retries=5):
@@ -60,9 +71,9 @@ def client_opts(self):
6071
"w": "majority"
6172
})
6273
if self.do_rp_tags and self.read_pref_tags:
74+
logging.debug("Using read preference tags: '%s'" % self.read_pref_tags)
6375
self.read_pref_tags = self.read_pref_tags.replace(" ", "")
6476
opts["readPreferenceTags"] = self.read_pref_tags
65-
logging.debug("Using read preference tags: %s" % self.read_pref_tags)
6677
if self.do_ssl():
6778
logging.debug("Using SSL-secured mongodb connection (ca_cert=%s, client_cert=%s, crl_file=%s, insecure=%s)" % (
6879
self.ssl_ca_file,

mongodb_consistent_backup/Common/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from Config import Config, parse_config_bool # NOQA
2-
from DB import DB # NOQA
2+
from DB import DB, parse_read_pref # NOQA
33
from LocalCommand import LocalCommand # NOQA
44
from Lock import Lock # NOQA
55
from MongoUri import MongoUri # NOQA

0 commit comments

Comments
 (0)