summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/glusterfind/src/changelog.py18
-rw-r--r--tools/glusterfind/src/changelogdata.py8
-rw-r--r--tools/glusterfind/src/utils.py13
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)