[packages/targetcli-fb] init script and systemd service added

jajcus jajcus at pld-linux.org
Sun Jan 5 21:13:44 CET 2014


commit 423b09270509ef5ae7bb5716e60662b52918dd5a
Author: Jacek Konieczny <jajcus at jajcus.net>
Date:   Sun Jan 5 21:12:21 2014 +0100

    init script and systemd service added

 targetcli-fb.spec |  28 ++++++++++++-
 targetcli.init    | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 targetcli.service |  14 +++++++
 3 files changed, 157 insertions(+), 1 deletion(-)
---
diff --git a/targetcli-fb.spec b/targetcli-fb.spec
index 8de4ecb..11e3dfd 100644
--- a/targetcli-fb.spec
+++ b/targetcli-fb.spec
@@ -7,8 +7,13 @@ Group:		Applications/System
 URL:		https://github.com/agrover/targetcli-fb
 Source0:	https://codeload.github.com/agrover/targetcli-fb/tar.gz/v%{version}
 # Source0-md5:	758f89dbc40ba54e7f9f901677031fa0
+Source1:	targetcli.service
+Source2:	targetcli.init
+BuildRequires:	rpmbuild(macros) >= 1.647
 Requires:	python-configshell-fb
 Requires:	python-rtslib-fb
+Requires(post,preun,postun):	systemd-units >= 38
+Requires:	systemd-units >= 38
 BuildArch:	noarch
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
@@ -24,7 +29,8 @@ generic SCSI target, present in 3.x Linux kernel versions.
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_mandir}/man8,/etc/target/backup}
+install -d $RPM_BUILD_ROOT{%{_mandir}/man8,/etc/target/backup} \
+	$RPM_BUILD_ROOT{%{systemdunitdir},/etc/rc.d/init.d}
 
 %{__python} setup.py \
 	install --skip-build \
@@ -35,9 +41,27 @@ install -d $RPM_BUILD_ROOT{%{_mandir}/man8,/etc/target/backup}
 
 install targetcli.8 $RPM_BUILD_ROOT%{_mandir}/man8/
 
+install %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}/targetcli.service
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/targetcli
+
 # empty JSON file
 echo "{}" > $RPM_BUILD_ROOT/etc/target/saveconfig.json
 
+%post
+/sbin/chkconfig --add targetcli
+%service targetcli restart
+%systemd_post .service
+
+%preun
+if [ "$1" = "0" ]; then
+	%service -q targetcli stop
+	/sbin/chkconfig --del targetcli
+fi
+%systemd_preun targetcli.service
+
+%postun
+%systemd_reload
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -52,3 +76,5 @@ rm -rf $RPM_BUILD_ROOT
 %attr(750,root,root) %dir /etc/target
 %attr(750,root,root) %dir /etc/target/backup
 %attr(640,root,root) /etc/target/saveconfig.json
+%attr(754,root,root) /etc/rc.d/init.d/targetcli
+%{systemdunitdir}/targetcli.service
diff --git a/targetcli.init b/targetcli.init
new file mode 100644
index 0000000..041e112
--- /dev/null
+++ b/targetcli.init
@@ -0,0 +1,116 @@
+#!/bin/sh
+#
+# targetcli	iSCSI target kernel configuration
+#
+# chkconfig:	345 70 20
+# description:	iSCSI target kernel configuration
+# config:	/etc/target/saveconfig.json
+
+# 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 targetcli
+		exit 1
+	fi
+else
+	exit 0
+fi
+
+start() {
+	# Check if the service is already running?
+	if [ ! -f /var/lock/subsys/targetcli ]; then
+		msg_starting targetcli
+		if /usr/bin/targetcli restoreconfig clear_existing=true > /dev/null ; then
+			ok
+			touch /var/lock/subsys/targetcli
+			RETVAL=0
+		else
+			fail
+			RETVAL=1
+		fi
+	else
+		msg_already_running targetcli
+	fi
+}
+
+stop() {
+	if [ -f /var/lock/subsys/targetcli ]; then
+		msg_stopping targetcli
+		if /usr/bin/targetcli clearconfig confirm=true >/dev/null ; then
+			ok
+			rm -f /var/lock/subsys/targetcli > /dev/null 2>&1
+			RETVAL=0
+		else
+			fail
+			RETVAL=1
+		fi
+	else
+		msg_not_running targetcli
+	fi
+}
+
+condrestart() {
+	if [ -f /var/lock/subsys/targetcli ]; then
+		stop
+		start
+	else
+		msg_not_running targetcli
+		RETVAL=$1
+	fi
+}
+
+reload() {
+	if [ -f /var/lock/subsys/targetcli ]; then
+		msg_reloading targetcli
+		if /usr/bin/targetcli restoreconfig clear_existing=true >/dev/null ; then
+			ok
+			RETVAL=0
+		else
+			fail
+			RETVAL=1
+		fi
+	else
+		msg_not_running targetcli
+		RETVAL=7
+	fi
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+  	start
+	;;
+  stop)
+  	stop
+	;;
+  restart)
+	stop
+	start
+	;;
+  try-restart)
+	condrestart 0
+	;;
+  reload|force-reload)
+	reload
+	;;
+  status)
+	if [ -f /var/lock/subsys/targetcli ]; then
+		nls "%s was started" "targetcli"
+		RETVAL=0
+	else
+		nls "%s is stopped" "targetcli"
+		RETVAL=3
+	fi
+	;;
+  *)
+	msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
+	exit 3
+esac
+exit $RETVAL
diff --git a/targetcli.service b/targetcli.service
new file mode 100644
index 0000000..6fc25de
--- /dev/null
+++ b/targetcli.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Restore iSCSI target kernel configuration
+Requires=sys-kernel-config.mount
+After=sys-kernel-config.mount network.target local-fs.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/targetcli restoreconfig clear_existing=true
+ExecStop=/usr/bin/targetcli clearconfig confirm=true
+SyslogIdentifier=targetcli
+
+[Install]
+WantedBy=multi-user.target
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/targetcli-fb.git/commitdiff/910f4fd94e2caf001443e33f43ed5748f219fed8



More information about the pld-cvs-commit mailing list