* Bump revision and version
[mom.git] / pl_mom.spec
1 %define name pl_mom
2 %define version 1.0
3 %define release 01%{?pldistro:.%{pldistro}}%{?date:.%{date}}
4  
5 Summary: PlanetLab node monitoring tools
6 Name: %{name}
7 Version: %{version}
8 Release: %{release}
9 License: GPL
10 Group: System Environment/Kernel
11 Source: %{name}-%{version}.tgz
12 Vendor: PlanetLab
13 Packager: PlanetLab Central <support@planet-lab.org>
14 Distribution: PlanetLab 3.0
15 URL: http://cvs.planet-lab.org/cvs/pl_mom
16 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
17 Requires: expect
18 # swapmon requires vps and bwlimit.py
19 Requires: util-vserver, util-vserver-python
20 # bwmon requires tc
21 Requires: iproute
22  
23 %description
24 pl_mom is a suite of PlanetLab node monitoring tools.
25
26 swapmon is a swap monitoring daemon. Every 30 seconds, it checks
27 process memory usage. At 90% utilization, resets the slice that is
28 consuming the most physical memory. At 95% utilization, it reboots the
29 machine to avoid a crash.
30
31 pl_mop is a cron job that "fixes" various common problems with nodes
32 (dead services, ext3 corruption, zombie SSH sessions, etc.).
33
34 %prep
35 %setup -q
36
37 %build
38
39 %install
40 rm -rf $RPM_BUILD_ROOT
41
42 # Utility functions
43 install -D -m 644 pl_mom.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/pl_mom.py
44
45 # Bandwidth monitor (bwmon), run periodically
46 #install -D -m 755 bwmon.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/bwmon.py
47
48 # Swap monitoring daemon (swapmon)
49 install -D -m 755 swapmon.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/swapmon.py
50 install -D -m 755 swapmon.init $RPM_BUILD_ROOT/%{_initrddir}/swapmon
51
52 # Cleanup script
53 install -D -m 755 pl_mop.sh $RPM_BUILD_ROOT/usr/local/planetlab/bin/pl_mop.sh
54
55 # Tests and restarts NM
56 #install -D -m 755 nm_mom.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/nm_mom.py
57
58 # Runs pl_mop and bwmon periodically
59 install -D -m 644 pl_mom.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/pl_mom
60
61 %clean
62 rm -rf $RPM_BUILD_ROOT
63
64 %pre
65 if [ "$PL_BOOTCD" != "1" ] ; then
66     service pl_mom stop
67 fi
68
69 exit 0
70
71 %post 
72 chkconfig --add swapmon
73 chkconfig swapmon on
74 if [ "$PL_BOOTCD" != "1" ] ; then
75     service swapmon restart
76 fi
77
78 # Randomize pl_mop run time
79 M=$((60 * $RANDOM / 32768))
80 H=$((24 * $RANDOM / 32768))
81 sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" %{_sysconfdir}/cron.d/pl_mom
82
83 exit 0
84
85 %preun
86 # 0 = erase, 1 = upgrade
87 if [ "$1" -eq 0 ]; then
88     if [ "$PL_BOOTCD" != "1" ] ; then
89         service swapmon stop
90     fi
91     chkconfig swapmon off
92     chkconfig --del swapmon
93 fi
94
95 exit 0
96
97 %files
98 %defattr(-, root, root, -)
99 %{_datadir}/%{name}/pl_mom.py*
100 #%{_datadir}/%{name}/nm_mom.py*
101 #%{_datadir}/%{name}/bwmon.py*
102 %{_datadir}/%{name}/swapmon.py*
103 %{_initrddir}/swapmon
104 /usr/local/planetlab/bin/pl_mop.sh
105 %{_sysconfdir}/cron.d/pl_mom
106
107 %changelog
108 * Wed Jul 19 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-7.planetlab
109 - swapmon: Added state info so same reset email does not keep getting
110   sent. If slice is already being killed, will wait for a timeout
111   before trying to kill again.
112
113 * Mon Jul 17 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-6.planetlab
114 - swapmon: Added state information per slice.  Slices are now killed
115   after consuming more memory than the threshold more than twice.
116   Also fixed the slice restart issue where slices would be restarted
117   and repeated restart emails would be sent.
118
119 * Mon Jul 10 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-5.planetlab
120 - bwmon: Initialize default limits
121
122 * Mon Jul 10 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-4.planetlab
123 - bwmon: Use cached values if NM stops responding