Branch 3.0 for module Monitor created (as new trunk) from tag Monitor-2.0-1
[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 3.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 /usr/bin/RunlevelAgent.pyo
189 /usr/bin/RunlevelAgent.pyc
190 /%{_initrddir}/monitor-runlevelagent
191
192 %post server
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).
200
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
203
204 # apply patches to zabbix
205 patch -d /var/www/html/zabbix/ -p0 < /usr/share/%{name}/zabbix/zabbix-auto-login.diff
206
207 #chkconfig --add monitor-server
208 #chkconfig monitor-server on
209
210 %post client
211 chkconfig --add monitor
212 chkconfig monitor on
213
214 %post runlevelagent
215 chkconfig --add monitor-runlevelagent
216 chkconfig monitor-runlevelagent on
217
218 %changelog
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.
221
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.
224
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.
228
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
231
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
234 - number.
235
236 * Fri Jul 18 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-5
237 - Incremental improvements
238
239 * Mon May 19 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-4
240 - tagging everything for OneLab tech-transfer.
241
242
243 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-3
244
245
246 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-2
247
248
249 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-1
250 - This should be ready for 4.2rc2
251
252
253 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
254 - initial addition.
255
256 %define module_current_branch 2.0