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