* Incremented version of RPM.
[mom.git] / pl_mom.spec
1 %define name pl_mom
2 %define version 0.5
3 %define release 8%{?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 bwmon is a cron job that monitors the average bandwidth usage of each
32 slice and enforces a daily byte limit for each slice.
33
34 pl_mop is a cron job that "fixes" various common problems with nodes
35 (dead services, ext3 corruption, zombie SSH sessions, etc.).
36
37 %prep
38 %setup -q
39
40 %build
41
42 %install
43 rm -rf $RPM_BUILD_ROOT
44
45 # Utility functions
46 install -D -m 644 pl_mom.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/pl_mom.py
47
48 # Bandwidth monitor (bwmon), run periodically
49 install -D -m 755 bwmon.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/bwmon.py
50
51 # Swap monitoring daemon (swapmon)
52 install -D -m 755 swapmon.py $RPM_BUILD_ROOT/%{_datadir}/%{name}/swapmon.py
53 install -D -m 755 swapmon.init $RPM_BUILD_ROOT/%{_initrddir}/swapmon
54
55 # Cleanup script
56 install -D -m 755 pl_mop.sh $RPM_BUILD_ROOT/usr/local/planetlab/bin/pl_mop.sh
57
58 # Tests and restarts NM
59 install -D -m 755 nm_mop.sh $RPM_BUILD_ROOT/usr/local/planetlab/bin/nm_mop.sh
60
61 # Runs pl_mop and bwmon periodically
62 install -D -m 644 pl_mom.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/pl_mom
63
64 %clean
65 rm -rf $RPM_BUILD_ROOT
66
67 %pre
68 if [ "$PL_BOOTCD" != "1" ] ; then
69     service pl_mom stop
70 fi
71
72 exit 0
73
74 %post 
75 chkconfig --add swapmon
76 chkconfig swapmon on
77 if [ "$PL_BOOTCD" != "1" ] ; then
78     service swapmon restart
79 fi
80
81 # Randomize pl_mop run time
82 M=$((60 * $RANDOM / 32768))
83 H=$((24 * $RANDOM / 32768))
84 sed -i -e "s/@M@/$M/" -e "s/@H@/$H/" %{_sysconfdir}/cron.d/pl_mom
85
86 exit 0
87
88 %preun
89 # 0 = erase, 1 = upgrade
90 if [ "$1" -eq 0 ]; then
91     if [ "$PL_BOOTCD" != "1" ] ; then
92         service swapmon stop
93     fi
94     chkconfig swapmon off
95     chkconfig --del swapmon
96 fi
97
98 exit 0
99
100 %files
101 %defattr(-, root, root, -)
102 %{_datadir}/%{name}/pl_mom.py
103 %{_datadir}/%{name}/bwmon.py
104 %{_datadir}/%{name}/swapmon.py
105 %{_initrddir}/swapmon
106 /usr/local/planetlab/bin/pl_mop.sh
107 %{_sysconfdir}/cron.d/pl_mom
108
109 %changelog
110 * Wed Jul 19 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-7.planetlab
111 - swapmon: Added state info so same reset email does not keep getting
112   sent. If slice is already being killed, will wait for a timeout
113   before trying to kill again.
114
115 * Mon Jul 17 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-6.planetlab
116 - swapmon: Added state information per slice.  Slices are now killed
117   after consuming more memory than the threshold more than twice.
118   Also fixed the slice restart issue where slices would be restarted
119   and repeated restart emails would be sent.
120
121 * Mon Jul 10 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-5.planetlab
122 - bwmon: Initialize default limits
123
124 * Mon Jul 10 2006 Faiyaz Ahmed <faiyaza@cs.princeton.edu> 0.4-4.planetlab
125 - bwmon: Use cached values if NM stops responding