clearer names for actions, and infer actions better
[monitor.git] / Monitor.spec
index 61a2ca7..64a9211 100644 (file)
@@ -6,8 +6,8 @@
 
 %define name monitor
 # keep this version in sync with monitor/monitor_version.py
 
 %define name monitor
 # keep this version in sync with monitor/monitor_version.py
-%define version 3.0
-%define taglevel 28
+%define version 3.1
+%define taglevel 6
 
 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 %global python_sitearch        %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
 
 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 %global python_sitearch        %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
@@ -25,10 +25,6 @@ Packager: PlanetLab Central <support@planet-lab.org>
 Distribution: PlanetLab %{plrelease}
 URL: %(echo %{url} | cut -d ' ' -f 2)
 
 Distribution: PlanetLab %{plrelease}
 URL: %(echo %{url} | cut -d ' ' -f 2)
 
-# this is only required for fedora and we have this in devel.pkgs for
-# all fedora builds.
-# BuildRequires: python-setuptools-devel
-
 
 Summary: Monitor account initialization for the root image.
 Group: Applications/System
 
 Summary: Monitor account initialization for the root image.
 Group: Applications/System
@@ -39,6 +35,40 @@ system, syncing the PLC db with the monitoring database, notifying users,
 interacting with PCU hardware, applying penalties to sites that violate
 acceptable use.
 
 interacting with PCU hardware, applying penalties to sites that violate
 acceptable use.
 
+######################################## NAGIOS
+
+%package nagios
+Summary: Monitor integration with Nagios
+Group: Applications/System
+
+Requires: coreutils
+Requires: passwd
+Requires: gd
+Requires: gd-devel
+Requires: mysql
+Requires: mysql-server
+Requires: mysql-devel
+Requires: mysql-libs
+Requires: mailx
+Requires: sendmail
+Requires: php
+Requires: httpd
+
+Requires: cronie
+Requires: nagios
+Requires: nagios-common
+Requires: nagios-devel
+Requires: nagios-plugins-all
+Requires: ndoutils
+Requires: ndoutils-mysql
+
+Requires: rt3
+
+
+%description nagios
+Scripts and setup necessary to integrate and monitor PLC with Nagios.
+Best suited to F12 or above.
+
 ######################################## CLIENT
 
 %package client
 ######################################## CLIENT
 
 %package client
@@ -58,6 +88,7 @@ Summary: Monitor hooks for the PLC server.
 Group: Applications/System
 
 Requires: python
 Group: Applications/System
 
 Requires: python
+Requires: python-setuptools-devel
 Requires: python-peak-util-extremes
 
 Requires: compat-libstdc++-296
 Requires: python-peak-util-extremes
 
 Requires: compat-libstdc++-296
@@ -65,11 +96,19 @@ Requires: openssh-clients
 Requires: perl-libwww-perl
 Requires: perl-IO-Socket-SSL 
 Requires: MySQL-python
 Requires: perl-libwww-perl
 Requires: perl-IO-Socket-SSL 
 Requires: MySQL-python
+Requires: perl-DBD-mysql
 Requires: nmap
 Requires: nmap
+Requires: mailx
 Requires: nc
 Requires: rt3
 Requires: nc
 Requires: rt3
+Requires: traceroute
+Requires: sendmail
+# 5.0-18 is when the extra monitor plc-config values were added to myplc default_config.xml
+Requires: myplc >= 5.0-18
 
 Requires: plewww-plekit
 
 Requires: plewww-plekit
+Requires: pcucontrol
+Requires: TurboGears
 
 #Requires: zabbix-client
 #Requires: zabbix-gui
 
 #Requires: zabbix-client
 #Requires: zabbix-gui
@@ -84,17 +123,17 @@ Summary: Monitor hooks for the PLC server.
 Group: Applications/System
 
 Requires: python
 Group: Applications/System
 
 Requires: python
-
 Requires: monitor-server-deps
 Requires: monitor-server-deps
-Requires: PLCWWW >= 4.2
-Requires: bootcd-%{pldistro}-%{_arch} >= 4.2
+
+# NOTE: removed b/c 'distroname' gets corrupted during build process.
+# Requires: bootcd-%{pldistro}-%{distroname}-%{_arch} >= 5.0
 
 %description server
 The server side include all python modules and scripts needed to fully
 operation, track, and interact with any third-party monitoring software, such
 as Zabbix DB.
 
 
 %description server
 The server side include all python modules and scripts needed to fully
 operation, track, and interact with any third-party monitoring software, such
 as Zabbix DB.
 
-####################################### RunlevelAgent
+######################################## RunlevelAgent
 %package runlevelagent
 summary: the RunlevelAgent that reports node runlevels
 group: applications/system
 %package runlevelagent
 summary: the RunlevelAgent that reports node runlevels
 group: applications/system
@@ -108,14 +147,6 @@ mode to actively report the observed runlevel to PLC and update the
 %prep
 %setup -q
 
 %prep
 %setup -q
 
-%build
-# NOTE: the build uses g++ cmdamt/
-# NOTE: TMPDIR is needed here b/c the tmpfs of the build vserver is too small.
-cd pcucontrol/models/intelamt
-export TMPDIR=$PWD/tmp
-make
-cd ..
-
 %install
 rm -rf $RPM_BUILD_ROOT
 #################### CLIENT 
 %install
 rm -rf $RPM_BUILD_ROOT
 #################### CLIENT 
@@ -134,44 +165,38 @@ install -d $RPM_BUILD_ROOT/var/www/html/monitorlog/
 install -d $RPM_BUILD_ROOT/etc/httpd/conf.d/
 install -d $RPM_BUILD_ROOT/%{python_sitearch}/monitor
 
 install -d $RPM_BUILD_ROOT/etc/httpd/conf.d/
 install -d $RPM_BUILD_ROOT/%{python_sitearch}/monitor
 
-# pack monitor's dependencies in RPM to make it easier to deploy.
-export TMPDIR=/var/tmp/
-export PYTHONPATH=$PYTHONPATH:$RPM_BUILD_ROOT/%{python_sitearch}/
-easy_install -d $RPM_BUILD_ROOT/%{python_sitearch}/ -UZ http://files.turbogears.org/eggs/TurboGears-1.0.7-py2.5.egg
-easy_install -d $RPM_BUILD_ROOT/%{python_sitearch}/ -UZ http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.5.3.tar.gz
-easy_install -d $RPM_BUILD_ROOT/%{python_sitearch}/ -UZ Elixir
-rm -rf $RPM_BUILD_ROOT/%{python_sitearch}/site.py*
-
 # plc.d scripts
 install -D -m 644 monitor.functions $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor.functions
 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
 # plc.d scripts
 install -D -m 644 monitor.functions $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor.functions
 install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
-install -D -m 755 zabbix/monitor-zabbix.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/zabbix
+#install -D -m 755 zabbix/monitor-zabbix.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/zabbix
+
+install -D -m 755 nagios/monitor-nagios.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor-nagios
+install -D -m 644 nagios/monitor-nagios.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-nagios.cron
 
 # cron job for automated polling
 install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
 
 # apache configuration
 
 # cron job for automated polling
 install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
 
 # apache configuration
-install -D -m 644 web/monitorweb-httpd.conf $RPM_BUILD_ROOT/etc/httpd/conf.d/
+install -D -m 644 web/monitorweb.conf $RPM_BUILD_ROOT/etc/httpd/conf.d/
 
 
-# we'll install monitor and pcucontrol in site-packages
-# install rest to /usr/share/monitor
-rsync -a --exclude archive-pdb --exclude .svn --exclude CVS  \
+# we'll install monitor in site-packages install rest to
+# /usr/share/monitor
+rsync -a --exclude archive-pdb --exclude .cvsignore --exclude .svn --exclude CVS  \
     --exclude monitor/ \
     --exclude monitor/ \
-    --exclude pcucontol/ \
     ./  $RPM_BUILD_ROOT/usr/share/%{name}/
 
     ./  $RPM_BUILD_ROOT/usr/share/%{name}/
 
+#rm -f $RPM_BUILD_ROOT/usr/share/%{name}/zabbix.spec
+
 # install monitor python package
 rsync -a --exclude .svn  ./monitor/   $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
 
 # install monitor python package
 rsync -a --exclude .svn  ./monitor/   $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
 
-# and pcucontrol
-rsync -a --exclude .svn  ./pcucontrol/    $RPM_BUILD_ROOT/%{python_sitearch}/pcucontrol/
+install -D -m 644 monitor/wrapper/plc.py $RPM_BUILD_ROOT/usr/share/%{name}/nagios/
+install -D -m 644 monitor/generic.py $RPM_BUILD_ROOT/usr/share/%{name}/nagios/
 
 # install third-party module to site-packages
 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
 
 # TODO: 
 
 # install third-party module to site-packages
 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
 
 # TODO: 
-echo " * TODO: Setting up Monitor account in local MyPLC"
-
 #touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 #chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 
 #touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 #chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 
@@ -192,20 +217,56 @@ rm -rf $RPM_BUILD_ROOT
 %files server-deps
 /var/log/server-deps.log
 
 %files server-deps
 /var/log/server-deps.log
 
+%files nagios
+%defattr(-,root,root)
+%{_sysconfdir}/plc.d/monitor-nagios
+/usr/share/%{name}/nagios 
+%{_sysconfdir}/cron.d/monitor-nagios.cron
+
 %files server
 %defattr(-,root,root)
 #%config /usr/share/%{name}/monitorconfig.py
 #%config /etc/monitor.conf
 %files server
 %defattr(-,root,root)
 #%config /usr/share/%{name}/monitorconfig.py
 #%config /etc/monitor.conf
-/usr/share/%{name}
 /var/lib/%{name}
 /var/lib/%{name}
+/usr/share/%{name}/MANIFEST.in
+/usr/share/%{name}/Makefile
+/usr/share/%{name}/Monitor.spec
+/usr/share/%{name}/README.txt
+/usr/share/%{name}/RunlevelAgent.py*
+/usr/share/%{name}/automate-default.sh
+/usr/share/%{name}/monitor-default.conf
+/usr/share/%{name}/monitor-runlevelagent.init
+/usr/share/%{name}/monitor-server.cron
+/usr/share/%{name}/monitor-server.init
+/usr/share/%{name}/monitor.functions
+/usr/share/%{name}/setup.py*
+/usr/share/%{name}/threadpool.py*
+/usr/share/%{name}/zabbix.spec
+
+/usr/share/%{name}/bootcd
+/usr/share/%{name}/commands
+/usr/share/%{name}/config.d
+#/usr/share/%{name}/cron.d
+/usr/share/%{name}/docs
+/usr/share/%{name}/histlog
+/usr/share/%{name}/keys
+#/usr/share/%{name}/log
+/usr/share/%{name}/statistics
+/usr/share/%{name}/tests
+/usr/share/%{name}/tools
+/usr/share/%{name}/upgrade
+/usr/share/%{name}/web
+/usr/share/%{name}/zabbix
+
 #/var/www/cgi-bin/monitor
 %{_sysconfdir}/cron.d/monitor-server.cron
 %{_sysconfdir}/plc.d/monitor
 %{_sysconfdir}/plc.d/monitor.functions
 #/var/www/cgi-bin/monitor
 %{_sysconfdir}/cron.d/monitor-server.cron
 %{_sysconfdir}/plc.d/monitor
 %{_sysconfdir}/plc.d/monitor.functions
-%{_sysconfdir}/plc.d/zabbix
+#%{_sysconfdir}/plc.d/zabbix
 %{_sysconfdir}/httpd/conf.d
 %{python_sitearch}
 
 %{_sysconfdir}/httpd/conf.d
 %{python_sitearch}
 
+
 %files client
 %defattr(-,root,root)
 #%{_initrddir}/monitor
 %files client
 %defattr(-,root,root)
 #%{_initrddir}/monitor
@@ -217,6 +278,19 @@ rm -rf $RPM_BUILD_ROOT
 /%{_initrddir}/monitor-runlevelagent
 
 %post server-deps
 /%{_initrddir}/monitor-runlevelagent
 
 %post server-deps
+#
+# TODO: depend on distribution packages where feasible.
+#
+#  it would be better to be able to depend on the distribution's
+# packages for these additional python modules, but packages provided
+# by fedora 8 (our current deployment) doesn't match the version
+# requirements.
+export TMPDIR=/var/tmp/
+#easy_install -UZ http://files.turbogears.org/eggs/TurboGears-1.0.7-py2.5.egg
+#easy_install -UZ http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.5.3.tar.gz
+#easy_install -UZ Elixir
+chkconfig sendmail on
+chkconfig crond on
 
 # crazy openssl libs for racadm binary
 ln -s /lib/libssl.so.0.9.8b /usr/lib/libssl.so.2
 
 # crazy openssl libs for racadm binary
 ln -s /lib/libssl.so.0.9.8b /usr/lib/libssl.so.2
@@ -245,19 +319,11 @@ if ! plc-config --category plc_monitor --variable rt_queue ; then
                        --save /etc/planetlab/configs/site.xml /etc/planetlab/configs/site.xml 
 fi
 
                        --save /etc/planetlab/configs/site.xml /etc/planetlab/configs/site.xml 
 fi
 
-# zabbix:
-if ! plc-config --category plc_zabbix --variable enabled ; then
-       plc-config --category plc_zabbix --variable enabled --value false \
-                       --save /etc/planetlab/configs/site.xml /etc/planetlab/configs/site.xml 
-fi
-if ! plc-config --category plc_zabbix --variable host ; then
-       plc-config --category plc_zabbix --variable host --value localhost.localdomain \
-                       --save /etc/planetlab/configs/site.xml /etc/planetlab/configs/site.xml 
-fi
-if ! plc-config --category plc_zabbix --variable ip ; then
-       plc-config --category plc_zabbix --variable ip --value "" \ 
-                       --save /etc/planetlab/configs/site.xml /etc/planetlab/configs/site.xml 
-fi
+%post nagios
+# TODO: do as much as possible to get the host setup and running.
+#chkconfig --add monitor-nagios
+#chkconfig monitor-nagios on
+chkconfig mysqld on
 
 %post server
 # TODO: this will be nice when we have a web-based service running., such as
 
 %post server
 # TODO: this will be nice when we have a web-based service running., such as
@@ -281,14 +347,66 @@ chkconfig --add monitor
 chkconfig monitor on
 
 %post runlevelagent
 chkconfig monitor on
 
 %post runlevelagent
-chkconfig --add monitor-runlevelagent
-chkconfig monitor-runlevelagent on
-if [ "$PL_BOOTCD" != "1" ] ; then
-       service monitor-runlevelagent restart
+if [ -f /etc/planetlab/node_id ] ; then
+    chkconfig --add monitor-runlevelagent
+    chkconfig monitor-runlevelagent on
+    if [ "$PL_BOOTCD" != "1" ] ; then
+        service monitor-runlevelagent restart
+    fi
 fi
 
 
 %changelog
 fi
 
 
 %changelog
+* Wed Aug 31 2011 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-3.1-6
+- Minor updates to work with pcucontrol.
+- Added action for some fprobe no-space errors.
+
+* Wed Aug 31 2011 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-3.1-5
+- account for new ok status type in PCUs
+- include a percentage of nodes up as well as raw node-count
+
+* Fri May 27 2011 s s <soltesz@cs.princeton.edu> - monitor-3.1-4
+- Fixes to spec file for monitor building
+
+* Fri May 27 2011 s s <soltesz@cs.princeton.edu> - monitor-3.1-3
+- fixing syntax errors
+
+* Fri May 27 2011 s s <soltesz@cs.princeton.edu> - monitor-3.1-2
+- Add better requirements list, work with TurboGears packaged by fedora,
+- Remove some zabbix files
+- Add a controllers_local.py for custom extensions
+
+* Fri May 06 2011 s s <soltesz@cs.princeton.edu> - monitor-3.1-1
+- last tag before some more major changes
+
+* Thu May 20 2010 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-35
+- Add CSV link on Advanced query
+- Preparing to branch
+
+* Wed May 12 2010 Talip Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-34
+- * copy selections to clipbord on Advanced Query page
+- * RPM Pattern as regexp
+- * scan ipmi port
+
+* Tue Apr 27 2010 Talip Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-33
+- handle hostname changes
+
+* Tue Apr 20 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - Monitor-3.0-32
+- from this version, suitable for 5.0
+- requires bootcd with the new 5.0 naming style 3-part nodefamily
+
+* Mon Apr 12 2010 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-31
+- added fix for node delete/add causing conflicts in MyOps db.
+- added statistics scripts
+
+* Thu Jan 21 2010 Talip Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-30
+- * fix paths for automate script
+
+* Tue Dec 22 2009 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-29
+- - separate pcucontrol as an svn module
+- - restore easy_instal back into post install stage of server-deps
+- - template imporovements for web interface
+
 * Thu Dec 17 2009 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-28
 - do not need buildrequires. a new tag to fix centos builds
 
 * Thu Dec 17 2009 Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - Monitor-3.0-28
 - do not need buildrequires. a new tag to fix centos builds
 
@@ -460,4 +578,4 @@ fi
 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
 - initial addition.
 
 * Mon Apr 07 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - monitor-1.0-0
 - initial addition.
 
-%define module_current_branch 2.0
+%define module_current_branch 3.0