2005.05.20 * Created a MANIFEST file for building source distros. * Added dependancy checks in setup.py. * Commented out entire pymon.storage.sql file. * Ran into problems with api.py files, so stopped importing them for now. * Added temp import fix to pymon.tac. * Added system section for mail notifications to pymon.ini. * Added pymon.message.py for email notifications. * Added support for emailing messages in protocols.PyMonPing. * Updated installation instructions. 2005.05.15 * Changed setup.py to reflect the new location of the singleton class in the adytum library. * Modified the db configuration in the XML file. 2005.05.09 * Sandbox: added a true .tac app + service to the reactor sandbox. * Sandbox: added a workflow .tac to the reactor sandbox. * Sandbox: added a Factory-driven .tac to the reactor sandbox (currently only a copy with no Factory code in it). * Made changes to pymon.tac based on the reactor tests. * Updated the setup.py to install adytum.utilities. * Bug: this has been mentioned on the mail list, but I thought it should go in here too: there is currently a bug in the HTTPClient code somewhere. The first call to a remote webserver successfully connects, but all others seem to fail due to timeout. This really needs to be addressed. * Bug: when pymon.tac is run with HTTPClient enabled, shutdown (^C) takes FOREVER. It often has to be manually killed. 2005.05.08 * Added a PyMonState instantiation in pymon.workflow as that which should be imported from the module. * Added a placeholder for the license. * Fixed the descriptions in pymon.workflow. * Changed the wf instance name from pywf to state_wf, to allow for potential future pymon workflows that don't necessarily apply to state. * Reorganized workflow. * Site update: added license statement to the main page. * Pasted license content into placeholder, with a note about exceptions to the license. * Sandbox: added some code for doing experiments on the twisted reactor. 2005.05.07 * Added support for workflow with the adytum.workflow module (based on the itools workflow module). * Added support for python egg distribution. * Added additioanl details to setup.py. * Site update: added news item about workflow. * Implemented a first draft of a pymon workflow using the new supporting library for workflow (specifically, the Singleton version). 2005.05.01 * Pulled protocols.isInRange out and put it in pymon.utilities. * Started making changes to plugins.monnitors to use the new config objects. * Finished putting the stuff from pymon.ini into pymon.xml. * Added services.enabled to pymon.xml. 2005.04.17 * Moved lib/app/pymon/monnitors.py to plugins/monitors.py. * Added more values to pymon.constants. * Changed setup.py to pull values in form lib/app/pymon/constants.py. * Modified the INSTALL instructions. * Added new XML/Ini-file configuration support to pymon.config. * Stubbed pymon.config.PyMonIniConfig() * Added imports to pymon.api so that all imports in all the code can now go through this file. * Changed bin/pymon.tac to use the api imports. * Added pymon.utilities.getService() to acquire the appropriate storage service based on a passed configuration value. * Changed bin/pymon.tac to use pymon.utilities.getService(). * Removed the sql.updateDatabase() dependancy from pymon.protocols and instead moved it into pymon.utilities. Added XXX notes for future changes regarding this. * Added UI interface placeholder in the libs. * Fixed the updateDatabase() call in protocols.PyMonPing. * Replaced the shell script service/run with a python script that is able to get the app configs from adytum.app.pymon.constants; updated the INSTALL file to indicate one no longer needs to edit the service/run script. 2005.04.12 * sandbox: Added ZEO support to wxZODBVieer. There is now a menu option to "Open ZEO Instance... Ctrl-U". * sandbox: Added ZEO support to zodbschema.py. * sandbox: Added runzeo, zeoconfig, and zpasswd. 2005.04.11 * sandbox: Added zodb schema creation script as well as the ZODB viewer script from ASPN. 2005.04.10 * sandbox: Working more with the config API. * sandbox: More experimentation with dictionary configuration. May set aside the config API for now... 2005.04.07 * Updated the "Future" section of the web site. 2005.04.06 * sandbox: Added sandbox/config_api for experimenting with configuation adaptors. * sandbox: Added a bunch of files for experimenting with adaptation. * sandbox: Added an interface stub for IConfig. * Updated web site news. * Updated menus on the web site to point to trunk instead of the old twisted branch. * Updated web site to mention data storage options. * Updated old news about maillist. * sandbox: added a place for Ravi to experiment with pyparsing and creating an interactive shell for pymon. 2005.03.31 * Moved pymon.storage.sqlobject to pymon.storage.sql to avoid name space collisions with the SQLObject package. 2005.03.30 * Added storage and schema placeholders for the data API. * Added an api.py file for consistancy of interface for developers and users of pymon. * Removed some old files that are no longer useful. * Added directories for future interfaces and adaptors. These things have come up in mail list discussions, and will most likely be used. Preferably sooner than later. * Moved updateDatabase() from pymon.datamanager to where it should be, in a data store specific file: pymon.storage.sqlobject. * Updated pymon.protocols to refer to the new location of updateDatabase. 2005.03.29 * Fixed a bug in pymon.protocols. PyMonHTTPClientFactory.clientConnectionLost() had the wrong sig. * Added Exception handling to the http header parser. * Started debugging a problem with PyMonHTTPClientFactory. * Changed PyMonHTTPClient to parse http response instead of PyMonHTTPClientFactory * Changed PyMonHTTPClient to use cfg as the initialization param * Changed PyMonHTTPClient to make a list out of http status codes from the dictionary * Put the extended call syntax back in pymon.tac, for the sake of code elegance. * Enforced int() on the port number in pymon.monitors.getHTTPMonitors(). 2005.03.27 * Changed reactor.connectTCP method. * Added setHTTPConfigs method to __init__. * Changed PyMonHTTPClientFactory to use protocol.ClientFactory. 2005.03.10 * Updated site news. * Updated site menu links. 2005.03.09 * Updated the setup.py script to install the adytum.net.http package. 2005.03.08 * Rearranged the configuration ini files and python classes. * Wrote a HTTP configuration and monitor. * Started writing a protocol to handle HTTP status data for HTTP monitor. 2004.10.14 * Uploaded new site look and feel, logo, and menus to sf.net. * Updated the project details on sf.net. 2004.10.13 * Allan Bailey gave his project space on sourceforge.net. * Archived original site into svn for the sake of history. * Created new logo for sf.net site. 2004.10.11 * Updated pymon.tac with comments. * Moved the old app.pymon.monitor file. * Created a new app.pymon.monitor for the twisted version of pymon. * Renamed app.pymon.monitor to app.pymon.monitors. * Removed all the stuff from pymon.tac that was added to app.pymon.monitors. * Setup app.pymon.protocols.PyMonPing() to set a data dict containing current service status info. * Added more entries to the default ping configurations in config.ini. * Put data inserting and updating capabilities in app.pymon.protocols.PyMonPing for now, but I will take this out as soon as it's been generalized. Data inserts and updates are working like a charm, and previous/current states are being accurately reported. * Separating the data insert/update code was actually very easy, so I went ahead and did it (app.pymon.datamanager). However, I still need to add last* timestamps. * Added logic for "Recovering" state, tested and seems to be working properly... better, in fact, than the PyMonitor that's in production right now. * Added comments to .ini file. * Began adding support for local process checks. * Updated README with more notes about adding monitors. 2004.10.10 * Cleaned up the .tac file code a little, as well as the protocols. * Added a data dir. * Added database setup configuration to .ini * Reworked adytum.app.pymon.datamodel, including the addition of doctests. Doctests were crazy... I wanted to use a test db if the doctest was running the code, and use the real database otherwise. Checking for __name__ didn't work, since doctest re-imports the module, so I had to do some checks against the stack. I don't know much about that stuff, so the check is very fragile. 2004.10.09 * Removed empty dirs. * Added conf, contrib dirs. * Added place-holder for twisted deamon in bin dir. * Added protocols and data model from sandbox. * Added Zope-specific files in contrib dir. * Added setup.py file. * Created a daemontools service direcctory, and removed log dir, since we will be using stdout, letting daemontools perform the logging. * Added INSTALL and DEPENDANCIES files. * Updated README. * Began creating a configuration methodology. * Added a constants file in adytum.app.pymon. * Added doctests for first ping methods in config. * Completely rewrote adytum.net.ping by deleting everything that was in there and writing a Parser class for ping output. * Added tons mode doc tests that helped my fing bugs in the ping.Parser class. * Updated protocols and tac file with fixes and improvements. 2004.10.08 * Have begun reorganization of packages, modules, and library files for use in the next version of PyMonitor. * Moved monitoring-specific code into lib/app/pymon directory and renamed files to conform with the adytum conventions. * Moved general PyMonitor files into the adytum.os and adytum.net packages. * Re-organized top-level files. * Updated site content -- news and main page. 2004.05.13 o fixed the issue with last check/ok/warn/err dates only reporting the last check time o removed the deepcopy and used copy instead (was getting recursion errors) 2004.05.12 o created pickle-specific methods and renamed methods that are used for dealing with pickle files o edited the svn commit shell script to clear out pyc files and remove the tmp files o the _getLastRun method made a call to loadRunData which called _loadPickleFile, but then didn't return anything. Fixing this fixed all the issues I was having with save state info. 2004.05.11 o added support for giving friendly(er) names to data files o pulled out references to remote_* in Internet/Site.py o successfully tested site monitoring with Internet/Site o added a 'close' connection to the httpconn so that I could pickle the data (can't pickle a network connection) 2004.05.09 o moved subject template for email notifications out of System/Monitoring.py and into Monitor.py so that each service can customize it o The problem with remote process monitoring notifications was due to the fact that two rounds were being done at the same time: OK -> ERROR (round 1) + ERROR -> ERROR (round two) = no change between final state of round 1 and 2 and thus no message got sent. o Fixed a bug in process_monitor script: two calls to processMonitor for remote host services monitoring o Set the external storage back to binary pickles o Created a bunch of methods for accessing summary data and creating files that contain summary data. o Correcteed the messages that were getting saved to summary data o Changed the sort order for the summary data o Moved System/Hosts to Internet/Ping o Added Internet/Site and began stubbing out code for site monitoring. 2004.05.02 o moved email message templates into *Monitor methods so they could be easily tailored to each service being monitored o added message for ping monitoring o moved *Monitor methods out of Monitoring class and into Monitor class o moved Monitoring class into System package 2004.04.28 o added minimal support for ping-monitoring hosts o separated more code into general monitoring and type of monitoring o added a 'debug' property to Monitor.py and System/Host.py and removed print statements that were cluttering output o fixed database naming for ping monitoring o fixed a bug (type) in database naming for service monitorings without a remote host set o removed the binary parameter from the read/write methods and created a new property 'binary_pickle' that is checked before reading or writing pickles files