add a new rpm package for monitor-runlevelagent that packages RunlevelAgent.py
[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 0
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
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
87 supported models.
88
89 ####################################### RunlevelAgent
90 %package runlevelagent
91 summary: the RunlevelAgent that reports node runlevels
92 group: applications/system
93 requires: python
94
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
98 'last_contact' field.
99
100 %prep
101 %setup -q
102
103 %build
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
108 make
109 cd ..
110
111 %install
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
116
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/
124
125 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
126
127 echo " * Installing core scripts"
128 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
129           ./ $RPM_BUILD_ROOT/usr/share/%{name}/
130
131 echo " * Installing web pages"
132 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
133
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"
137 # TODO: 
138
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
145 #done
146 rsync -a pcucontrol/ $RPM_BUILD_ROOT/%{python_sitearch}/pcucontrol/
147 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
148
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
151
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
154
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
158
159
160 %clean
161 rm -rf $RPM_BUILD_ROOT
162
163
164 %files server
165 %defattr(-,root,root)
166 #%config /usr/share/%{name}/monitorconfig.py
167 #%config /etc/monitor.conf
168 /usr/share/%{name}
169 /var/lib/%{name}
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
177
178 %files client
179 %defattr(-,root,root)
180 %{_initrddir}/monitor
181 %{_sysconfdir}/cron.d/monitor
182
183 %files pcucontrol
184 %{python_sitearch}/pcucontrol
185
186 %files runlevelagent
187 /usr/bin/RunlevelAgent.py
188 /%{_initrddir}/monitor-runlevelagent
189
190 %post server
191 # TODO: this will be nice when we have a web-based service running., such as
192 #               an API server or so on.
193 # TODO: create real monitorconfig.py from monitorconfig-default.py
194 # TODO: create monitorconfig.php using phpconfig.py 
195 # TODO: create symlink in /var/lib/monitor for chroot environments
196 # TODO: update the content of automate_pl03.sh 
197 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
198
199 # NOTE: generate the python defines from zabbix include files.
200 php /usr/share/%{name}/zabbix/getdefines.php > %{python_sitearch}/monitor/database/zabbixapi/defines.py
201
202 # apply patches to zabbix
203 patch -d /var/www/html/zabbix/ -p0 < /usr/share/%{name}/zabbix/zabbix-auto-login.diff
204
205 #chkconfig --add monitor-server
206 #chkconfig monitor-server on
207
208 %post client
209 chkconfig --add monitor
210 chkconfig monitor on
211
212 %post runlevelagent
213 chkconfig --add monitor-runlevelagent
214 chkconfig monitor-runlevelagent on
215
216 %changelog
217 * Mon Jan 05 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-0
218 - new changes are significantly different, that I'm upping the number for clarity.
219
220 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
221 - These are all changes in the latest Monitor code.  I will branch this version
222 - next, before making additional large changes.
223
224 * Mon Sep 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - Monitor-1.0-7
225 - Checkpointing current version for 4.2-rc21 - many many changes
226
227 * Mon Aug 11 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-6
228 - This is a major tag of every thing.  probably needs a very different release
229 - number.
230
231 * Fri Jul 18 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-5
232 - Incremental improvements
233
234 * Mon May 19 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-4
235 - tagging everything for OneLab tech-transfer.
236
237
238 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-3
239
240
241 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-2
242
243
244 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-1
245 - This should be ready for 4.2rc2
246
247
248 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
249 - initial addition.
250
251 %define module_current_branch 1.0