%define name monitor
%define version 3.0
-%define taglevel 12
+%define taglevel 18
%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
%global python_sitearch %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
Requires: python
Requires: python-setuptools-devel
+Requires: python-peak-util-extremes
+Requires: TurboGears
+Requires: compat-libstdc++-296
Requires: openssh-clients
Requires: perl-libwww-perl
Requires: perl-IO-Socket-SSL
Requires: rt3
Requires: plewww-plekit
-#Requires: python-sqlalchemy
-#Requires: python-elixir
+
#Requires: zabbix-client
#Requires: zabbix-gui
#Requires: zabbix-server
summary: pcu controls for monitor and plcapi
group: applications/system
requires: python
+requires: OpenIPMI-tools
%description pcucontrol
both monitor and the plcapi use a set of common commands to reboot machines
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/www/html/monitorlog/
+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
echo " * Installing core scripts"
rsync -a --exclude www --exclude archive-pdb --exclude .svn --exclude CVS \
echo " * Installing web pages"
rsync -a www/ $RPM_BUILD_ROOT/var/www/cgi-bin/monitor/
+rsync -a log/ $RPM_BUILD_ROOT/var/www/html/monitorlog/
echo " * Installing cron job for automated polling"
install -D -m 644 monitor-server.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/monitor-server.cron
%{python_sitearch}/threadpool.pyo
%{python_sitearch}/monitor
%{_sysconfdir}/plc.d/monitor
+%{_sysconfdir}/plc.d/monitor.functions
+%{_sysconfdir}/plc.d/zabbix
%files client
%defattr(-,root,root)
/%{_initrddir}/monitor-runlevelagent
%post server-deps
-easy_install --build-directory /var/tmp -UZ Elixir
-easy_install --build-directory /var/tmp -UZ ElementTree
-# TODO: something is bad wrong with this approach.
-#easy_install --build-directory /var/tmp -UZ http://pypi.python.org/packages/2.5/E/Extremes/Extremes-1.1-py2.5.egg
-#easy_install --build-directory /var/tmp -UZ "Paste==1.5.1"
-#easy_install --build-directory /var/tmp -UZ "PasteDeploy==1.3.1"
+#easy_install --build-directory /var/tmp -UZ ElementTree
+##easy_install --build-directory /var/tmp -UZ http://pypi.python.org/packages/2.5/E/Extremes/Extremes-1.1-py2.5.egg
-easy_install --build-directory /var/tmp -UZ http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.5.3.tar.gz
+
+## TODO: something is bad wrong with this approach.
easy_install --build-directory /var/tmp -UZ http://files.turbogears.org/eggs/TurboGears-1.0.7-py2.5.egg
+easy_install --build-directory /var/tmp -UZ http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.5.3.tar.gz
+easy_install --build-directory /var/tmp -UZ Elixir
+# crazy openssl libs for racadm binary
+ln -s /lib/libssl.so.0.9.8b /usr/lib/libssl.so.2
+mkdir /usr/share/monitor/.ssh
+chmod 700 /usr/share/monitor/.ssh
+
+if grep 'pam_loginuid.so' /etc/pam.d/crond ; then
+ sed -i -e 's/^session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/crond
+fi
# NOTE: add the default xml stuff if it's not already in the default xml config.
if ! grep '<category id="plc_monitor">' /etc/planetlab/default_config.xml ; then
sed -i 's|<category id="plc_net">| <category id="plc_monitor">\n <name>Monitor Service Configuration</name>\n <description>Monitor</description>\n <variablelist>\n <variable id="enabled" type="boolean">\n <name>Enabled</name>\n <value>true</value>\n <description>Enable on this machine.</description>\n </variable>\n <variable id="email">\n <value></value>\n </variable>\n <variable id="dbpassword">\n <value></value>\n </variable>\n <variable id="host" type="hostname">\n <name>Hostname</name>\n <value>pl-virtual-06.cs.princeton.edu</value>\n <description>The fully qualified hostname.</description>\n </variable>\n <variable id="ip" type="ip">\n <name>IP Address</name>\n <value/>\n <description>The IP address of the monitor server.</description>\n </variable>\n </variablelist>\n </category>\n <category id="plc_net">|' /etc/planetlab/default_config.xml
fi
+if ! grep '<category id="plc_zabbix">' /etc/planetlab/default_config.xml ; then
+ sed -i 's|<category id="plc_net">| <category id="plc_zabbix">\n <name>Zabbix Configuration</name>\n <description>Zabbix</description>\n <variablelist>\n <variable id="enabled" type="boolean">\n <name>Enabled</name>\n <value>false</value>\n <description>Enable on this machine.</description>\n </variable>\n <variable id="host" type="hostname">\n <name>Hostname</name>\n <value>localhost.localdomain</value>\n <description>The fully qualified hostname.</description>\n </variable>\n <variable id="ip" type="ip">\n <name>IP Address</name>\n <value/>\n <description>The IP address of the Zabbix server.</description>\n </variable>\n </variablelist>\n </category>\n <category id="plc_net">|' /etc/planetlab/default_config.xml
+fi
+# NOTE: enable monitor by default, since we're installing it.
+plc-config --save /etc/planetlab/default_config.xml \
+ --category plc_monitor --variable enabled --value true
%post server
# TODO: this will be nice when we have a web-based service running., such as
%post runlevelagent
chkconfig --add monitor-runlevelagent
chkconfig monitor-runlevelagent on
+if [ "$PL_BOOTCD" != "1" ] ; then
+ service monitor-runlevelagent restart
+fi
+
%changelog
+* Sun Jun 28 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-18
+- bug fixes.
+- improved templates and views
+- cleaned controller code for web
+- added IPMI requirement to pcucontrol package.
+
+* Thu Jun 18 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-17
+- added bootmanager log links
+- addressed root cause of IntegrityErrors ; big deal
+- adjusted templates to accomodate fix for IntegrityErrors
+- added session.flush() to bootman.py to write out ActionsRecords
+- fixed policy to either pause penalties or apply them ; not both.
+
+-* Wed Jun 17 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-16
+-- Added Rpyc from 1.0 branch.
+-- add pcuhistory
+-- add setup-agent for password protected keys.
+-- other minor improvements.
+
+* Wed Jun 17 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-15
+- automate install
+- auto-close tickets
+
+* Fri Jun 12 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-14
+- update web
+- update policy
+- added statistics dir
+
+* Mon Jun 08 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-13
+- remove plccache from controllers, all lookups from db.
+- reformat emailTxt messags
+- updated bootstates in bootman.py
+
* Tue Jun 02 2009 Stephen Soltesz <soltesz@cs.princeton.edu> - Monitor-3.0-12
- tag of latest changes.
- need to test end to end.