Blob Blame History Raw
From c8a6868907e88f9f47705248ee32fc4601e99e4b Mon Sep 17 00:00:00 2001
From: Aravinda VK <avishwan@redhat.com>
Date: Wed, 10 Jun 2015 14:47:21 +0530
Subject: [PATCH 65/73] tools/glusterfind: Cleanup session dir after delete

Sessions directories are created in
/var/lib/glusterd/glusterfind/<SESSION>/<VOLUME>, only <VOLUME>
dir is created since same session name can exists for two volumes.

Now cleanup is added, <SESSION> dir will be removed if <SESSION>
contains only one Volume.

Change-Id: I236393659e63eb98342570e0255739f4adea4491
Signed-off-by: Aravinda VK <avishwan@redhat.com>
BUG: 1229623
Reviewed-on: http://review.gluster.org/11157
Reviewed-on: http://review.gluster.org/11185
Reviewed-on: https://code.engineering.redhat.com/gerrit/50547
Reviewed-by: Saravanakumar Arumugam <sarumuga@redhat.com>
---
 tools/glusterfind/src/main.py      |   11 ++++++++++-
 tools/glusterfind/src/nodeagent.py |   10 ++++++++++
 2 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py
index ccd2d22..4c1686c 100644
--- a/tools/glusterfind/src/main.py
+++ b/tools/glusterfind/src/main.py
@@ -9,7 +9,7 @@
 # cases as published by the Free Software Foundation.
 
 import sys
-from errno import ENOENT
+from errno import ENOENT, ENOTEMPTY
 import time
 from multiprocessing import Process
 import os
@@ -440,6 +440,15 @@ def mode_delete(session_dir, args):
     shutil.rmtree(os.path.join(session_dir, args.volume),
                   onerror=handle_rm_error)
 
+    # If the session contains only this volume, then cleanup the
+    # session directory. If a session contains multiple volumes
+    # then os.rmdir will fail with ENOTEMPTY
+    try:
+        os.rmdir(session_dir)
+    except OSError as e:
+        if not e.errno == ENOTEMPTY:
+            logger.warn("Failed to delete session directory: %s" % e)
+
 
 def mode_list(session_dir, args):
     """
diff --git a/tools/glusterfind/src/nodeagent.py b/tools/glusterfind/src/nodeagent.py
index 2e8c2fc..e7ba4af 100644
--- a/tools/glusterfind/src/nodeagent.py
+++ b/tools/glusterfind/src/nodeagent.py
@@ -14,6 +14,7 @@ import os
 import logging
 from argparse import ArgumentParser, RawDescriptionHelpFormatter
 import urllib
+from errno import ENOTEMPTY
 
 from utils import setup_logger, mkdirp, handle_rm_error
 import conf
@@ -78,6 +79,15 @@ def mode_delete(args):
     shutil.rmtree(os.path.join(session_dir, args.volume),
                   onerror=handle_rm_error)
 
+    # If the session contains only this volume, then cleanup the
+    # session directory. If a session contains multiple volumes
+    # then os.rmdir will fail with ENOTEMPTY
+    try:
+        os.rmdir(session_dir)
+    except OSError as e:
+        if not e.errno == ENOTEMPTY:
+            logger.warn("Failed to delete session directory: %s" % e)
+
 
 def _get_args():
     parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter,
-- 
1.7.1