From 55b44094436bc8630b6c3ff2d232e6551d40630c Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Thu, 18 Jun 2015 00:21:59 +0200 Subject: rpm: include required directory for glusterfind The directory was marked as %ghost, which causes the following installation failure: Error unpacking rpm package glusterfs-server-3.8dev-0.446.git45e13fe.el7.centos.x86_64 error: unpacking of archive failed on file /var/lib/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.py;5581f20e: cpio: open Also, *all* Python files should be part of the RPM package. This includes generated .pyc and .pyo files. BUG: 1256307 Change-Id: Iee74905b101912c4a845257742c470c3fe42ce2a Signed-off-by: Niels de Vos Signed-off-by: Aravinda VK Reviewed-on: http://review.gluster.org/11298 Reviewed-on: http://review.gluster.org/12000 Tested-by: NetBSD Build System Tested-by: Gluster Build System --- extras/hook-scripts/Makefile.am | 6 +-- extras/hook-scripts/S57glusterfind-delete-post.py | 60 ----------------------- glusterfs.spec.in | 7 +-- tools/glusterfind/Makefile.am | 12 ++++- tools/glusterfind/S57glusterfind-delete-post.py | 60 +++++++++++++++++++++++ 5 files changed, 76 insertions(+), 69 deletions(-) delete mode 100755 extras/hook-scripts/S57glusterfind-delete-post.py create mode 100755 tools/glusterfind/S57glusterfind-delete-post.py diff --git a/extras/hook-scripts/Makefile.am b/extras/hook-scripts/Makefile.am index f291261d123..771b37e3fdf 100644 --- a/extras/hook-scripts/Makefile.am +++ b/extras/hook-scripts/Makefile.am @@ -1,11 +1,7 @@ -EXTRA_DIST = S40ufo-stop.py S56glusterd-geo-rep-create-post.sh \ - S57glusterfind-delete-post.py +EXTRA_DIST = S40ufo-stop.py S56glusterd-geo-rep-create-post.sh SUBDIRS = add-brick set start stop reset scriptsdir = $(GLUSTERD_WORKDIR)/hooks/1/gsync-create/post/ if USE_GEOREP scripts_SCRIPTS = S56glusterd-geo-rep-create-post.sh endif - -deletehookscriptsdir = $(GLUSTERD_WORKDIR)/hooks/1/delete/post/ -deletehookscripts_SCRIPTS = S57glusterfind-delete-post.py diff --git a/extras/hook-scripts/S57glusterfind-delete-post.py b/extras/hook-scripts/S57glusterfind-delete-post.py deleted file mode 100755 index 70edb563320..00000000000 --- a/extras/hook-scripts/S57glusterfind-delete-post.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/python -import os -import shutil -from errno import ENOENT -from subprocess import Popen, PIPE -from argparse import ArgumentParser - - -DEFAULT_GLUSTERD_WORKDIR = "/var/lib/glusterd" - - -def handle_rm_error(func, path, exc_info): - if exc_info[1].errno == ENOENT: - return - - raise exc_info[1] - - -def get_glusterd_workdir(): - p = Popen(["gluster", "system::", "getwd"], - stdout=PIPE, stderr=PIPE) - - out, _ = p.communicate() - - if p.returncode == 0: - return out.strip() - else: - return DEFAULT_GLUSTERD_WORKDIR - - -def get_args(): - parser = ArgumentParser(description="Volume delete post hook script") - parser.add_argument("--volname") - return parser.parse_args() - - -def main(): - args = get_args() - glusterfind_dir = os.path.join(get_glusterd_workdir(), "glusterfind") - - # Check all session directories, if any directory found for - # the deleted volume, cleanup all the session directories - for session in os.listdir(glusterfind_dir): - # Possible session directory - volume_session_path = os.path.join(glusterfind_dir, - session, - args.volname) - if os.path.exists(volume_session_path): - shutil.rmtree(volume_session_path, onerror=handle_rm_error) - - # Try to Remove directory, if any other dir exists for different - # volume, then rmdir will fail with ENOTEMPTY which is fine - try: - os.rmdir(os.path.join(glusterfind_dir, session)) - except (OSError, IOError): - pass - - -if __name__ == "__main__": - main() diff --git a/glusterfs.spec.in b/glusterfs.spec.in index c6c61204306..fb45049d05d 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -1212,7 +1212,7 @@ fi %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/post %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/pre %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete -%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/post + %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/post %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/pre %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glustershd %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/vols @@ -1230,11 +1230,12 @@ fi %{_bindir}/glusterfind %{_libexecdir}/glusterfs/peer_add_secret_pub %{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.py -%exclude %{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.pyc -%exclude %{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.pyo %changelog +* Tue Aug 18 2015 Niels de Vos +- Include missing directories for glusterfind hooks scripts (#1225465) + * Mon Jun 15 2015 Niels de Vos - Replace hook script S31ganesha-set.sh by S31ganesha-start.sh (#1231738) diff --git a/tools/glusterfind/Makefile.am b/tools/glusterfind/Makefile.am index c5a05d61061..514c37c14ad 100644 --- a/tools/glusterfind/Makefile.am +++ b/tools/glusterfind/Makefile.am @@ -1,10 +1,20 @@ SUBDIRS = src -EXTRA_DIST = +EXTRA_DIST = S57glusterfind-delete-post.py bin_SCRIPTS = glusterfind CLEANFILES = $(bin_SCRIPTS) +deletehookscriptsdir = $(libexecdir)/glusterfs/glusterfind/ +deletehookscripts_SCRIPTS = S57glusterfind-delete-post.py + +uninstall-local: + rm -f $(DESTDIR)$(GLUSTERD_WORKDIR)/hooks/1/delete/post/S57glusterfind-delete-post.py + install-data-local: $(MKDIR_P) $(DESTDIR)$(GLUSTERD_WORKDIR)/glusterfind/.keys + $(MKDIR_P) $(DESTDIR)$(GLUSTERD_WORKDIR)/hooks/1/delete/post/ + rm -f $(DESTDIR)$(GLUSTERD_WORKDIR)/hooks/1/delete/post/S57glusterfind-delete-post.py + ln -s $(libexecdir)/glusterfs/glusterfind/S57glusterfind-delete-post.py \ + $(DESTDIR)$(GLUSTERD_WORKDIR)/hooks/1/delete/post/S57glusterfind-delete-post.py diff --git a/tools/glusterfind/S57glusterfind-delete-post.py b/tools/glusterfind/S57glusterfind-delete-post.py new file mode 100755 index 00000000000..70edb563320 --- /dev/null +++ b/tools/glusterfind/S57glusterfind-delete-post.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +import os +import shutil +from errno import ENOENT +from subprocess import Popen, PIPE +from argparse import ArgumentParser + + +DEFAULT_GLUSTERD_WORKDIR = "/var/lib/glusterd" + + +def handle_rm_error(func, path, exc_info): + if exc_info[1].errno == ENOENT: + return + + raise exc_info[1] + + +def get_glusterd_workdir(): + p = Popen(["gluster", "system::", "getwd"], + stdout=PIPE, stderr=PIPE) + + out, _ = p.communicate() + + if p.returncode == 0: + return out.strip() + else: + return DEFAULT_GLUSTERD_WORKDIR + + +def get_args(): + parser = ArgumentParser(description="Volume delete post hook script") + parser.add_argument("--volname") + return parser.parse_args() + + +def main(): + args = get_args() + glusterfind_dir = os.path.join(get_glusterd_workdir(), "glusterfind") + + # Check all session directories, if any directory found for + # the deleted volume, cleanup all the session directories + for session in os.listdir(glusterfind_dir): + # Possible session directory + volume_session_path = os.path.join(glusterfind_dir, + session, + args.volname) + if os.path.exists(volume_session_path): + shutil.rmtree(volume_session_path, onerror=handle_rm_error) + + # Try to Remove directory, if any other dir exists for different + # volume, then rmdir will fail with ENOTEMPTY which is fine + try: + os.rmdir(os.path.join(glusterfind_dir, session)) + except (OSError, IOError): + pass + + +if __name__ == "__main__": + main() -- cgit