diff options
-rw-r--r-- | tools/glusterfind/src/changelog.py | 18 | ||||
-rw-r--r-- | tools/glusterfind/src/changelogdata.py | 8 | ||||
-rw-r--r-- | tools/glusterfind/src/utils.py | 13 |
3 files changed, 23 insertions, 16 deletions
diff --git a/tools/glusterfind/src/changelog.py b/tools/glusterfind/src/changelog.py index 5939d487a4d..4d0a190286e 100644 --- a/tools/glusterfind/src/changelog.py +++ b/tools/glusterfind/src/changelog.py @@ -21,6 +21,7 @@ import libgfchangelog from utils import mkdirp, symlink_gfid_to_path from utils import fail, setup_logger, find from utils import get_changelog_rollover_time +from utils import output_path_prepare from changelogdata import ChangelogData import conf @@ -37,17 +38,6 @@ history_turn_time = 0 logger = logging.getLogger() -def output_path_prepare(path, output_prefix): - """ - If Prefix is set, joins to Path, removes ending slash - and encodes it. - """ - if output_prefix != ".": - path = os.path.join(output_prefix, path) - if path.endswith("/"): - path = path[0:len(path)-1] - - return urllib.quote_plus(path) def pgfid_to_path(brick, changelog_data): @@ -217,7 +207,7 @@ def gfid_to_path_using_batchfind(brick, changelog_data): ignore_dirs=ignore_dirs) -def parse_changelog_to_db(changelog_data, filename): +def parse_changelog_to_db(changelog_data, filename, args): """ Parses a Changelog file and populates data in gfidpath table """ @@ -240,7 +230,7 @@ def parse_changelog_to_db(changelog_data, filename): changelog_data.when_rename(changelogfile, data) elif data[0] == "E" and data[2] in ["UNLINK", "RMDIR"]: # UNLINK/RMDIR - changelog_data.when_unlink_rmdir(changelogfile, data) + changelog_data.when_unlink_rmdir(changelogfile, data, args) def get_changes(brick, hash_dir, log_file, start, end, args): @@ -300,7 +290,7 @@ def get_changes(brick, hash_dir, log_file, start, end, args): if change.endswith(".%s" % start): continue try: - parse_changelog_to_db(changelog_data, change) + parse_changelog_to_db(changelog_data, change, args) libgfchangelog.cl_history_done(change) except IOError as e: logger.warn("Error parsing changelog file %s: %s" % diff --git a/tools/glusterfind/src/changelogdata.py b/tools/glusterfind/src/changelogdata.py index 08d711b9696..39a16d57cb5 100644 --- a/tools/glusterfind/src/changelogdata.py +++ b/tools/glusterfind/src/changelogdata.py @@ -13,7 +13,7 @@ import urllib import os from utils import RecordType - +from utils import output_path_prepare class OutputMerger(object): """ @@ -386,12 +386,16 @@ class ChangelogData(object): not self.gfidpath_exists({"gfid": data[1], "type": "MODIFY"}): self.gfidpath_add(changelogfile, RecordType.MODIFY, data[1]) - def when_unlink_rmdir(self, changelogfile, data): + def when_unlink_rmdir(self, changelogfile, data, args): # E <GFID> <UNLINK|RMDIR> <PGFID>/<BASENAME> pgfid1, bn1 = urllib.unquote_plus(data[3]).split("/", 1) # Quote again the basename bn1 = urllib.quote_plus(bn1.strip()) + deleted_path = data[4] if len(data) == 5 else "" + if deleted_path != "": + deleted_path = output_path_prepare(deleted_path, + args.output_prefix) if self.gfidpath_exists({"gfid": data[1], "type": "NEW", "pgfid1": pgfid1, "bn1": bn1}): diff --git a/tools/glusterfind/src/utils.py b/tools/glusterfind/src/utils.py index cda5ea6378e..fdf61fe0f9e 100644 --- a/tools/glusterfind/src/utils.py +++ b/tools/glusterfind/src/utils.py @@ -226,3 +226,16 @@ def get_changelog_rollover_time(volumename): return int(tree.find('volGetopts/Value').text) except ParseError: return DEFAULT_CHANGELOG_INTERVAL + + +def output_path_prepare(path, output_prefix): + """ + If Prefix is set, joins to Path, removes ending slash + and encodes it. + """ + if output_prefix != ".": + path = os.path.join(output_prefix, path) + if path.endswith("/"): + path = path[0:len(path)-1] + + return urllib.quote_plus(path) |