You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
576 lines
19 KiB
576 lines
19 KiB
3 years ago
|
From 1fb89973551937f34f24b45e07072a6ce6c30ff9 Mon Sep 17 00:00:00 2001
|
||
|
From: Jiffin Tony Thottan <jthottan@redhat.com>
|
||
|
Date: Mon, 16 Oct 2017 14:18:31 +0530
|
||
|
Subject: [PATCH 053/124] Revert "packaging: (ganesha) remove glusterfs-ganesha
|
||
|
subpackage and related files)"
|
||
|
|
||
|
This reverts commit 0cf2963f12a8b540a7042605d8c79f638fdf6cee.
|
||
|
|
||
|
Label: DOWNSTREAM ONLY
|
||
|
|
||
|
Change-Id: Id6e7585021bd4dd78a59580cfa4838bdd4e539a0
|
||
|
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
|
||
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/167102
|
||
|
Reviewed-by: Soumya Koduri <skoduri@redhat.com>
|
||
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
||
|
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
||
|
---
|
||
|
configure.ac | 3 +
|
||
|
extras/Makefile.am | 3 +-
|
||
|
extras/ganesha/Makefile.am | 2 +
|
||
|
extras/ganesha/config/Makefile.am | 4 +
|
||
|
extras/ganesha/config/ganesha-ha.conf.sample | 19 ++++
|
||
|
extras/ganesha/scripts/Makefile.am | 4 +
|
||
|
extras/ganesha/scripts/create-export-ganesha.sh | 91 +++++++++++++++
|
||
|
extras/ganesha/scripts/dbus-send.sh | 60 ++++++++++
|
||
|
extras/ganesha/scripts/generate-epoch.py | 48 ++++++++
|
||
|
extras/hook-scripts/start/post/Makefile.am | 2 +-
|
||
|
extras/hook-scripts/start/post/S31ganesha-start.sh | 122 +++++++++++++++++++++
|
||
|
glusterfs.spec.in | 44 +++++++-
|
||
|
12 files changed, 396 insertions(+), 6 deletions(-)
|
||
|
create mode 100644 extras/ganesha/Makefile.am
|
||
|
create mode 100644 extras/ganesha/config/Makefile.am
|
||
|
create mode 100644 extras/ganesha/config/ganesha-ha.conf.sample
|
||
|
create mode 100644 extras/ganesha/scripts/Makefile.am
|
||
|
create mode 100755 extras/ganesha/scripts/create-export-ganesha.sh
|
||
|
create mode 100755 extras/ganesha/scripts/dbus-send.sh
|
||
|
create mode 100755 extras/ganesha/scripts/generate-epoch.py
|
||
|
create mode 100755 extras/hook-scripts/start/post/S31ganesha-start.sh
|
||
|
|
||
|
diff --git a/configure.ac b/configure.ac
|
||
|
index 0d06f5a..125ae29 100644
|
||
|
--- a/configure.ac
|
||
|
+++ b/configure.ac
|
||
|
@@ -196,6 +196,9 @@ AC_CONFIG_FILES([Makefile
|
||
|
extras/init.d/glustereventsd-Debian
|
||
|
extras/init.d/glustereventsd-Redhat
|
||
|
extras/init.d/glustereventsd-FreeBSD
|
||
|
+ extras/ganesha/Makefile
|
||
|
+ extras/ganesha/config/Makefile
|
||
|
+ extras/ganesha/scripts/Makefile
|
||
|
extras/systemd/Makefile
|
||
|
extras/systemd/glusterd.service
|
||
|
extras/systemd/glustereventsd.service
|
||
|
diff --git a/extras/Makefile.am b/extras/Makefile.am
|
||
|
index ff5ca9b..983f014 100644
|
||
|
--- a/extras/Makefile.am
|
||
|
+++ b/extras/Makefile.am
|
||
|
@@ -11,7 +11,8 @@ EditorModedir = $(docdir)
|
||
|
EditorMode_DATA = glusterfs-mode.el glusterfs.vim
|
||
|
|
||
|
SUBDIRS = init.d systemd benchmarking hook-scripts $(OCF_SUBDIR) LinuxRPM \
|
||
|
- $(GEOREP_EXTRAS_SUBDIR) snap_scheduler firewalld cliutils python
|
||
|
+ $(GEOREP_EXTRAS_SUBDIR) snap_scheduler firewalld cliutils python \
|
||
|
+ ganesha
|
||
|
|
||
|
confdir = $(sysconfdir)/glusterfs
|
||
|
if WITH_SERVER
|
||
|
diff --git a/extras/ganesha/Makefile.am b/extras/ganesha/Makefile.am
|
||
|
new file mode 100644
|
||
|
index 0000000..542de68
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/Makefile.am
|
||
|
@@ -0,0 +1,2 @@
|
||
|
+SUBDIRS = scripts config
|
||
|
+CLEANFILES =
|
||
|
diff --git a/extras/ganesha/config/Makefile.am b/extras/ganesha/config/Makefile.am
|
||
|
new file mode 100644
|
||
|
index 0000000..c729273
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/config/Makefile.am
|
||
|
@@ -0,0 +1,4 @@
|
||
|
+EXTRA_DIST= ganesha-ha.conf.sample
|
||
|
+
|
||
|
+confdir = $(sysconfdir)/ganesha
|
||
|
+conf_DATA = ganesha-ha.conf.sample
|
||
|
diff --git a/extras/ganesha/config/ganesha-ha.conf.sample b/extras/ganesha/config/ganesha-ha.conf.sample
|
||
|
new file mode 100644
|
||
|
index 0000000..c22892b
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/config/ganesha-ha.conf.sample
|
||
|
@@ -0,0 +1,19 @@
|
||
|
+# Name of the HA cluster created.
|
||
|
+# must be unique within the subnet
|
||
|
+HA_NAME="ganesha-ha-360"
|
||
|
+#
|
||
|
+# N.B. you may use short names or long names; you may not use IP addrs.
|
||
|
+# Once you select one, stay with it as it will be mildly unpleasant to
|
||
|
+# clean up if you switch later on. Ensure that all names - short and/or
|
||
|
+# long - are in DNS or /etc/hosts on all machines in the cluster.
|
||
|
+#
|
||
|
+# The subset of nodes of the Gluster Trusted Pool that form the ganesha
|
||
|
+# HA cluster. Hostname is specified.
|
||
|
+HA_CLUSTER_NODES="server1,server2,..."
|
||
|
+#HA_CLUSTER_NODES="server1.lab.redhat.com,server2.lab.redhat.com,..."
|
||
|
+#
|
||
|
+# Virtual IPs for each of the nodes specified above.
|
||
|
+VIP_server1="10.0.2.1"
|
||
|
+VIP_server2="10.0.2.2"
|
||
|
+#VIP_server1_lab_redhat_com="10.0.2.1"
|
||
|
+#VIP_server2_lab_redhat_com="10.0.2.2"
|
||
|
diff --git a/extras/ganesha/scripts/Makefile.am b/extras/ganesha/scripts/Makefile.am
|
||
|
new file mode 100644
|
||
|
index 0000000..00a2c45
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/scripts/Makefile.am
|
||
|
@@ -0,0 +1,4 @@
|
||
|
+EXTRA_DIST= create-export-ganesha.sh generate-epoch.py dbus-send.sh
|
||
|
+
|
||
|
+scriptsdir = $(libexecdir)/ganesha
|
||
|
+scripts_SCRIPTS = create-export-ganesha.sh dbus-send.sh generate-epoch.py
|
||
|
diff --git a/extras/ganesha/scripts/create-export-ganesha.sh b/extras/ganesha/scripts/create-export-ganesha.sh
|
||
|
new file mode 100755
|
||
|
index 0000000..1ffba42
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/scripts/create-export-ganesha.sh
|
||
|
@@ -0,0 +1,91 @@
|
||
|
+#!/bin/bash
|
||
|
+
|
||
|
+#This script is called by glusterd when the user
|
||
|
+#tries to export a volume via NFS-Ganesha.
|
||
|
+#An export file specific to a volume
|
||
|
+#is created in GANESHA_DIR/exports.
|
||
|
+
|
||
|
+# Try loading the config from any of the distro
|
||
|
+# specific configuration locations
|
||
|
+if [ -f /etc/sysconfig/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/sysconfig/ganesha
|
||
|
+fi
|
||
|
+if [ -f /etc/conf.d/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/conf.d/ganesha
|
||
|
+fi
|
||
|
+if [ -f /etc/default/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/default/ganesha
|
||
|
+fi
|
||
|
+
|
||
|
+GANESHA_DIR=${1%/}
|
||
|
+OPTION=$2
|
||
|
+VOL=$3
|
||
|
+CONF=$GANESHA_DIR"/ganesha.conf"
|
||
|
+declare -i EXPORT_ID
|
||
|
+
|
||
|
+function check_cmd_status()
|
||
|
+{
|
||
|
+ if [ "$1" != "0" ]
|
||
|
+ then
|
||
|
+ rm -rf $GANESHA_DIR/exports/export.$VOL.conf
|
||
|
+ sed -i /$VOL.conf/d $CONF
|
||
|
+ exit 1
|
||
|
+ fi
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+if [ ! -d "$GANESHA_DIR/exports" ];
|
||
|
+ then
|
||
|
+ mkdir $GANESHA_DIR/exports
|
||
|
+ check_cmd_status `echo $?`
|
||
|
+fi
|
||
|
+
|
||
|
+function write_conf()
|
||
|
+{
|
||
|
+echo -e "# WARNING : Using Gluster CLI will overwrite manual
|
||
|
+# changes made to this file. To avoid it, edit the
|
||
|
+# file and run ganesha-ha.sh --refresh-config."
|
||
|
+
|
||
|
+echo "EXPORT{"
|
||
|
+echo " Export_Id = 2;"
|
||
|
+echo " Path = \"/$VOL\";"
|
||
|
+echo " FSAL {"
|
||
|
+echo " name = "GLUSTER";"
|
||
|
+echo " hostname=\"localhost\";"
|
||
|
+echo " volume=\"$VOL\";"
|
||
|
+echo " }"
|
||
|
+echo " Access_type = RW;"
|
||
|
+echo " Disable_ACL = true;"
|
||
|
+echo ' Squash="No_root_squash";'
|
||
|
+echo " Pseudo=\"/$VOL\";"
|
||
|
+echo ' Protocols = "3", "4" ;'
|
||
|
+echo ' Transports = "UDP","TCP";'
|
||
|
+echo ' SecType = "sys";'
|
||
|
+echo " }"
|
||
|
+}
|
||
|
+if [ "$OPTION" = "on" ];
|
||
|
+then
|
||
|
+ if ! (cat $CONF | grep $VOL.conf\"$ )
|
||
|
+ then
|
||
|
+ write_conf $@ > $GANESHA_DIR/exports/export.$VOL.conf
|
||
|
+ echo "%include \"$GANESHA_DIR/exports/export.$VOL.conf\"" >> $CONF
|
||
|
+ count=`ls -l $GANESHA_DIR/exports/*.conf | wc -l`
|
||
|
+ if [ "$count" = "1" ] ; then
|
||
|
+ EXPORT_ID=2
|
||
|
+ else
|
||
|
+ EXPORT_ID=`cat $GANESHA_DIR/.export_added`
|
||
|
+ check_cmd_status `echo $?`
|
||
|
+ EXPORT_ID=EXPORT_ID+1
|
||
|
+ sed -i s/Export_Id.*/"Export_Id= $EXPORT_ID ;"/ \
|
||
|
+ $GANESHA_DIR/exports/export.$VOL.conf
|
||
|
+ check_cmd_status `echo $?`
|
||
|
+ fi
|
||
|
+ echo $EXPORT_ID > $GANESHA_DIR/.export_added
|
||
|
+ fi
|
||
|
+else
|
||
|
+ rm -rf $GANESHA_DIR/exports/export.$VOL.conf
|
||
|
+ sed -i /$VOL.conf/d $CONF
|
||
|
+fi
|
||
|
diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh
|
||
|
new file mode 100755
|
||
|
index 0000000..ec8d948
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/scripts/dbus-send.sh
|
||
|
@@ -0,0 +1,60 @@
|
||
|
+#!/bin/bash
|
||
|
+
|
||
|
+# Try loading the config from any of the distro
|
||
|
+# specific configuration locations
|
||
|
+if [ -f /etc/sysconfig/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/sysconfig/ganesha
|
||
|
+fi
|
||
|
+if [ -f /etc/conf.d/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/conf.d/ganesha
|
||
|
+fi
|
||
|
+if [ -f /etc/default/ganesha ]
|
||
|
+ then
|
||
|
+ . /etc/default/ganesha
|
||
|
+fi
|
||
|
+
|
||
|
+GANESHA_DIR=${1%/}
|
||
|
+OPTION=$2
|
||
|
+VOL=$3
|
||
|
+CONF=$GANESHA_DIR"/ganesha.conf"
|
||
|
+
|
||
|
+function check_cmd_status()
|
||
|
+{
|
||
|
+ if [ "$1" != "0" ]
|
||
|
+ then
|
||
|
+ logger "dynamic export failed on node :${hostname -s}"
|
||
|
+ fi
|
||
|
+}
|
||
|
+
|
||
|
+#This function keeps track of export IDs and increments it with every new entry
|
||
|
+function dynamic_export_add()
|
||
|
+{
|
||
|
+ dbus-send --system \
|
||
|
+--dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
|
||
|
+org.ganesha.nfsd.exportmgr.AddExport string:$GANESHA_DIR/exports/export.$VOL.conf \
|
||
|
+string:"EXPORT(Path=/$VOL)"
|
||
|
+ check_cmd_status `echo $?`
|
||
|
+}
|
||
|
+
|
||
|
+#This function removes an export dynamically(uses the export_id of the export)
|
||
|
+function dynamic_export_remove()
|
||
|
+{
|
||
|
+ removed_id=`cat $GANESHA_DIR/exports/export.$VOL.conf |\
|
||
|
+grep Export_Id | awk -F"[=,;]" '{print$2}'| tr -d '[[:space:]]'`
|
||
|
+ dbus-send --print-reply --system \
|
||
|
+--dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
|
||
|
+org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id
|
||
|
+ check_cmd_status `echo $?`
|
||
|
+}
|
||
|
+
|
||
|
+if [ "$OPTION" = "on" ];
|
||
|
+then
|
||
|
+ dynamic_export_add $@
|
||
|
+fi
|
||
|
+
|
||
|
+if [ "$OPTION" = "off" ];
|
||
|
+then
|
||
|
+ dynamic_export_remove $@
|
||
|
+fi
|
||
|
diff --git a/extras/ganesha/scripts/generate-epoch.py b/extras/ganesha/scripts/generate-epoch.py
|
||
|
new file mode 100755
|
||
|
index 0000000..5db5e56
|
||
|
--- /dev/null
|
||
|
+++ b/extras/ganesha/scripts/generate-epoch.py
|
||
|
@@ -0,0 +1,48 @@
|
||
|
+#!/usr/bin/python
|
||
|
+#
|
||
|
+# Copyright (c) 2016 Red Hat, Inc. <http://www.redhat.com>
|
||
|
+# This file is part of GlusterFS.
|
||
|
+#
|
||
|
+# This file is licensed to you under your choice of the GNU Lesser
|
||
|
+# General Public License, version 3 or any later version (LGPLv3 or
|
||
|
+# later), or the GNU General Public License, version 2 (GPLv2), in all
|
||
|
+# cases as published by the Free Software Foundation.
|
||
|
+#
|
||
|
+# Generates unique epoch value on each gluster node to be used by
|
||
|
+# nfs-ganesha service on that node.
|
||
|
+#
|
||
|
+# Configure 'EPOCH_EXEC' option to this script path in
|
||
|
+# '/etc/sysconfig/ganesha' file used by nfs-ganesha service.
|
||
|
+#
|
||
|
+# Construct epoch as follows -
|
||
|
+# first 32-bit contains the now() time
|
||
|
+# rest 32-bit value contains the local glusterd node uuid
|
||
|
+
|
||
|
+import time
|
||
|
+import binascii
|
||
|
+
|
||
|
+# Calculate the now() time into a 64-bit integer value
|
||
|
+def epoch_now():
|
||
|
+ epoch_time = int(time.mktime(time.localtime())) << 32
|
||
|
+ return epoch_time
|
||
|
+
|
||
|
+# Read glusterd UUID and extract first 32-bit of it
|
||
|
+def epoch_uuid():
|
||
|
+ file_name = '/var/lib/glusterd/glusterd.info'
|
||
|
+
|
||
|
+ for line in open(file_name):
|
||
|
+ if "UUID" in line:
|
||
|
+ glusterd_uuid = line.split('=')[1].strip()
|
||
|
+
|
||
|
+ uuid_bin = binascii.unhexlify(glusterd_uuid.replace("-",""))
|
||
|
+
|
||
|
+ epoch_uuid = int(uuid_bin.encode('hex'), 32) & 0xFFFF0000
|
||
|
+ return epoch_uuid
|
||
|
+
|
||
|
+# Construct epoch as follows -
|
||
|
+# first 32-bit contains the now() time
|
||
|
+# rest 32-bit value contains the local glusterd node uuid
|
||
|
+epoch = (epoch_now() | epoch_uuid())
|
||
|
+print str(epoch)
|
||
|
+
|
||
|
+exit(0)
|
||
|
diff --git a/extras/hook-scripts/start/post/Makefile.am b/extras/hook-scripts/start/post/Makefile.am
|
||
|
index e32546d..792019d 100644
|
||
|
--- a/extras/hook-scripts/start/post/Makefile.am
|
||
|
+++ b/extras/hook-scripts/start/post/Makefile.am
|
||
|
@@ -1,4 +1,4 @@
|
||
|
-EXTRA_DIST = S29CTDBsetup.sh S30samba-start.sh
|
||
|
+EXTRA_DIST = S29CTDBsetup.sh S30samba-start.sh S31ganesha-start.sh
|
||
|
|
||
|
hookdir = $(GLUSTERD_WORKDIR)/hooks/1/start/post/
|
||
|
if WITH_SERVER
|
||
|
diff --git a/extras/hook-scripts/start/post/S31ganesha-start.sh b/extras/hook-scripts/start/post/S31ganesha-start.sh
|
||
|
new file mode 100755
|
||
|
index 0000000..90ba6bc
|
||
|
--- /dev/null
|
||
|
+++ b/extras/hook-scripts/start/post/S31ganesha-start.sh
|
||
|
@@ -0,0 +1,122 @@
|
||
|
+#!/bin/bash
|
||
|
+PROGNAME="Sganesha-start"
|
||
|
+OPTSPEC="volname:,gd-workdir:"
|
||
|
+VOL=
|
||
|
+declare -i EXPORT_ID
|
||
|
+ganesha_key="ganesha.enable"
|
||
|
+GANESHA_DIR="/var/run/gluster/shared_storage/nfs-ganesha"
|
||
|
+CONF1="$GANESHA_DIR/ganesha.conf"
|
||
|
+GLUSTERD_WORKDIR=
|
||
|
+
|
||
|
+function parse_args ()
|
||
|
+{
|
||
|
+ ARGS=$(getopt -l $OPTSPEC -o "o" -name $PROGNAME $@)
|
||
|
+ eval set -- "$ARGS"
|
||
|
+
|
||
|
+ while true; do
|
||
|
+ case $1 in
|
||
|
+ --volname)
|
||
|
+ shift
|
||
|
+ VOL=$1
|
||
|
+ ;;
|
||
|
+ --gd-workdir)
|
||
|
+ shift
|
||
|
+ GLUSTERD_WORKDIR=$1
|
||
|
+ ;;
|
||
|
+ *)
|
||
|
+ shift
|
||
|
+ break
|
||
|
+ ;;
|
||
|
+ esac
|
||
|
+ shift
|
||
|
+ done
|
||
|
+}
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+#This function generates a new export entry as export.volume_name.conf
|
||
|
+function write_conf()
|
||
|
+{
|
||
|
+echo -e "# WARNING : Using Gluster CLI will overwrite manual
|
||
|
+# changes made to this file. To avoid it, edit the
|
||
|
+# file, copy it over to all the NFS-Ganesha nodes
|
||
|
+# and run ganesha-ha.sh --refresh-config."
|
||
|
+
|
||
|
+echo "EXPORT{"
|
||
|
+echo " Export_Id = 2;"
|
||
|
+echo " Path = \"/$VOL\";"
|
||
|
+echo " FSAL {"
|
||
|
+echo " name = \"GLUSTER\";"
|
||
|
+echo " hostname=\"localhost\";"
|
||
|
+echo " volume=\"$VOL\";"
|
||
|
+echo " }"
|
||
|
+echo " Access_type = RW;"
|
||
|
+echo " Disable_ACL = true;"
|
||
|
+echo " Squash=\"No_root_squash\";"
|
||
|
+echo " Pseudo=\"/$VOL\";"
|
||
|
+echo " Protocols = \"3\", \"4\" ;"
|
||
|
+echo " Transports = \"UDP\",\"TCP\";"
|
||
|
+echo " SecType = \"sys\";"
|
||
|
+echo "}"
|
||
|
+}
|
||
|
+
|
||
|
+#It adds the export dynamically by sending dbus signals
|
||
|
+function export_add()
|
||
|
+{
|
||
|
+ dbus-send --print-reply --system --dest=org.ganesha.nfsd \
|
||
|
+/org/ganesha/nfsd/ExportMgr org.ganesha.nfsd.exportmgr.AddExport \
|
||
|
+string:$GANESHA_DIR/exports/export.$VOL.conf string:"EXPORT(Export_Id=$EXPORT_ID)"
|
||
|
+
|
||
|
+}
|
||
|
+
|
||
|
+# based on src/scripts/ganeshactl/Ganesha/export_mgr.py
|
||
|
+function is_exported()
|
||
|
+{
|
||
|
+ local volume="${1}"
|
||
|
+
|
||
|
+ dbus-send --type=method_call --print-reply --system \
|
||
|
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
|
||
|
+ org.ganesha.nfsd.exportmgr.ShowExports \
|
||
|
+ | grep -w -q "/${volume}"
|
||
|
+
|
||
|
+ return $?
|
||
|
+}
|
||
|
+
|
||
|
+# Check the info file (contains the volume options) to see if Ganesha is
|
||
|
+# enabled for this volume.
|
||
|
+function ganesha_enabled()
|
||
|
+{
|
||
|
+ local volume="${1}"
|
||
|
+ local info_file="${GLUSTERD_WORKDIR}/vols/${VOL}/info"
|
||
|
+ local enabled="off"
|
||
|
+
|
||
|
+ enabled=$(grep -w ${ganesha_key} ${info_file} | cut -d"=" -f2)
|
||
|
+
|
||
|
+ [ "${enabled}" == "on" ]
|
||
|
+
|
||
|
+ return $?
|
||
|
+}
|
||
|
+
|
||
|
+parse_args $@
|
||
|
+
|
||
|
+if ganesha_enabled ${VOL} && ! is_exported ${VOL}
|
||
|
+then
|
||
|
+ if [ ! -e ${GANESHA_DIR}/exports/export.${VOL}.conf ]
|
||
|
+ then
|
||
|
+ #Remove export entry from nfs-ganesha.conf
|
||
|
+ sed -i /$VOL.conf/d $CONF1
|
||
|
+ write_conf ${VOL} > ${GANESHA_DIR}/exports/export.${VOL}.conf
|
||
|
+ EXPORT_ID=`cat $GANESHA_DIR/.export_added`
|
||
|
+ EXPORT_ID=EXPORT_ID+1
|
||
|
+ echo $EXPORT_ID > $GANESHA_DIR/.export_added
|
||
|
+ sed -i s/Export_Id.*/"Export_Id=$EXPORT_ID;"/ \
|
||
|
+ $GANESHA_DIR/exports/export.$VOL.conf
|
||
|
+ echo "%include \"$GANESHA_DIR/exports/export.$VOL.conf\"" >> $CONF1
|
||
|
+ else
|
||
|
+ EXPORT_ID=$(grep ^[[:space:]]*Export_Id $GANESHA_DIR/exports/export.$VOL.conf |\
|
||
|
+ awk -F"[=,;]" '{print $2}' | tr -d '[[:space:]]')
|
||
|
+ fi
|
||
|
+ export_add $VOL
|
||
|
+fi
|
||
|
+
|
||
|
+exit 0
|
||
|
diff --git a/glusterfs.spec.in b/glusterfs.spec.in
|
||
|
index 0d57b49..dd7438c 100644
|
||
|
--- a/glusterfs.spec.in
|
||
|
+++ b/glusterfs.spec.in
|
||
|
@@ -299,7 +299,6 @@ Obsoletes: hekafs
|
||
|
Obsoletes: %{name}-common < %{version}-%{release}
|
||
|
Obsoletes: %{name}-core < %{version}-%{release}
|
||
|
Obsoletes: %{name}-ufo
|
||
|
-Obsoletes: %{name}-ganesha
|
||
|
%if ( 0%{!?_with_gnfs:1} )
|
||
|
Obsoletes: %{name}-gnfs
|
||
|
%endif
|
||
|
@@ -455,6 +454,30 @@ is in user space and easily manageable.
|
||
|
This package provides support to FUSE based clients and inlcudes the
|
||
|
glusterfs(d) binary.
|
||
|
|
||
|
+%if ( 0%{!?_without_server:1} )
|
||
|
+%package ganesha
|
||
|
+Summary: NFS-Ganesha configuration
|
||
|
+Group: Applications/File
|
||
|
+
|
||
|
+Requires: %{name}-server%{?_isa} = %{version}-%{release}
|
||
|
+Requires: nfs-ganesha-gluster, pcs, dbus
|
||
|
+%if ( 0%{?rhel} && 0%{?rhel} == 6 )
|
||
|
+Requires: cman, pacemaker, corosync
|
||
|
+%endif
|
||
|
+
|
||
|
+%description ganesha
|
||
|
+GlusterFS is a distributed file-system capable of scaling to several
|
||
|
+petabytes. It aggregates various storage bricks over Infiniband RDMA
|
||
|
+or TCP/IP interconnect into one large parallel network file
|
||
|
+system. GlusterFS is one of the most sophisticated file systems in
|
||
|
+terms of features and extensibility. It borrows a powerful concept
|
||
|
+called Translators from GNU Hurd kernel. Much of the code in GlusterFS
|
||
|
+is in user space and easily manageable.
|
||
|
+
|
||
|
+This package provides the configuration and related files for using
|
||
|
+NFS-Ganesha as the NFS server using GlusterFS
|
||
|
+%endif
|
||
|
+
|
||
|
%if ( 0%{!?_without_georeplication:1} )
|
||
|
%package geo-replication
|
||
|
Summary: GlusterFS Geo-replication
|
||
|
@@ -1111,6 +1134,12 @@ exit 0
|
||
|
%endif
|
||
|
%endif
|
||
|
|
||
|
+%if ( 0%{?_without_server:1} )
|
||
|
+#exclude ganesha related files
|
||
|
+%exclude %{_sysconfdir}/ganesha/*
|
||
|
+%exclude %{_libexecdir}/ganesha/*
|
||
|
+%endif
|
||
|
+
|
||
|
%files api
|
||
|
%exclude %{_libdir}/*.so
|
||
|
# libgfapi files
|
||
|
@@ -1273,6 +1302,12 @@ exit 0
|
||
|
%exclude %{_datadir}/glusterfs/tests/vagrant
|
||
|
%endif
|
||
|
|
||
|
+%if ( 0%{!?_without_server:1} )
|
||
|
+%files ganesha
|
||
|
+%{_sysconfdir}/ganesha/*
|
||
|
+%{_libexecdir}/ganesha/*
|
||
|
+%endif
|
||
|
+
|
||
|
%if ( 0%{!?_without_ocf:1} )
|
||
|
%files resource-agents
|
||
|
# /usr/lib is the standard for OCF, also on x86_64
|
||
|
@@ -1396,6 +1431,7 @@ exit 0
|
||
|
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post
|
||
|
%attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post/S29CTDBsetup.sh
|
||
|
%attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post/S30samba-start.sh
|
||
|
+ %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post/S31ganesha-start.sh
|
||
|
%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/pre
|
||
|
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop
|
||
|
%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/post
|
||
|
@@ -1868,6 +1904,9 @@ fi
|
||
|
%endif
|
||
|
|
||
|
%changelog
|
||
|
+* Fri Apr 5 2019 Jiffin Tony Thottan <jthottan@redhat.com>
|
||
|
+- Adding ganesha bits back in gluster repository
|
||
|
+
|
||
|
* Wed Mar 6 2019 Kaleb S. KEITHLEY <kkeithle@redhat.com>
|
||
|
- remove unneeded ldconfig in scriptlets
|
||
|
- reported by Igor Gnatenko in Fedora
|
||
|
@@ -1960,9 +1999,6 @@ fi
|
||
|
* Thu Feb 16 2017 Niels de Vos <ndevos@redhat.com>
|
||
|
- Obsolete and Provide python-gluster for upgrading from glusterfs < 3.10
|
||
|
|
||
|
-* Tue Feb 7 2017 Kaleb S. KEITHLEY <kkeithle@redhat.com>
|
||
|
-- remove ganesha (#1418417)
|
||
|
-
|
||
|
* Wed Feb 1 2017 Poornima G <pgurusid@redhat.com>
|
||
|
- Install /var/lib/glusterd/groups/metadata-cache by default
|
||
|
|
||
|
--
|
||
|
1.8.3.1
|
||
|
|