From dd839e65d9d59ef6f74202469887d8a34c8c9328 Mon Sep 17 00:00:00 2001 From: Robert Scheck Date: Jan 26 2016 21:41:28 +0000 Subject: Provide native systemd service --- diff --git a/drbdlinks.spec b/drbdlinks.spec index 75da396..9f2acb4 100644 --- a/drbdlinks.spec +++ b/drbdlinks.spec @@ -1,18 +1,27 @@ -Summary: A program for managing links into a DRBD shared partition -Name: drbdlinks -Version: 1.27 -Release: 2%{?dist} -License: GPLv2 -Group: Applications/System -URL: http://www.tummy.com/Community/software/%{name}/ -Source0: ftp://ftp.tummy.com/pub/tummy/%{name}/%{name}-%{version}.tar.gz -Source1: drbdlinksclean -Source2: drbdlinks.logrotate -Requires: python -Requires(post): /sbin/chkconfig -Requires(preun): /sbin/chkconfig -BuildArch: noarch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Summary: A program for managing links into a DRBD shared partition +Name: drbdlinks +Version: 1.27 +Release: 3%{?dist} +License: GPLv2 +Group: Applications/System +URL: http://www.tummy.com/Community/software/%{name}/ +Source0: ftp://ftp.tummy.com/pub/tummy/%{name}/%{name}-%{version}.tar.gz +Source1: drbdlinksclean +Source2: drbdlinks.logrotate +Source3: drbdlinksclean.service +Source4: drbdlinksclean-wrapper +Requires: python +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +BuildRequires: systemd +%else +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/chkconfig +%endif +BuildArch: noarch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description The drbdlinks program manages links into a DRBD partition which is shared @@ -44,7 +53,12 @@ mkdir -p $RPM_BUILD_ROOT{%{_sysconfdir}/ha.d/resource.d,/usr/lib/ocf/resource.d/ ln -s ../../..%{_sbindir}/%{name} $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/%{name} ln -s ../../../../..%{_sbindir}/%{name} $RPM_BUILD_ROOT/usr/lib/ocf/resource.d/tummy/%{name} install -D -p -m 644 %{name}.conf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +install -D -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_unitdir}/drbdlinksclean.service +install -D -p -m 755 %{SOURCE4} $RPM_BUILD_ROOT%{_libexecdir}/drbdlinksclean +%else install -D -p -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/drbdlinksclean +%endif install -D -p -m 644 %{name}.8 $RPM_BUILD_ROOT%{_mandir}/man8/%{name}.8 install -D -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/configs-to-clean @@ -55,18 +69,38 @@ mv -f README.markdown README rm -rf $RPM_BUILD_ROOT %post +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +%systemd_post drbdlinksclean.service +%else /sbin/chkconfig --add drbdlinksclean +%endif %preun +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +%systemd_preun drbdlinksclean.service +%else if [ $1 -eq 0 ]; then /sbin/service drbdlinksclean stop > /dev/null 2>&1 || : /sbin/chkconfig --del drbdlinksclean fi +%endif + +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +%postun +%systemd_postun drbdlinksclean.service +%endif %files %defattr(-,root,root,-) -%doc LICENSE README WHATSNEW +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc README WHATSNEW +%if 0%{?rhel} > 6 || 0%{?fedora} > 23 +%{_unitdir}/drbdlinksclean.service +%{_libexecdir}/drbdlinksclean +%else %{_sysconfdir}/rc.d/init.d/drbdlinksclean +%endif %config(noreplace) %{_sysconfdir}/%{name}.conf %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %{_sbindir}/%{name} @@ -76,6 +110,9 @@ fi %{_localstatedir}/lib/%{name}/ %changelog +* Tue Jan 26 2016 Robert Scheck 1.27-3 +- Provide native systemd service + * Wed Jun 17 2015 Fedora Release Engineering - 1.27-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild diff --git a/drbdlinksclean-wrapper b/drbdlinksclean-wrapper new file mode 100644 index 0000000..6e0ea9e --- /dev/null +++ b/drbdlinksclean-wrapper @@ -0,0 +1,39 @@ +#!/bin/bash + +RETVAL=0 +FOUNDFILE=0 +drbdlinks=/usr/sbin/drbdlinks + +[ -f /etc/drbdlinks.conf ] && FOUNDFILE=1 + +for FILE in /var/lib/drbdlinks/configs-to-clean/* /var/run/drbdlinks/configs-to-clean/*; do + if [ -f "$FILE" ]; then + FOUNDFILE=1 + break + fi +done + +if [ $FOUNDFILE -ne 1 ]; then + echo "No /etc/drbdlinks.conf file, aborting." + exit 1 +fi + +# Main drbdlinks.conf file +if [ -f /etc/drbdlinks.conf ]; then + if grep -q '^mountpoint(' /etc/drbdlinks.conf; then + $drbdlinks stop + RETVAL=$? + else + echo "No mountpoint found in /etc/drbdlinks.conf, skipping." + fi +fi + +# Clean up any supplemental config files +for FILE in /var/lib/drbdlinks/configs-to-clean/* /var/run/drbdlinks/configs-to-clean/*; do + if [ -f "$FILE" ]; then + echo "Cleaning up '${FILE##*/}' links..." + $drbdlinks --config-file "$FILE" stop || RETVAL=$? + fi +done + +exit $RETVAL diff --git a/drbdlinksclean.service b/drbdlinksclean.service new file mode 100644 index 0000000..ddd61a1 --- /dev/null +++ b/drbdlinksclean.service @@ -0,0 +1,14 @@ +[Unit] +Description=drbdlinks links clean up +After=syslog.target +Before=heartbeat.service openais.service corosync.service pacemaker.service +Documentation=man:drbdlinks(8) + +[Service] +Type=oneshot +ExecStart=/usr/libexec/drbdlinksclean +ExecStop=/usr/libexec/drbdlinksclean +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target