%define name pl_mom
%define version 0.3
-%define release 4.planetlab%{?date:.%{date}}
+%define release 12%{?pldistro:.%{pldistro}}%{?date:.%{date}}
Summary: PlanetLab mom -- Cleans up your mess
Name: %{name}
Version: %{version}
Release: %{release}
-Copyright: dontknow
+License: dontknow
Group: System Environment/Kernel
Source: %{name}-%{version}.tgz
Vendor: PlanetLab
Distribution: PlanetLab 3.0
URL: http://cvs.planet-lab.org/cvs/pl_mom
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Requires: expect
%description
resets the slice that is the biggest memory hog. At 95% utilization, it
reboots the machine.
+A cron job which "fixes" various common problems with nodes (dead
+services, ext3 corruption, zombie SSH sessions) is also installed.
+
%prep
%setup
cp pl_mom $RPM_BUILD_ROOT/etc/init.d/
cp pl_mom.pl $RPM_BUILD_ROOT/usr/local/planetlab/bin/
+cp pl_mop.sh $RPM_BUILD_ROOT/usr/local/planetlab/bin/
+
+install -D -m 644 pl_mop.cron $RPM_BUILD_ROOT/etc/cron.d/pl_mop
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%defattr(0755, root, root)
/etc/init.d/pl_mom
/usr/local/planetlab/bin/pl_mom.pl
+/usr/local/planetlab/bin/pl_mop.sh
+/etc/cron.d/pl_mop
%pre
%post
-RUNLEVEL=`/sbin/runlevel`
-
if [ "$1" -ge 1 ]; then
chkconfig --add pl_mom
chkconfig --level 3 pl_mom on
- if [[ "$RUNLEVEL" != "unknown" ]]; then
+ if [[ "$PL_BOOTCD" != "1" ]]; then
/etc/init.d/pl_mom stop
/etc/init.d/pl_mom start
fi
+
+ # Randomize pl_mop run time
+ M=$((60 * $RANDOM / 32768))
+ H=$((24 * $RANDOM / 32768))
+ sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" /etc/cron.d/pl_mop
fi
%preun
-RUNLEVEL=`/sbin/runlevel`
-
if [ "$1" -eq 0 ]; then
- if [[ "$RUNLEVEL" != "unknown" ]]; then
+ if [[ "$PL_BOOTCD" != "1" ]]; then
/etc/init.d/pl_mom stop
fi
+
+ chkconfig --del pl_mom
+ chkconfig pl_mom off
fi