minor updates to both files to fix bugs.
[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 1.1
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 %package client
37 Summary: Monitor hooks for a PLC node
38 Group: Applications/System
39 Requires: curl
40 Requires: coreutils
41
42 %description client
43 The client scripts handle account creation inside of a node.  This will
44 include configuration setup for the monitoring agent running on the node.  It
45 will also include any cron or init scripts needed to perform this kind of
46 maintenance.
47
48 %package server
49 Summary: Monitor hooks for the PLC server.
50 Group: Applications/System
51
52 Requires: python
53 Requires: python-sqlalchemy
54 Requires: python-elixir
55
56 Requires: openssh-clients
57 Requires: perl-libwww-perl
58 Requires: perl-IO-Socket-SSL 
59 Requires: MySQL-python
60 Requires: rt3 == 3.4.1
61 Requires: nmap
62 Requires: PLCWWW >= 4.2
63 Requires: bootcd-planetlab-i386 >= 4.2
64
65 %description server
66 The server side include all python modules and scripts needed to fully
67 operation, track, and interact with any third-party monitoring software, such
68 as Zabbix DB.
69
70 %prep
71 %setup -q
72
73 %build
74 # NOTE: the build uses g++ cmdamt/
75 # NOTE: TMPDIR is needed here b/c the tmpfs of the build vserver is too small.
76 cd cmdamt
77 export TMPDIR=$PWD/tmp
78 make
79 cd ..
80
81 %install
82 rm -rf $RPM_BUILD_ROOT
83 #################### CLIENT 
84 install -D -m 755 monitor-client.init $RPM_BUILD_ROOT/%{_initrddir}/monitor
85 install -D -m 644 monitor.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor
86
87 #################### SERVER
88 install -d $RPM_BUILD_ROOT/usr/share/%{name}
89 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}
90 install -d $RPM_BUILD_ROOT/data/var/lib/%{name}/archive-pdb
91 install -d $RPM_BUILD_ROOT/var/lib/%{name}
92 install -d $RPM_BUILD_ROOT/var/lib/%{name}/archive-pdb
93 install -d $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
94
95 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
96
97 echo " * Installing core scripts"
98 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
99           ./ $RPM_BUILD_ROOT/usr/share/%{name}/
100
101 echo " * Installing web pages"
102 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
103
104 echo " * Installing cron job for automated polling"
105 install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
106 echo " * TODO: Setting up Monitor account in local MyPLC"
107 # TODO: 
108
109 install -d $RPM_BUILD_ROOT/%{python_sitearch}/monitor
110 install -d -D -m 755 monitor $RPM_BUILD_ROOT/%{python_sitearch}/monitor
111 # TODO: need a much better way to do this.
112 rsync -a monitor/ $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
113 #for file in __init__.py database.py config.py ; do 
114 #       install -D -m 644 monitor/$file $RPM_BUILD_ROOT/%{python_sitearch}/monitor/$file
115 #done
116 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
117
118 touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
119 chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
120
121 install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf
122 cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py
123
124 %clean
125 rm -rf $RPM_BUILD_ROOT
126
127 %files server
128 %defattr(-,root,root)
129 %config /usr/share/%{name}/monitorconfig.py
130 %config /etc/monitor.conf
131 /usr/share/%{name}
132 /var/lib/%{name}
133 /var/www/cgi-bin/monitor
134 %{_sysconfdir}/cron.d/monitor-server.cron
135 %{python_sitearch}/threadpool.py
136 %{python_sitearch}/threadpool.pyc
137 %{python_sitearch}/threadpool.pyo
138 %{python_sitearch}/monitor
139
140 %files client
141 %defattr(-,root,root)
142 %{_initrddir}/monitor
143 %{_sysconfdir}/cron.d/monitor
144
145 %post server
146 # TODO: this will be nice when we have a web-based service running., such as
147 #               an API server or so on.
148 # TODO: create real monitorconfig.py from monitorconfig-default.py
149 # TODO: create monitorconfig.php using phpconfig.py 
150 # TODO: create symlink in /var/lib/monitor-server for chroot environments
151 # TODO: update the content of automate_pl03.sh 
152 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
153
154 #chkconfig --add monitor-server
155 #chkconfig monitor-server on
156
157 %post client
158 chkconfig --add monitor
159 chkconfig monitor on
160
161 %changelog
162 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
163 - These are all changes in the latest Monitor code.  I will branch this version
164 - next, before making additional large changes.
165
166 * Mon Sep 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - Monitor-1.0-7
167 - Checkpointing current version for 4.2-rc21 - many many changes
168
169 * Mon Aug 11 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-6
170 - This is a major tag of every thing.  probably needs a very different release
171 - number.
172
173 * Fri Jul 18 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-5
174 - Incremental improvements
175
176 * Mon May 19 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-4
177 - tagging everything for OneLab tech-transfer.
178
179
180 * Fri May 09 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-3
181
182
183 * Mon May 05 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-2
184
185
186 * Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-1
187 - This should be ready for 4.2rc2
188
189
190 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
191 - initial addition.
192
193 %define module_current_branch 1.0