(no commit message)
[monitor.git] / Monitor.spec
1 #
2 # $Id$
3
4
5 %define url $URL: svn+ssh://svn.planet-lab.org/svn/monitor/trunk/monitor.spec $
6
7 %define name monitor
8 %define version 2.0
9 %define taglevel 10
10
11 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
12 %global python_sitearch %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
13
14 Name: %{name}
15 Version: %{version}
16 Release: %{release}
17 Source0: %{name}-%{version}.tar.bz2
18 License: GPL
19 Group: Applications/System
20 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
21
22 Vendor: PlanetLab
23 Packager: PlanetLab Central <support@planet-lab.org>
24 Distribution: PlanetLab %{plrelease}
25 URL: %(echo %{url} | cut -d ' ' -f 2)
26
27 Summary: Monitor account initialization for the root image.
28 Group: Applications/System
29
30 %description
31 Monitor is a collection of secondary scripts for configuring the node polling
32 system, syncing the PLC db with the monitoring database, notifying users,
33 interacting with PCU hardware, applying penalties to sites that violate
34 acceptable use.
35
36 ######################################## CLIENT
37
38 %package client
39 Summary: Monitor hooks for a PLC node
40 Group: Applications/System
41 Requires: curl
42 Requires: coreutils
43
44 %description client
45 The client scripts handle account creation inside of a node.  This will
46 include configuration setup for the monitoring agent running on the node.  It
47 will also include any cron or init scripts needed to perform this kind of
48 maintenance.
49 ######################################## Server Deps
50 %package server-deps
51 Summary: Monitor hooks for the PLC server.
52 Group: Applications/System
53
54 Requires: python
55 Requires: python-setuptools-devel
56
57 Requires: openssh-clients
58 Requires: perl-libwww-perl
59 Requires: perl-IO-Socket-SSL 
60 Requires: MySQL-python
61 Requires: nmap
62
63 #Requires: python-sqlalchemy
64 #Requires: python-elixir
65 #Requires: zabbix-client
66 #Requires: zabbix-gui
67 #Requires: zabbix-server
68
69 %description server-deps
70 The server side include all python modules and scripts needed to fully
71
72 ######################################## Server
73 %package server
74 Summary: Monitor hooks for the PLC server.
75 Group: Applications/System
76
77 Requires: python
78
79 Requires: monitor-server-deps
80 Requires: rt3 == 3.4.1
81 Requires: PLCWWW >= 4.2
82 Requires: bootcd-planetlab-i386 >= 4.2
83
84 %description server
85 The server side include all python modules and scripts needed to fully
86 operation, track, and interact with any third-party monitoring software, such
87 as Zabbix DB.
88
89 ######################################## PCU Control
90
91 %package pcucontrol
92 summary: pcu controls for monitor and plcapi
93 group: applications/system
94 Requires: python
95 Requires: OpenIPMI-tools
96 Requires: openssh-clients
97 Requires: perl-libwww-perl
98 Requires: perl-IO-Socket-SSL 
99 Requires: curl
100
101 %description pcucontrol
102 both monitor and the plcapi use a set of common commands to reboot machines
103 using their external or internal pcus.  this package is a library of several
104 supported models.
105
106 ####################################### RunlevelAgent
107 %package runlevelagent
108 summary: the RunlevelAgent that reports node runlevels
109 group: applications/system
110 requires: python
111
112 %description runlevelagent
113 The RunlevelAgent starts as early as possible during boot-up and production
114 mode to actively report the observed runlevel to PLC and update the
115 'last_contact' field.
116
117 %prep
118 %setup -q
119
120 %build
121 # NOTE: the build uses g++ cmdamt/
122 # NOTE: TMPDIR is needed here b/c the tmpfs of the build vserver is too small.
123 cd pcucontrol/models/intelamt
124 export TMPDIR=$PWD/tmp
125 make
126 cd ..
127
128 %install
129 rm -rf $RPM_BUILD_ROOT
130 #################### CLIENT 
131 install -D -m 755 monitor-client.init $RPM_BUILD_ROOT/%{_initrddir}/monitor
132 install -D -m 644 monitor.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor
133
134 #################### SERVER
135 install -d $RPM_BUILD_ROOT/usr/share/%{name}
136 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}
137 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}/archive-pdb
138 install -d $RPM_BUILD_ROOT/var/lib/%{name}
139 install -d $RPM_BUILD_ROOT/var/lib/%{name}/archive-pdb
140 install -d $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
141
142 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
143
144 echo " * Installing core scripts"
145 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
146           ./ $RPM_BUILD_ROOT/usr/share/%{name}/
147
148 echo " * Installing web pages"
149 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
150
151 echo " * Installing cron job for automated polling"
152 install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
153 echo " * TODO: Setting up Monitor account in local MyPLC"
154 # TODO: 
155
156 install -d $RPM_BUILD_ROOT/%{python_sitearch}/monitor
157 install -d -D -m 755 monitor $RPM_BUILD_ROOT/%{python_sitearch}/monitor
158 # TODO: need a much better way to do this.
159 rsync -a monitor/ $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
160 #for file in __init__.py database.py config.py ; do 
161 #       install -D -m 644 monitor/$file $RPM_BUILD_ROOT/%{python_sitearch}/monitor/$file
162 #done
163 rsync -a pcucontrol/ $RPM_BUILD_ROOT/%{python_sitearch}/pcucontrol/
164 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
165
166 touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
167 chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
168
169 #install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf
170 #cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py
171
172 #################### RunlevelAgent
173 install -D -m 755 RunlevelAgent.py $RPM_BUILD_ROOT/usr/bin/RunlevelAgent.py
174 install -D -m 755 monitor-runlevelagent.init $RPM_BUILD_ROOT/%{_initrddir}/monitor-runlevelagent
175
176 mkdir -p $RPM_BUILD_ROOT/var/log
177 touch $RPM_BUILD_ROOT/var/log/server-deps.log
178
179
180 %clean
181 rm -rf $RPM_BUILD_ROOT
182
183 %files server-deps
184 /var/log/server-deps.log
185
186 %files server
187 %defattr(-,root,root)
188 #%config /usr/share/%{name}/monitorconfig.py
189 #%config /etc/monitor.conf
190 /usr/share/%{name}
191 /var/lib/%{name}
192 /var/www/cgi-bin/monitor
193 %{_sysconfdir}/cron.d/monitor-server.cron
194 %{python_sitearch}/threadpool.py
195 %{python_sitearch}/threadpool.pyc
196 %{python_sitearch}/threadpool.pyo
197 %{python_sitearch}/monitor
198 %{_sysconfdir}/plc.d/monitor
199
200 %files client
201 %defattr(-,root,root)
202 %{_initrddir}/monitor
203 %{_sysconfdir}/cron.d/monitor
204
205 %files pcucontrol
206 %{python_sitearch}/pcucontrol
207
208 %files runlevelagent
209 /usr/bin/RunlevelAgent.py
210 /usr/bin/RunlevelAgent.pyo
211 /usr/bin/RunlevelAgent.pyc
212 /%{_initrddir}/monitor-runlevelagent
213
214 %post server-deps
215 easy_install -UZ Elixir
216 easy_install -UZ http://files.turbogears.org/eggs/TurboGears-1.0.7-py2.5.egg
217
218 %post server
219 # TODO: this will be nice when we have a web-based service running., such as
220 #               an API server or so on.
221 # TODO: create real monitorconfig.py from monitorconfig-default.py
222 # TODO: create monitorconfig.php using phpconfig.py 
223 # TODO: create symlink in /var/lib/monitor for chroot environments
224 # TODO: update the content of automate_pl03.sh 
225 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
226
227 # NOTE: generate the python defines from zabbix include files.
228 #php /usr/share/%{name}/zabbix/getdefines.php > %{python_sitearch}/monitor/database/zabbixapi/defines.py
229
230 # apply patches to zabbix
231 #patch -d /var/www/html/zabbix/ -p0 < /usr/share/%{name}/zabbix/zabbix-auto-login.diff
232
233 #chkconfig --add monitor-server
234 #chkconfig monitor-server on
235
236 %post client
237 chkconfig --add monitor
238 chkconfig monitor on
239
240 %post runlevelagent
241 chkconfig --add monitor-runlevelagent
242 chkconfig monitor-runlevelagent on
243
244 %changelog
245 * Thu Apr 16 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-10
246 - sync
247 - cache
248 - better policy
249
250 * Fri Apr 03 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-9
251 - added new models to db.
252 - major updates throughout.
253 - better unification. needs an install test.
254
255 * Wed Apr 01 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-8
256 - removed old pkl database references.
257 - added blacklist to db model
258 - added fix to IntelAMT remoteControl to start an power-down node
259 - added policy.py
260 - added global error count before bailing entirely.
261
262 * Fri Mar 27 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-7
263 - improved db model
264 - updated files that use db model
265 - updated web view based on node, site, and pcu states.
266 - added local mirror to zabbix Make file.
267
268 * Tue Mar 24 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-6
269 - added action view to gui
270 - added penalty_applied bit to db model.
271
272 * Fri Mar 20 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-5
273 - tag for updates to 2.0 db model
274
275 * Fri Mar 13 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-4
276 - splits reboot.py across pcucontrol and monitor modules
277 - moves command.py from monitor/util to pcucontrol/util
278
279 * Tue Mar 10 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-3
280 - add email exceptions
281 - other bug fixes.
282
283 * Tue Mar 10 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-2
284 - getting the pcucontrol and findall.py scripts to work in an integrated
285 - fashion.
286
287 * Fri Feb 27 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-1
288 - preparing to make a 2.0 branch for monitor.
289
290 * Mon Jan 05 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-0
291 - new changes are significantly different, that I'm upping the number for clarity.
292
293 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
294 - These are all changes in the latest Monitor code.  I will branch this version
295 - next, before making additional large changes.
296
297 * Mon Sep 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - Monitor-1.0-7
298 - Checkpointing current version for 4.2-rc21 - many many changes
299
300 * Mon Aug 11 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-6
301 - This is a major tag of every thing.  probably needs a very different release
302 - number.
303
304 * Fri Jul 18 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-5
305 - Incremental improvements
306
307 * Mon May 19 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-4
308 - tagging everything for OneLab tech-transfer.
309
310
311 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-3
312
313
314 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-2
315
316
317 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-1
318 - This should be ready for 4.2rc2
319
320
321 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
322 - initial addition.
323
324 %define module_current_branch 1.0