From d4112a2ee8e9dc8f9d3d6fdf77933582be1aa2e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20Ko=C5=9Bka?= <pawel@viop.pl>
Date: Thu, 21 Feb 2013 13:49:20 +0100
Subject: [PATCH] Added init script for MFS Master

---
 mfs.spec            | 14 ++++++++
 mfsmaster.init      | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 mfsmaster.sysconfig |  3 ++
 3 files changed, 115 insertions(+)
 create mode 100644 mfsmaster.init
 create mode 100644 mfsmaster.sysconfig

diff --git a/mfs.spec b/mfs.spec
index 000187a..b66ac6a 100644
--- a/mfs.spec
+++ b/mfs.spec
@@ -8,6 +8,8 @@ License:	GPL v3
 Group:		Daemons
 Source0:	http://moosefs.com/tl_files/mfscode/%{name}-%{version}.tar.gz
 # Source0-md5:	e49294bb9f2cbfff907ffed4f6662a37
+Source1:	mfsmaster.init
+Source2:	mfsmaster.sysconfig
 URL:		http://www.moosefs.com/
 BuildRequires:	libfuse-devel
 BuildRequires:	pkgconfig
@@ -119,11 +121,15 @@ rm -rf $RPM_BUILD_ROOT
 
 %{__make} install \
 	DESTDIR=$RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/etc/{sysconfig,rc.d/init.d}
 
 for i in $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/*.dist; do
 	mv $i $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/`basename $i .dist`;
 done
 
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mfsmaster
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mfsmaster
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -131,8 +137,14 @@ rm -rf $RPM_BUILD_ROOT
 %groupadd -g 282 mfs
 %useradd -u 282 -d /var/lib/mfs -s /bin/false -c "MooseFS pseudo user" -g mfs mfs
 
+%post master
+/sbin/chkconfig --add mfsmaster
+%service mfsmaster restart "MFS Master service"
+
 %postun master
 if [ "$1" = "0" ]; then
+	%service mfsmaster stop
+	/sbin/chkconfig --del mfsmaster
 	%userremove mfs
 	%groupremove mfs
 fi
@@ -174,6 +186,8 @@ fi
 %attr(640,root,root) %config(noreplace) %{mfsconfdir}/mfsmaster.cfg
 %attr(750,mfs,mfs) %dir %{_localstatedir}/mfs
 %attr(640,mfs,mfs) %{_localstatedir}/mfs/metadata.mfs.empty
+%attr(754,root,root) /etc/rc.d/init.d/mfsmaster
+%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mfsmaster
 
 %files metalogger
 %defattr(644,root,root,755)
diff --git a/mfsmaster.init b/mfsmaster.init
new file mode 100644
index 0000000..6db19db
--- /dev/null
+++ b/mfsmaster.init
@@ -0,0 +1,98 @@
+#!/bin/sh
+#
+# MFS Master	MooseFS master service
+#
+# chkconfig:	345 85 24
+#
+# description:	MooseFS master service
+#
+# processname:	mfsmaster
+# config:	/etc/mfs/mfsmaster.cfg
+#
+# $Id: template.init 12320 2011-08-14 11:56:53Z glen $
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# Get network config
+. /etc/sysconfig/network
+
+# Check that networking is up.
+if is_yes "${NETWORKING}"; then
+	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+		msg_network_down "MFS Master"
+		exit 1
+	fi
+else
+	exit 0
+fi
+
+# Get service config - may override defaults
+[ -f /etc/sysconfig/mfsmaster ] && . /etc/sysconfig/mfsmaster
+
+cfg_file="/etc/mfs/mfsmaster.cfg"
+prog="mfsmaster"
+start() {
+	# Check if the service is already running?
+	if [ -f /var/lock/subsys/$prog ]; then
+		msg_already_running "MFS Master"
+		return
+	fi
+
+	msg_starting "MFS Master"
+	daemon $prog -c $cfg_file
+	RETVAL=$?
+	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
+}
+
+stop() {
+	if [ ! -f /var/lock/subsys/$prog ]; then
+		msg_not_running "MFS Master"
+		return
+	fi
+
+	# Stop daemons.
+	msg_stopping "MFS Master"
+	$prog stop  || killproc $prog
+	rm -f /var/lock/subsys/$prog
+}
+
+reload() {
+	if [ ! -f /var/lock/subsys/$prog ]; then
+		msg_not_running "MFS Master"
+		RETVAL=7
+		return
+	fi
+
+	msg_reloading "MFS Master"
+	$prog reload
+	RETVAL=$?
+}
+
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+	start
+	;;
+  stop)
+	stop
+	;;
+  restart)
+	stop
+	start
+	;;
+  reload)
+	reload
+	;;
+  status)
+	status $prog
+	RETVAL=$?
+	;;
+  *)
+	msg_usage "$0 {start|stop|restart|reload|status}"
+	exit 3
+esac
+
+exit $RETVAL
diff --git a/mfsmaster.sysconfig b/mfsmaster.sysconfig
new file mode 100644
index 0000000..e32df63
--- /dev/null
+++ b/mfsmaster.sysconfig
@@ -0,0 +1,3 @@
+# Customized settings for MFS Master
+# Nice level
+#SERVICE_RUN_NICE_LEVEL="+5"
-- 
1.8.0

