Branch 3.0 for module Monitor created (as new trunk) from tag Monitor-2.0-1
[monitor.git] / Monitor.spec
index 753fcd7..005e66a 100644 (file)
@@ -5,10 +5,11 @@
 %define url $URL: svn+ssh://svn.planet-lab.org/svn/monitor/trunk/monitor.spec $
 
 %define name monitor
 %define url $URL: svn+ssh://svn.planet-lab.org/svn/monitor/trunk/monitor.spec $
 
 %define name monitor
-%define version 1.1
+%define version 3.0
 %define taglevel 0
 
 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 %define taglevel 0
 
 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
+%global python_sitearch        %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
 
 Name: %{name}
 Version: %{version}
 
 Name: %{name}
 Version: %{version}
@@ -32,6 +33,8 @@ 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.
 
+######################################## CLIENT
+
 %package client
 Summary: Monitor hooks for a PLC node
 Group: Applications/System
 %package client
 Summary: Monitor hooks for a PLC node
 Group: Applications/System
@@ -44,25 +47,63 @@ include configuration setup for the monitoring agent running on the node.  It
 will also include any cron or init scripts needed to perform this kind of
 maintenance.
 
 will also include any cron or init scripts needed to perform this kind of
 maintenance.
 
+######################################## Server
 %package server
 Summary: Monitor hooks for the PLC server.
 Group: Applications/System
 %package server
 Summary: Monitor hooks for the PLC server.
 Group: Applications/System
-Requires: curl
-Requires: nmap
+
 Requires: python
 Requires: python
+Requires: python-sqlalchemy
+Requires: python-elixir
+
+Requires: openssh-clients
+Requires: perl-libwww-perl
+Requires: perl-IO-Socket-SSL 
+Requires: MySQL-python
+Requires: rt3 == 3.4.1
+Requires: nmap
+Requires: PLCWWW >= 4.2
+Requires: bootcd-planetlab-i386 >= 4.2
+
+Requires: zabbix-client
+Requires: zabbix-gui
+Requires: zabbix-server
 
 %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.
 
+######################################## PCU Control
+
+%package pcucontrol
+summary: pcu controls for monitor and plcapi
+group: applications/system
+requires: python
+
+%description pcucontrol
+both monitor and the plcapi use a set of common commands to reboot machines
+using their external or internal pcus.  this package is a library of several
+supported models.
+
+####################################### RunlevelAgent
+%package runlevelagent
+summary: the RunlevelAgent that reports node runlevels
+group: applications/system
+requires: python
+
+%description runlevelagent
+The RunlevelAgent starts as early as possible during boot-up and production
+mode to actively report the observed runlevel to PLC and update the
+'last_contact' field.
+
 %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.
 %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 cmdamt
+cd pcucontrol/models/intelamt
 export TMPDIR=$PWD/tmp
 make
 cd ..
 export TMPDIR=$PWD/tmp
 make
 cd ..
@@ -70,8 +111,8 @@ cd ..
 %install
 rm -rf $RPM_BUILD_ROOT
 #################### CLIENT 
 %install
 rm -rf $RPM_BUILD_ROOT
 #################### CLIENT 
-install -D -m 755 monitor.init $RPM_BUILD_ROOT/%{_initrddir}/monitor
-install -D -m 755 monitor.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor
+install -D -m 755 monitor-client.init $RPM_BUILD_ROOT/%{_initrddir}/monitor
+install -D -m 644 monitor.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor
 
 #################### SERVER
 install -d $RPM_BUILD_ROOT/usr/share/%{name}
 
 #################### SERVER
 install -d $RPM_BUILD_ROOT/usr/share/%{name}
@@ -81,6 +122,8 @@ install -d $RPM_BUILD_ROOT/var/lib/%{name}
 install -d $RPM_BUILD_ROOT/var/lib/%{name}/archive-pdb
 install -d $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
 
 install -d $RPM_BUILD_ROOT/var/lib/%{name}/archive-pdb
 install -d $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
 
+install -D -m 755 monitor-server.init $RPM_BUILD_ROOT/%{_sysconfdir}/plc.d/monitor
+
 echo " * Installing core scripts"
 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
          ./ $RPM_BUILD_ROOT/usr/share/%{name}/
 echo " * Installing core scripts"
 rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
          ./ $RPM_BUILD_ROOT/usr/share/%{name}/
@@ -89,7 +132,7 @@ echo " * Installing web pages"
 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
 
 echo " * Installing cron job for automated polling"
 rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
 
 echo " * Installing cron job for automated polling"
-install -D -m 644 %{name}.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/%{name}.cron
+install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
 echo " * TODO: Setting up Monitor account in local MyPLC"
 # TODO: 
 
 echo " * TODO: Setting up Monitor account in local MyPLC"
 # TODO: 
 
@@ -100,44 +143,67 @@ rsync -a monitor/ $RPM_BUILD_ROOT/%{python_sitearch}/monitor/
 #for file in __init__.py database.py config.py ; do 
 #      install -D -m 644 monitor/$file $RPM_BUILD_ROOT/%{python_sitearch}/monitor/$file
 #done
 #for file in __init__.py database.py config.py ; do 
 #      install -D -m 644 monitor/$file $RPM_BUILD_ROOT/%{python_sitearch}/monitor/$file
 #done
+rsync -a pcucontrol/ $RPM_BUILD_ROOT/%{python_sitearch}/pcucontrol/
 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
 
 touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 
 install -D -m 755 threadpool.py $RPM_BUILD_ROOT/%{python_sitearch}/threadpool.py
 
 touch $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 chmod 777 $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/monitorconfig.php
 
-install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf
-cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py
+#install -D -m 755 monitor-default.conf $RPM_BUILD_ROOT/etc/monitor.conf
+#cp $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig-default.py $RPM_BUILD_ROOT/usr/share/%{name}/monitorconfig.py
+
+#################### RunlevelAgent
+install -D -m 755 RunlevelAgent.py $RPM_BUILD_ROOT/usr/bin/RunlevelAgent.py
+install -D -m 755 monitor-runlevelagent.init $RPM_BUILD_ROOT/%{_initrddir}/monitor-runlevelagent
+
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+
 %files server
 %defattr(-,root,root)
 %files server
 %defattr(-,root,root)
-%config /usr/share/%{name}/monitorconfig.py
-%config /etc/monitor.conf
+#%config /usr/share/%{name}/monitorconfig.py
+#%config /etc/monitor.conf
 /usr/share/%{name}
 /var/lib/%{name}
 /var/www/cgi-bin/monitor
 /usr/share/%{name}
 /var/lib/%{name}
 /var/www/cgi-bin/monitor
-%{_sysconfdir}/cron.d/%{name}.cron
+%{_sysconfdir}/cron.d/monitor-server.cron
 %{python_sitearch}/threadpool.py
 %{python_sitearch}/threadpool.pyc
 %{python_sitearch}/threadpool.pyo
 %{python_sitearch}/monitor
 %{python_sitearch}/threadpool.py
 %{python_sitearch}/threadpool.pyc
 %{python_sitearch}/threadpool.pyo
 %{python_sitearch}/monitor
+%{_sysconfdir}/plc.d/monitor
 
 %files client
 %defattr(-,root,root)
 %{_initrddir}/monitor
 %{_sysconfdir}/cron.d/monitor
 
 
 %files client
 %defattr(-,root,root)
 %{_initrddir}/monitor
 %{_sysconfdir}/cron.d/monitor
 
+%files pcucontrol
+%{python_sitearch}/pcucontrol
+
+%files runlevelagent
+/usr/bin/RunlevelAgent.py
+/usr/bin/RunlevelAgent.pyo
+/usr/bin/RunlevelAgent.pyc
+/%{_initrddir}/monitor-runlevelagent
+
 %post server
 # TODO: this will be nice when we have a web-based service running., such as
 #              an API server or so on.
 # TODO: create real monitorconfig.py from monitorconfig-default.py
 # TODO: create monitorconfig.php using phpconfig.py 
 %post server
 # TODO: this will be nice when we have a web-based service running., such as
 #              an API server or so on.
 # TODO: create real monitorconfig.py from monitorconfig-default.py
 # TODO: create monitorconfig.php using phpconfig.py 
-# TODO: create symlink in /var/lib/monitor-server for chroot environments
+# TODO: create symlink in /var/lib/monitor for chroot environments
 # TODO: update the content of automate_pl03.sh 
 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
 
 # TODO: update the content of automate_pl03.sh 
 # TODO: Use the installed version of bootcd to create custom boot images. ( or, use the api now).
 
+# NOTE: generate the python defines from zabbix include files.
+php /usr/share/%{name}/zabbix/getdefines.php > %{python_sitearch}/monitor/database/zabbixapi/defines.py
+
+# apply patches to zabbix
+patch -d /var/www/html/zabbix/ -p0 < /usr/share/%{name}/zabbix/zabbix-auto-login.diff
+
 #chkconfig --add monitor-server
 #chkconfig monitor-server on
 
 #chkconfig --add monitor-server
 #chkconfig monitor-server on
 
@@ -145,7 +211,17 @@ rm -rf $RPM_BUILD_ROOT
 chkconfig --add monitor
 chkconfig monitor on
 
 chkconfig --add monitor
 chkconfig monitor on
 
+%post runlevelagent
+chkconfig --add monitor-runlevelagent
+chkconfig monitor-runlevelagent on
+
 %changelog
 %changelog
+* Fri Feb 27 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-1
+- preparing to make a 2.0 branch for monitor.
+
+* Mon Jan 05 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-2.0-0
+- new changes are significantly different, that I'm upping the number for clarity.
+
 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
 - These are all changes in the latest Monitor code.  I will branch this version
 - next, before making additional large changes.
 * Wed Sep 24 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-1.0-8
 - These are all changes in the latest Monitor code.  I will branch this version
 - next, before making additional large changes.
@@ -177,4 +253,4 @@ chkconfig monitor on
 * 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 1.0
+%define module_current_branch 2.0