From 51456071969407512957293fe54d1b59ea665f7b Mon Sep 17 00:00:00 2001 From: Victoria Martinez de la Cruz Date: Thu, 15 Dec 2016 17:46:43 -0300 Subject: [PATCH] Adds support for NFS Ganesha Elements were already available for use with containers. A few updates on the elements were made in order to get the latest changes for NFS Ganesha. Closes-Bug: #1649404 Change-Id: I605e8a3793ec1dde1efcfcef2a84c42abe5219de --- README.rst | 2 +- bin/manila-image-create | 10 ++- .../install.d/50-manila-ganesha-nfs | 35 --------- .../manila-ganesha-nfs/install.d/nfs-ganesha | 71 ------------------- .../manila-ganesha-nfs/package-installs.yaml | 9 --- .../install.d/50-manila-nfs-ganesha | 32 +++++++++ .../manila-nfs-ganesha/package-installs.yaml | 17 +++++ 7 files changed, 57 insertions(+), 119 deletions(-) delete mode 100755 elements/manila-ganesha-nfs/install.d/50-manila-ganesha-nfs delete mode 100644 elements/manila-ganesha-nfs/install.d/nfs-ganesha delete mode 100644 elements/manila-ganesha-nfs/package-installs.yaml create mode 100755 elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha create mode 100644 elements/manila-nfs-ganesha/package-installs.yaml diff --git a/README.rst b/README.rst index 24f5c8e..4bb9ebc 100644 --- a/README.rst +++ b/README.rst @@ -48,7 +48,7 @@ Precisely, the syntax is as follows: tox -e buildimage -- -s nfs -Where can be nfs, cifs or zfs. +Where can be nfs, cifs, zfs or nfs-ganesha. For example, running: diff --git a/bin/manila-image-create b/bin/manila-image-create index 1c2c0d7..6899ed3 100755 --- a/bin/manila-image-create +++ b/bin/manila-image-create @@ -56,15 +56,17 @@ err() { print_usage() { echo "Usage: ${0##*/} [-s share-proto] [-h]" echo "Options:" - echo " -s | --share-proto: name of the share protocol. Possible options are nfs, cifs or zfs" + echo " -s | --share-proto: name of the share protocol. \ + Possible options are nfs, nfs-ganesha, cifs or zfs" echo " -h | --help: print this usage message and exit" echo "" echo "Usage example: manila_image_elements -s nfs" } valid_share_protocol(){ - if [ "${MANILA_SHARE_PROTO}" != "nfs" ] && [ "${MANILA_SHARE_PROTO}" != "cifs" ] && [ "${MANILA_SHARE_PROTO}" != "zfs" ]; then - err "Protocol ${MANILA_SHARE_PROTO} not supported. Valid options are nfs, cifs or zfs." + if [ "${MANILA_SHARE_PROTO}" != "nfs" ] && [ "${MANILA_SHARE_PROTO}" != "nfs-ganesha" ] && + [ "${MANILA_SHARE_PROTO}" != "cifs" ] && [ "${MANILA_SHARE_PROTO}" != "zfs" ]; then + err "Protocol ${MANILA_SHARE_PROTO} not supported. Valid options are nfs, nfs-ganesha, cifs or zfs." exit 1 fi } @@ -106,6 +108,8 @@ configure() { OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs manila-cifs" elif [ "$MANILA_SHARE_PROTO" = "nfs" ]; then OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs" + elif [ "$MANILA_SHARE_PROTO" = "nfs-ganesha" ]; then + OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-nfs-ganesha" elif [ "$MANILA_SHARE_PROTO" = "cifs" ]; then OPTIONAL_ELEMENTS="$OPTIONAL_ELEMENTS manila-cifs" elif [ "$MANILA_SHARE_PROTO" = "zfs" ]; then diff --git a/elements/manila-ganesha-nfs/install.d/50-manila-ganesha-nfs b/elements/manila-ganesha-nfs/install.d/50-manila-ganesha-nfs deleted file mode 100755 index 5d97a8c..0000000 --- a/elements/manila-ganesha-nfs/install.d/50-manila-ganesha-nfs +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then - set -x -fi -set -eu -set -o pipefail - -SCRIPTDIR=$(dirname $0) - -# Install required packages -install-packages git-core cmake build-essential libkrb5-dev bison flex - -# Build nfs-ganesha -cd /usr/src -# TODO(u_glide): Move branch to config option through "environment.d" -git config --global http.sslVerify false -git clone --depth 5 --recursive -b "V2.2-stable" \ - https://github.com/nfs-ganesha/nfs-ganesha.git -cd nfs-ganesha -mkdir build && cd build -cmake ../src && make - -# Install nfs-ganesha -sudo make install - -# (aovchinnikov): This will be used later on when all peculiarities of -# running ganesha inside a container are sorted out. -#sudo cp ../src/scripts/ganeshactl/org.ganesha.nfsd.conf /etc/dbus-1/system.d/ -#install -D -g root -o root -m 0755 \ -# ${SCRIPTDIR}/nfs-ganesha /etc/init.d/nfs-ganesha -#sudo update-rc.d nfs-ganesha defaults - -# Remove sources -cd /usr/src && rm -fR nfs-ganesha diff --git a/elements/manila-ganesha-nfs/install.d/nfs-ganesha b/elements/manila-ganesha-nfs/install.d/nfs-ganesha deleted file mode 100644 index e5f2a71..0000000 --- a/elements/manila-ganesha-nfs/install.d/nfs-ganesha +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -# nfs-ganesha init script for ubuntu - - -# source function library -. /lib/lsb/init-functions - -PATHPROG=/usr/bin/ganesha.nfsd - -LOGFILE=/var/log/ganesha.log -CONFFILE=/etc/ganesha/ganesha.conf - -prog=ganesha.nfsd -PID_FILE=${PID_FILE:=/var/run/${prog}.pid} -LOCK_FILE=${LOCK_FILE:=/var/lock/subsys/${prog}} - -[ -f /etc/sysconfig/ganesha ] && . /etc/sysconfig/ganesha - -OPTIONS="-L $LOGFILE -f $CONFFILE -N NIV_EVENT" -RETVAL=0 - - -start() { - log_daemon_msg "Starting $prog" - - start-stop-daemon \ - --start --oknodo --pidfile "$PID_FILE" --exec $PATHPROG -- $OPTIONS - - status=$? - [ $status = 0 ] - log_end_msg $status - echo -} - -stop() { - log_daemon_msg "Stopping $prog" - start-stop-daemon \ - --stop --quiet --retry 5 --oknodo --pidfile $PID_FILE - status=$? - log_end_msg $status -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - sleep 3 - start - ;; - status) - if pidof ganesha.nfsd >/dev/null - then - echo "ganesha.nfsd running" - exit 0 - else - echo "ganesha.nfsd not running" - exit 3 - fi - ;; - *) - echo $"Usage: $0 {start|stop|restart|reload|try-restart|status}" - RETVAL=1 -esac - -exit $RETVAL diff --git a/elements/manila-ganesha-nfs/package-installs.yaml b/elements/manila-ganesha-nfs/package-installs.yaml deleted file mode 100644 index d108109..0000000 --- a/elements/manila-ganesha-nfs/package-installs.yaml +++ /dev/null @@ -1,9 +0,0 @@ -cmake: - phase: post-install.d - uninstall: True -build-essential: - phase: post-install.d - uninstall: True -git-core: - phase: post-install.d - uninstall: True diff --git a/elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha b/elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha new file mode 100755 index 0000000..c15e6ce --- /dev/null +++ b/elements/manila-nfs-ganesha/install.d/50-manila-nfs-ganesha @@ -0,0 +1,32 @@ +#!/bin/bash + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +SCRIPTDIR=$(dirname $0) + +# Build nfs-ganesha +cd /usr/src +# TODO(u_glide): Move branch to config option through "environment.d" +git config --global http.sslVerify false +git clone --recursive -b next https://github.com/nfs-ganesha/nfs-ganesha +cd nfs-ganesha +mkdir build && cd build +cmake -DUSE_DBUS=ON ../src +make +make install + +# Set up systemd unit files for Xenial +cp ../src/scripts/systemd/*.service /lib/systemd/system/ +sed -i '/^ExecStart.*/c\ExecStart=\/usr\/lib\/systemd\/scripts\/nfs-ganesha-config.sh' /lib/systemd/system/nfs-ganesha-config.service +cp ../src/scripts/nfs-ganesha-config.sh /usr/lib/systemd/scripts/ +chmod 755 /usr/lib/systemd/scripts/nfs-ganesha-config.sh +mkdir -p /etc/sysconfig +cp ../src/scripts/systemd/sysconfig/nfs-ganesha /etc/sysconfig/ganesha +cp ../src/scripts/ganeshactl/org.ganesha.nfsd.conf /etc/dbus-1/system.d/ + +# Remove sources +cd /usr/src && rm -Rf nfs-ganesha diff --git a/elements/manila-nfs-ganesha/package-installs.yaml b/elements/manila-nfs-ganesha/package-installs.yaml new file mode 100644 index 0000000..3773311 --- /dev/null +++ b/elements/manila-nfs-ganesha/package-installs.yaml @@ -0,0 +1,17 @@ +bison: +build-essential: +cmake: +dbus: +flex: +git-core: +libcephfs-dev: +libdbus-1-dev: +libkrb5-dev: +libtirpc1: +libssl-dev: +nfs-common: +pkg-config: +rpcbind: +uuid-dev: +libcap-dev: +libblkid-dev: