5 %define url $URL: svn+ssh://svn.planet-lab.org/svn/monitor/trunk/monitor.spec $
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)" )
17 Source0: %{name}-%{version}.tar.bz2
19 Group: Applications/System
20 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
23 Packager: PlanetLab Central <support@planet-lab.org>
24 Distribution: PlanetLab %{plrelease}
25 URL: %(echo %{url} | cut -d ' ' -f 2)
27 Summary: Monitor account initialization for the root image.
28 Group: Applications/System
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
36 ######################################## CLIENT
39 Summary: Monitor hooks for a PLC node
40 Group: Applications/System
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
50 ######################################## Server
52 Summary: Monitor hooks for the PLC server.
53 Group: Applications/System
56 Requires: python-sqlalchemy
57 Requires: python-elixir
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
65 Requires: PLCWWW >= 4.2
66 Requires: bootcd-planetlab-i386 >= 4.2
68 Requires: zabbix-client
70 Requires: zabbix-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
77 ######################################## PCU Control
80 summary: pcu controls for monitor and plcapi
81 group: applications/system
84 %description pcucontrol
85 both monitor and the plcapi use a set of common commands to reboot machines
86 using their external or internal pcus. this package is a library of several
89 ####################################### RunlevelAgent
90 %package runlevelagent
91 summary: the RunlevelAgent that reports node runlevels
92 group: applications/system
95 %description runlevelagent
96 The RunlevelAgent starts as early as possible during boot-up and production
97 mode to actively report the observed runlevel to PLC and update the
104 # NOTE: the build uses g++ cmdamt/
105 # NOTE: TMPDIR is needed here b/c the tmpfs of the build vserver is too small.
106 cd pcucontrol/models/intelamt
107 export TMPDIR=$PWD/tmp
112 rm -rf $RPM_BUILD_ROOT
113 #################### CLIENT
114 install -D -m 755 monitor-client.init $RPM_BUILD_ROOT/%{_initrddir}/monitor
115 install -D -m 644 monitor.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor
117 #################### SERVER
118 install -d $RPM_BUILD_ROOT/usr/share/%{name}
119 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}
120 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}/archive-pdb
121 install -d $RPM_BUILD_ROOT/var/lib/%{name}
122 install -d $RPM_BUILD_ROOT/var/lib/%{name}/archive-pdb
123 install -d $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
125 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
127 echo " * Installing core scripts"
128 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
129 ./ $RPM_BUILD_ROOT/usr/share/%{name}/
131 echo " * Installing web pages"
132 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
134 echo " * Installing cron job for automated polling"
135 install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
136 echo " * TODO: Setting up Monitor account in local MyPLC"
139 install -d $RPM_BUILD_ROOT/%{python_sitearch}/monitor
140 install -d -D -m 755 monitor $RPM_BUILD_ROOT/%{python_sitearch}/monitor
141 # TODO: need a much better way to do this.
142 rsync -a monitor/ $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
143 #for file in __init__.py database.py config.py ; do
144 # install -D -m 644 monitor/$file $RPM_BUILD_ROOT/%{python_sitearch}/monitor/$file
146 rsync -a pcucontrol/ $RPM_BUILD_ROOT/%{python_sitearch}/pcucontrol/
147 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
149 touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
150 chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
152 #install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf
153 #cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py
155 #################### RunlevelAgent
156 install -D -m 755 RunlevelAgent.py $RPM_BUILD_ROOT/usr/bin/RunlevelAgent.py
157 install -D -m 755 monitor-runlevelagent.init $RPM_BUILD_ROOT/%{_initrddir}/monitor-runlevelagent
161 rm -rf $RPM_BUILD_ROOT
165 %defattr(-,root,root)
166 #%config /usr/share/%{name}/monitorconfig.py
167 #%config /etc/monitor.conf
170 /var/www/cgi-bin/monitor
171 %{_sysconfdir}/cron.d/monitor-server.cron
172 %{python_sitearch}/threadpool.py
173 %{python_sitearch}/threadpool.pyc
174 %{python_sitearch}/threadpool.pyo
175 %{python_sitearch}/monitor
176 %{_sysconfdir}/plc.d/monitor
179 %defattr(-,root,root)
180 %{_initrddir}/monitor
181 %{_sysconfdir}/cron.d/monitor
184 %{python_sitearch}/pcucontrol
187 /usr/bin/RunlevelAgent.py
188 /usr/bin/RunlevelAgent.pyo
189 /usr/bin/RunlevelAgent.pyc
190 /%{_initrddir}/monitor-runlevelagent
193 # TODO: this will be nice when we have a web-based service running., such as
194 # an API server or so on.
195 # TODO: create real monitorconfig.py from monitorconfig-default.py
196 # TODO: create monitorconfig.php using phpconfig.py
197 # TODO: create symlink in /var/lib/monitor for chroot environments
198 # TODO: update the content of automate_pl03.sh
199 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
201 # NOTE: generate the python defines from zabbix include files.
202 php /usr/share/%{name}/zabbix/getdefines.php > %{python_sitearch}/monitor/database/zabbixapi/defines.py
204 # apply patches to zabbix
205 patch -d /var/www/html/zabbix/ -p0 < /usr/share/%{name}/zabbix/zabbix-auto-login.diff
207 #chkconfig --add monitor-server
208 #chkconfig monitor-server on
211 chkconfig --add monitor
215 chkconfig --add monitor-runlevelagent
216 chkconfig monitor-runlevelagent on
219 * Fri Feb 27 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-1
220 - preparing to make a 2.0 branch for monitor.
222 * Mon Jan 05 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-0
223 - new changes are significantly different, that I'm upping the number for clarity.
225 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
226 - These are all changes in the latest Monitor code. I will branch this version
227 - next, before making additional large changes.
229 * Mon Sep 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - Monitor-1.0-7
230 - Checkpointing current version for 4.2-rc21 - many many changes
232 * Mon Aug 11 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-6
233 - This is a major tag of every thing. probably needs a very different release
236 * Fri Jul 18 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-5
237 - Incremental improvements
239 * Mon May 19 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-4
240 - tagging everything for OneLab tech-transfer.
243 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-3
246 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-2
249 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-1
250 - This should be ready for 4.2rc2
253 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
256 %define module_current_branch 2.0