* Sat Jul 28 23:10:47 2007 +0000 stark

	TODO: update some TODOs

* Sat Jul 28 22:52:49 2007 +0000 stark

	tentakel.1: update copyright notice

* Sat Jul 28 22:52:47 2007 +0000 stark

	get rid of RCS/SVN Ids

* Sat Jul 28 22:48:16 2007 +0000 stark

	several changes
	- add execwrapper
	- remove svn2cl.xsl
	- better Makefile (and add execwrapper)



* Fri Jul 27 21:51:37 2007 +0000 stark

	Squashed commit of the following:
	commit 121f329a74c70326e9a84dd6deaed53df800dba2
	Author: Sebastian Stark <seb@biskalar.de>
	Date:   Fri Jul 27 23:50:16 2007 +0200

	    Add execwrapper.c

	    This program is a wrapper to help killing runaway ssh sessions.
	    There are several cases where a program like ssh can hang forever
	    so we need some portable and reliable way to kill it after
	    a certain amount of time.

	    Much thanks go to Andre Noll who wrote it.



* Fri Jul 27 16:40:00 2007 +0000 stark

	svn2cl.xsl not needed anymore

* Fri Jul 27 16:39:59 2007 +0000 stark

	Makefile: change the way the ChangeLog file is being generated
	Use git-log to generate ChangeLog file. Depends on the par
	utility for nice formatting.

	Make "changelog" a PHONY target



* Fri Jul 27 14:42:33 2007 +0000 stark

	TODO: C wrapper for ssh/rsh/etc.

* Fri Jul 27 14:26:38 2007 +0000 stark

	one more TODO item

* Sun Mar 25 12:50:36 2007 +0000 stark

	fix error handling in case of inexistent group

* Mon Mar 12 23:39:34 2007 +0000 stark

	- update rsh.py to reflect stderr changes. Untested so far.

* Mon Mar 12 23:37:35 2007 +0000 stark

	- Split stdout and stderr of the remote command.
	- Introduce the formatting character e to output stderr.
	- Update documentation accordingly

	This is an amazingly small commit, only 11 lines of code needed to be changed!




* Sun Mar 11 23:42:48 2007 +0000 stark

	import statements go to the top of the file

* Sun Mar 11 23:36:26 2007 +0000 stark

	comments about session timeout

* Sun Mar 11 23:25:08 2007 +0000 stark

	Integrate patch by Yves Jaeger. This makes it possible to pipe stuff into tentakel. Stdin will be multiplied and available on all remote hosts.
	It also removes the dependency on the commands module. Thanks, I did not like it anyway.

	For now this commit breaks user plugins because of a little API change. There will be either a document describing how to upgrade or some workaround.


* Sun Mar 11 16:11:06 2007 +0000 stark

	update to newer tpg version. Should make tentakel work with python2.5

* Sun Mar 11 16:04:50 2007 +0000 stark

	revert ssh module to non-subprocess mode

* Sun Mar 11 15:47:05 2007 +0000 stark

	better error handling, e. g. for nonexistant group

* Sun Mar 4 21:30:26 2007 +0000 stark

	Python 2.4 required from now on

* Sun Mar 4 21:28:04 2007 +0000 stark

	trying out the subprocess module
	returncode not yet working for some reason



* Sun Mar 4 21:00:16 2007 +0000 stark

	update

* Sun Mar 4 20:56:08 2007 +0000 stark

	update copyright notice
	2007 is going to be a year of a new tentakel release.




* Sun Jul 10 14:45:27 2005 +0000 stark

	update

* Sun Jul 10 14:32:43 2005 +0000 stark

	update

* Sun Jul 10 14:30:02 2005 +0000 stark

	better error handling during expansion of synamic hostlists

* Sun Jul 10 13:35:54 2005 +0000 stark

	rcs id prop

* Thu Jul 7 13:39:14 2005 +0000 stark

	update ChangeLog

* Thu Jul 7 13:35:14 2005 +0000 stark

	purge some TODOs that are implemented or will never be implemented.

* Thu Jul 7 13:33:12 2005 +0000 stark

	more

* Thu Jul 7 13:32:21 2005 +0000 stark

	include example for a dynamic host group

* Fri Apr 22 07:21:16 2005 +0000 stark

	newer date for the manual page

* Wed Apr 20 08:41:06 2005 +0000 stark

	Correct docstring

* Wed Apr 20 08:28:18 2005 +0000 stark

	Document host exclusion

* Mon Apr 18 20:49:21 2005 +0000 stark

	document that dynamic host inclusion scripts must return with exitcode 0

* Mon Apr 18 20:31:33 2005 +0000 stark

	allow absolute pathnames in dynamic host inclusions

* Mon Apr 18 20:21:28 2005 +0000 stark

	Implement dynamic host inclusion: A config group can contain
	!somefile statements where somefile is the name of a script
	which outputs the actual hostlist.

	Had to rename __user_dir and __user_plugin_dir to _user_dir
	and _user_plugin_dir respectively.




* Sun Apr 10 22:54:35 2005 +0000 stark

	typo

* Wed Apr 6 08:44:57 2005 +0000 stark

	change my email address

* Sat Apr 2 16:18:53 2005 +0000 stark

	update

* Sat Apr 2 16:17:17 2005 +0000 stark

	do not hide KeyError exceptions when instantiating a plugin

* Sat Apr 2 11:37:10 2005 +0000 stark

	version 2.2.1

* Sat Apr 2 11:31:32 2005 +0000 stark

	svn2cl generated ChangeLog. This is not quite as nice as cvs2cl but
	it is sufficient to provide the information needed in a ChangeLog.



* Sat Apr 2 11:13:43 2005 +0000 stark

	remove CVSROOT

* Sun Mar 27 00:14:17 2005 +0000 cran

	 - support host subtraction via '-host' syntax
	 - groups can subtract hosts from themselves or underlying groups
	 - subgroups cannot subtract hosts from groups above

	 define SyntaxError exception, for future use by the parser



* Mon Mar 21 12:12:24 2005 +0000 cran

	update

* Sun Mar 20 15:54:26 2005 +0000 cran

	minor documentation fixes

* Sun Mar 20 15:19:33 2005 +0000 cran

	update

* Sun Mar 20 15:16:53 2005 +0000 cran

	In .run(), wait a bit for _stopEvent. Makes thread joining much faster.
	taken from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65448



* Fri Mar 18 08:36:40 2005 +0000 cran

	ignore missing user plugin dir

* Fri Mar 18 08:22:50 2005 +0000 cran

	generate ChangeLog from cvs, more information.

* Fri Mar 18 08:17:33 2005 +0000 cran

	oops. (%d -> %t)

* Thu Mar 17 21:58:18 2005 +0000 cran

	mention PLUGINS document in the manual page

* Thu Mar 17 21:55:48 2005 +0000 cran

	Plugin documentation

* Thu Mar 17 21:55:27 2005 +0000 cran

	fix imports

* Thu Mar 17 20:51:01 2005 +0000 cran

	include lekatnet/plugins/__init__.py in release tarball

* Thu Mar 17 20:45:55 2005 +0000 cran

	 - update ChangeLog
	 - remove unit tests from remote.py. They do not work with plugins
	   and bseides this they're shit.



* Thu Mar 17 20:39:14 2005 +0000 cran

	use config.__user_dir

* Thu Mar 17 20:25:43 2005 +0000 cran

	monster commit, bring the plugin importer into an acceptable state.
	 - do not use execfile to source plugins, it's ugly. use "from plugins import *" instead
	 - put all importer logic in plugins/__init__.py
	 - mention plugins in the manual page
	 - much better docstring for remote.py, explain concepts



* Thu Mar 17 01:57:49 2005 +0000 cran

	forgot to check this in

* Thu Mar 17 01:56:39 2005 +0000 cran

	make plugin imports a bit nicer
	 - make the plugin registry a private attribute
	 - error when a plugin class does not inherit from RemoteCommand
	 - user plugins get loaded last, so one can override standard methods



* Thu Mar 17 00:12:56 2005 +0000 cran

	First shot at plugin loading
	 - move *RemoteCommand classes into plugin dir
	 - make setup.py aware of this directory/package
	 - kind of ugly importer using execfile
	 - finds user plugins in $HOME/.tentakel/plugins/



* Tue Mar 15 08:11:47 2005 +0000 cran

	update copyright for 2005

* Mon Mar 14 16:11:40 2005 +0000 cran

	- add some comments on RemoteCommand.slot to point out the problems
	- _maxparallel -> __maxparallel

	- only create the slot semaphore when needed and then only once (this was
	  a minor bug in the first version)



* Mon Mar 14 14:33:45 2005 +0000 cran

	Rework displayAll().
	Now the RemoteCommand class has an auxiliary queue holding references to
	objects that have results pending. This way displayAll() can simply wait
	(blocking) for the next result by calling the auxiliary queues get() method.

	Makes displayAll() easier to understand and also a bit faster.
	(speed is getting more and more an issue with tentakel...)

	As a side effect this also fixes a silly bug that allowed only one command
	to be executed during an interactive tentakel session.



* Sun Mar 13 18:57:09 2005 +0000 cran

	update

* Sun Mar 13 18:50:53 2005 +0000 cran

	update

* Sun Mar 13 18:46:40 2005 +0000 cran

	make clear that maxparallel is set to 0 by default

* Sun Mar 13 18:43:42 2005 +0000 cran

	Add "maxparallel" parameter.
	This was surprisingly easy to implement by simply adding (and using) a
	BoundedSemaphore to the RemoteCommand class as a class attribute.



* Sat Mar 5 22:11:58 2005 +0000 cran

	Add some pieces of plugin documentation

* Sat Mar 5 22:04:41 2005 +0000 cran

	include plugin directory in release

* Sat Mar 5 21:54:14 2005 +0000 cran

	Ignore readline import errors.
	This fixes compatibility with e. g. Solaris.



* Sat Mar 5 21:23:27 2005 +0000 cran

	Set version to 2.2
	Put a notice in INSTALL to make people use packages in favor of a
	source install.

	Update ChangeLog (optimistically...)



* Sat Mar 5 21:12:56 2005 +0000 cran

	Do not make RemoteCommands daemonic because one of the last changes
	made it necessary. Unfortunately I don't know why. Since tentakel seems
	to do fine without setDaemon(1) I don't care at the moment.



* Wed Dec 29 13:07:55 2004 +0000 cran

	 First shot at plugin infrastructure

* Wed Dec 29 13:04:05 2004 +0000 cran

	cumulative check-in, cause I made many changes and forgot to check in
	afterwards...

	 - better separation for the *RemoteCommand classes, commandQueue
	   is now semi-private. Leads to easier client interface

	 - fix bug that lead to many stale threads when changing the configuration
	   interactively

	 - RSHRemoteCommand can now determine the rsh return status

	 - attempt to make thread handling better: output results immediately when
	   they're ready (in the resultQueue). For that reason displayAll() sort
	   of polls the resultQueue

	This commit might break things at first.



* Sun Nov 21 11:32:45 2004 +0000 cran

	more

* Wed Oct 6 21:28:47 2004 +0000 cran

	add a note about problems that may occur when an optional python-dev
	package is missing from the system. Noted by Marlon 10 months ago. :)



* Mon Sep 27 00:41:00 2004 +0000 cran

	more elegant way to choose needed RemoteCommand derivate

* Sun Sep 26 20:04:24 2004 +0000 cran

	change installation instructions regarding the python version that
	has to be 2.3 at least.



* Sun Sep 26 20:01:06 2004 +0000 cran

	set release date for 2.1.3

* Sun Sep 26 19:58:01 2004 +0000 cran

	Second part of the RemoteCommand overhaul
	 - RemoteCommand is now a generic class, all remote command
	   classes inherit from there

	 - SSHRemoteCommand and RSHRemoteCommand are the first ones

	 - introduce "rsh" method and "rsh_path" variable

	 - update TODO

	 - update manpage

	 - update and reformat README

	 - remove warning message about which config file is used that
	   was there only for debugging reasons

	 - IMPORTANT CHANGE: parameters for a specific hosts are now taken
	   from it's nearest enclosing group and not from the top-level group.
	   A simple change makes this possible: the ConfigBase.getGroupMembers()
	   method now returns a list of tuples where each tuple contains a
	   destination and a complete set of group config parameters



* Sun Sep 26 13:28:09 2004 +0000 cran

	crank version number

* Sun Sep 26 13:25:50 2004 +0000 cran

	First step of the RemoteCommand overhaul:
	The goal is to have a generic RemoteCommand class and one class for
	each remote methode that inherits from RemoteCommand.

	 - Unify RemoteCommand __init__ parameters. This way the
	   container object does not need to know about the remote
	   method and its specific parameters. Instead the container
	   has to supply the group specific parameters as a dictionary.

	 - For this it is needed to be able to ask the ConfigBase class
	   for a complete set of configuration directives for a specific
	   group. You can do this with the getGroupParams() method now.

	 - rename: ConfigBase.getExpandedGroup() -> ConfigBase.getGroupMembers()

	 - rename: ConfigBase.getGroup() -> ConfigBase._getGroup()

	 - update docstrings

	 - update unit tests



* Sun Sep 26 11:55:14 2004 +0000 cran

	typo

* Sun Sep 26 11:52:34 2004 +0000 cran

	Introduce %t expansion:
	 - add to format parser token list
	 - RemoteCommand objects must now provide a duration
	 - update documentation accordingly (fix typo in manpage as well: ommited -> omitted)
	 - update ChangeLog
	 - change default format to illustrate usage of %t



* Sun Sep 26 11:41:21 2004 +0000 cran

	update

* Sun Sep 26 10:24:58 2004 +0000 cran

	update, fix and add a lot of documentation

* Sun Sep 26 09:54:30 2004 +0000 cran

	Forgot to remove TODO for previous commit

* Sun Sep 26 09:51:20 2004 +0000 cran

	- make config.dump() and config.load() take a file object parameter
	  and not a string containing the path.
	- use TemporaryFile or NamedTemporaryFile instead of mktemp.

	This limits backwards compatibility to python 2.3.



* Sat Sep 25 13:23:09 2004 +0000 cran

	- update homepage URL

* Sat Sep 25 13:21:56 2004 +0000 cran

	- update copyright notices (years)
	- change python default path to /usr/bin/python



* Sat Sep 25 13:19:02 2004 +0000 cran

	typo: failure -> failures
	In case of a failure, this lead to a failure :)



* Sun Jan 25 18:06:29 2004 +0000 cran

	don't use "from ... import *", instead, explicitely name the module name.
	This is much easier to read and debug.



* Sun Jan 25 14:31:58 2004 +0000 cran

	- use new-style classes where possible
	- better format map handling:
	  - better variable names
	  - put %% in the default format map of the formatter class
	  - make formatMap a property in the formatter class
	- use zip() instead of map(lambda...) to zero the default values in ConfigGroup



* Sun Jan 25 14:21:18 2004 +0000 cran

	fix for braindead regression test (still braindead enough)

* Sun Jan 18 13:47:34 2004 +0000 cran

	quite hard to do: reacting to programs that require terminal input

* Sat Jan 17 18:58:29 2004 +0000 cran

	update

* Sat Jan 17 18:54:19 2004 +0000 cran

	set version to 2.1.2

* Sat Jan 17 18:50:46 2004 +0000 cran

	use english quoting style in warning and error messages

* Sat Jan 17 18:35:03 2004 +0000 cran

	  - (err nameclash in config.py fixed before)
	  - first try config file that was specified on the command line
	    and err out if it does not work
	  - than try user config and site config and err out if they don't work
	  - finally tell user that no config has been found



* Sat Jan 17 18:13:21 2004 +0000 cran

	shift status 8 bits left to remove signal number

* Sat Jan 17 18:12:21 2004 +0000 cran

	allow "-" in hostnames

* Sun Jan 11 13:15:27 2004 +0000 cran

	 - fix some regression tests
	 - add one to test ugly syntax parsing



* Sat Jan 10 23:34:02 2004 +0000 cran

	  - put empty lines between groups in config dump
	  - put clarifying comment into temporary config edit file



* Sat Jan 10 22:44:29 2004 +0000 cran

	  simple unit tests for RemoteCommand

* Sat Jan 10 22:28:44 2004 +0000 cran

	  introduce some unit tests (which were commited partially before)
	  regression testing is triggered with "make regress" in the main directory



* Sat Jan 10 21:48:07 2004 +0000 cran

	  - remove bug from parser that zeroed out all global settings
	  - sanitize getParam()
	  - rework __doc__ for getParam()
	  - remove superfluous variable in remote.py



* Sat Jan 10 20:26:20 2004 +0000 cran

	set version to 2.1.1

* Sat Jan 10 20:17:01 2004 +0000 cran

	 - put default values in the PARAMS dictionary because it is more
	   obvious
	 - make comments a non-terminal in the config file grammar. Rather
	   use tpg.Parser.extract() to cut them out. This should fix the
	   problem where one could not use # in a parameter value



* Tue Jan 6 12:12:25 2004 +0000 cran

	remove -x from ssh command

* Tue Jan 6 12:10:45 2004 +0000 cran

	initialise keyword token from PARAMS
	this is some kind of hack since it involves setting the docstring
	with __doc__ = r"""......""" % ...



* Mon Jan 5 21:27:36 2004 +0000 cran

	typo

* Mon Jan 5 15:23:53 2004 +0000 cran

	fix getParam() to match expected behaviour

* Mon Jan 5 14:51:24 2004 +0000 cran

	set release date

* Mon Jan 5 14:45:04 2004 +0000 cran

	change config file example after recent changes

* Mon Jan 5 14:39:03 2004 +0000 cran

	 - put all config parameters into a global variable PARAMS
	 - __str__ global parameters only if their value is non-empty



* Sun Jan 4 23:36:49 2004 +0000 cran

	set version to 2.1

* Sun Jan 4 23:34:54 2004 +0000 cran

	mention how parameters of sub-groups are treated

* Sun Jan 4 23:33:56 2004 +0000 cran

	update

* Sun Jan 4 23:33:39 2004 +0000 cran

	 determine user globally, not in each group

* Sun Jan 4 14:40:45 2004 +0000 cran

	 change manual page after to reflect recent grammar changes

* Sun Jan 4 14:40:05 2004 +0000 cran

	 - restructure/simplify grammar
	 - now all values (after =) have to be quoted with ""
	 - all parameters may appear in a set statement, which makes them global
	 - all parameters may appear in a group spec, which makes them local to this group



* Sun Jan 4 12:59:43 2004 +0000 cran

	 - introduce "set varname=value" directives in the configuration file
	 - currently supported is ssh_path="/some/path/to/ssh"
	 - new category in the config AST: "settings"
	 - use self["settings"]["ssh_path"] from the config AST to set the ssh path
	 - minor optimisations in the config file grammar (not ready yet)



* Sun Jan 4 12:08:03 2004 +0000 cran

	update homepage address (now: http://tentakel.biskalar.de/)

* Sun Jan 4 00:02:38 2004 +0000 cran

	add html version of manpage

* Fri Jan 2 18:08:09 2004 +0000 cran

	more

* Fri Jan 2 18:03:00 2004 +0000 cran

	make clear that host definitions do not need to be separated by newlines

* Fri Jan 2 17:08:21 2004 +0000 cran

	announcement text for rel 2.0

* Thu Jan 1 18:58:36 2004 +0000 cran

	2.0 release

* Thu Jan 1 18:46:09 2004 +0000 cran

	more

* Thu Jan 1 18:35:18 2004 +0000 cran

	 - remove redundant information

* Thu Jan 1 18:34:18 2004 +0000 cran

	 - more install hints
	 - minor fixes



* Mon Dec 29 14:40:49 2003 +0000 cran

	nicer postscript output

* Sun Dec 28 21:40:02 2003 +0000 cran

	 - don't use __str__ when a normal method makes more sense...

* Sun Dec 28 21:26:12 2003 +0000 cran

	 - tentakel warnings and errors go to sys.stderr
	 - indicate errors as such



* Sun Dec 28 21:22:23 2003 +0000 cran

	catch RuntimeError from possible loops in configuration files

* Sun Dec 28 20:40:27 2003 +0000 cran

	 modernize README

* Sun Dec 28 20:24:54 2003 +0000 cran

	 - better formatting in a lot of places
	 - document interactive mode
	 - change suse7.3 example to myGroup



* Sun Dec 28 16:06:53 2003 +0000 cran

	update

* Sun Dec 28 15:39:49 2003 +0000 cran

	update

* Sun Dec 28 15:22:32 2003 +0000 cran

	 - make the manpage more exact
	 - complete config file description
	 - fix some issues with postscript output



* Sun Dec 28 12:22:13 2003 +0000 cran

	set version to 2.0

* Sun Dec 28 12:04:49 2003 +0000 cran

	done

* Sun Dec 28 12:04:06 2003 +0000 cran

	 - formats are now defined in the config file as groupspec parameters
	 - formats are stored in the abstract syntax tree for each group
	 - format is set in RemoteCollator.useConf()
	 - update manpage and example config file accordingly



* Sat Dec 27 14:33:36 2003 +0000 cran

	some more TODOs

* Sat Dec 27 14:28:33 2003 +0000 cran

	add TPG to the distribution

* Sat Dec 27 14:25:09 2003 +0000 cran

	add licenses

* Sat Dec 27 14:13:24 2003 +0000 cran

	Just give a warning on some errors instead of killing tentakel

* Sat Dec 27 13:55:35 2003 +0000 cran

	dont use the term "site shell"

* Sat Dec 27 13:53:03 2003 +0000 cran

	move config file documentation into manpage

* Sat Dec 27 13:38:47 2003 +0000 cran

	update

* Sat Dec 27 13:33:38 2003 +0000 cran

	 - if existant use $HOME/.tentakel/tentakel.conf instead of /etc/tentakel.conf
	 - document this behaviour



* Sat Dec 27 13:12:51 2003 +0000 cran

	 - use TPG to parse formatstrings
	 - use \n and \t for newline and tab
	 - change manpage accordingly



* Sat Dec 27 12:54:05 2003 +0000 cran

	fix example

* Sat Dec 27 03:48:13 2003 +0000 cran

	rename -d parameter to -g

* Sat Dec 27 03:38:57 2003 +0000 cran

	let the user decide which config file to use with the new -c parameter

* Sat Dec 27 03:22:50 2003 +0000 cran

	crank beta version number

* Sat Dec 27 03:20:28 2003 +0000 cran

	 - better syntax for the configuration file, see the grammar diff and example

* Fri Dec 26 23:59:38 2003 +0000 cran

	 - import tpg into package lekatnet (maybe remove it later)
	 - use tpg to generate a parser for the configuration file
	 - simplify the abstract syntax tree in config.py much



* Thu Dec 18 15:21:31 2003 +0000 cran

	more hints about installing tentakel

* Thu Dec 18 08:49:33 2003 +0000 cran

	document -v

* Wed Dec 17 22:38:03 2003 +0000 cran

	 - use tempfile module to get a temporary pathname for ConfigBase.edit()
	   This is not really safe but acceptable for the time being.
	 - get EDITOR or VISUAL from environment, fallback to vi



* Wed Dec 17 22:11:39 2003 +0000 cran

	 - move helptext for -h where it belongs, tentakel, not error.py
	 - tentakel -v now outputs version information



* Wed Dec 17 22:02:03 2003 +0000 cran

	 - if a the user value in tentakel.conf is set to "$user" then the
	   effective uid of the tentakel process is used.



* Sun Dec 14 17:47:22 2003 +0000 cran

	  - respect PREFIX environment variable during installation

* Sun Dec 14 17:14:28 2003 +0000 cran

	 - move modules into own package "letaknet"
	 - use distutils for installation
	 - adopt changes to INSTALL and Makefile



* Sat Dec 13 15:10:39 2003 +0000 cran

	 - don't err when no groupname is specified on the command line,
	   just use "default".



* Sat Dec 13 15:09:48 2003 +0000 cran

	 - include temporary python files in clean target

* Sat Dec 13 14:59:13 2003 +0000 cran

	 - Bring ChangeLog and documentation in sync with recent changes
	 - rename old shell version to tentakel.old



* Sat Dec 13 10:02:49 2003 +0000 cran

	This is not true

* Sat Dec 13 09:55:03 2003 +0000 cran

	 - put shell into own module
	 - no globals are referenced anymore from the class body



* Fri Dec 12 23:18:57 2003 +0000 cran

	 - "listgroups" in interactive mode lists available groups
	 - "use" in interactive mode sets current group and also changes the prompt



* Fri Dec 12 21:58:12 2003 +0000 cran

	 - sprinkle some TODOs
	 - style: always newlines after docstrings



* Fri Dec 12 21:44:38 2003 +0000 cran

	A *lot* of changes. too much to list all of them.
	 - restructured a lot of objects
	 - use cmd.Cmd for interactive mode
	 - rename some variables
	 - more useful docstrings
	 - use __str__ for the ConfigItem-style objects. Not it's very easy
	   to dump a config object back to a human readable file

	Still lotsa bugs.



* Mon Dec 8 14:37:07 2003 +0000 cran

	First shot at a python version of tentakel.
	Not quite ready yet, but usable.



* Tue May 27 22:23:56 2003 +0000 imaginat

	Provided a solution to the problem with the assert function. "set +e" is
	not supported by many shell, so Sebastians solution wasnt perfect. The
	ksh and the Unix V7 sh exits for the code "set -e; eval false || true",
	but it doesnt, when it's wrapped in ``. So I got rid of the set +e and
	used something similar to "if `eval false`" instead.



* Fri May 23 02:28:59 2003 +0000 cran

	reflect recent changes and clarify a bit

* Fri May 23 02:22:44 2003 +0000 cran

	Introduce -C option which can be used to restrict command execution
	to a specific number of hosts.



* Fri May 23 02:13:51 2003 +0000 cran

	make assert() actually work (never worked before)

* Thu May 22 10:42:33 2003 +0000 cran

	o No default parameters, <method> and <user> for each host object now mandatory
	o Lists of lists
	o Clarify that nesting of lists is possible without limits
	o Update comments and syntax description accordingly



* Tue May 20 12:41:50 2003 +0000 cran

	Proposal for a general tentakel.conf file format.
	This is just an example .conf file, there is still no code that
	interprets it.



* Mon May 19 17:27:32 2003 +0000 cran

	bugfix release 0.3.1

* Mon May 19 13:44:12 2003 +0000 imaginat

	First draft on fixing that stupid dot error.

* Sat Apr 19 16:16:57 2003 +0000 cran

	o Rename INSTALLMAN->MANDIR and INSTALLBIN->BINDIR to avoid confusion.
	o Tell user that configure is not implemented yet.



* Sat Apr 19 15:25:54 2003 +0000 cran

	First version of a Makefile. install.sh and mkrelease.sh are
	obsolete now.

	Update INSTALL to reflect changes in the installation process.



* Fri Apr 18 11:12:17 2003 +0000 imaginat

	Update list of necessary tools.

* Fri Apr 18 11:07:02 2003 +0000 imaginat

	Remove -f flag for rm command. (When something goes wrong, it should at
	least be reported, not silently ignored) Change the assertion for
	dprint back: It has to be invoked with exactly one argument.



* Thu Apr 17 11:30:27 2003 +0000 cran

	use "rm -f" in *_destroy()

* Thu Apr 17 11:28:30 2003 +0000 cran

	document -d switch

* Thu Apr 17 11:27:01 2003 +0000 cran

	Match manpage SYNOPSIS in usage() output

* Thu Apr 17 11:25:54 2003 +0000 cran

	remove stuff that is implemented

* Thu Apr 17 11:23:12 2003 +0000 cran

	release 0.3

* Thu Apr 17 11:18:51 2003 +0000 cran

	Documentation overhaul
	o remote return value in separator string
	o mention hardcoded /usr/bin/ssh in BUGS



* Thu Apr 17 11:13:33 2003 +0000 cran

	o Temporarily fix possible loop in dprint()/assert()
	o Use "$*" in dprint argument instead of "$@"



* Thu Apr 17 06:52:49 2003 +0000 cran

	set MYVER to 0.3

* Thu Apr 17 06:50:40 2003 +0000 cran

	Don't put my email address in those files

* Thu Apr 17 06:49:41 2003 +0000 cran

	restructure ChangeLog and reflect latest changes

* Thu Apr 17 06:45:57 2003 +0000 cran

	Back out -s option. Setting (format)strings on the commandline
	is unneeded complexity and we don't really support it yet.

	This feature may return once we have a working format string
	expansion facility.



* Wed Apr 16 23:25:48 2003 +0000 imaginat

	Take the ENVIRONMENT section out. The only entry there was about
	DEXECHOST, but that's not in use now, and similar functionality
	will be implemented in a more abstract way.



* Wed Apr 16 23:17:42 2003 +0000 imaginat

	Move the check for given commands from the execute function to the
	setup function.



* Wed Apr 16 22:45:14 2003 +0000 imaginat

	Change the exit code setting to allow usage of set -e again.

* Wed Apr 16 16:03:38 2003 +0000 imaginat

	Reporting of the local exit code works now. Unfortunately, for this to
	work, "set -e" has to be commented out.



* Wed Apr 16 14:14:38 2003 +0000 imaginat

	Moved the wait command to the container call method.

* Wed Apr 16 13:48:31 2003 +0000 imaginat

	Corrected and inserted assertions. Corrected code that sets the local
	exit code.



* Wed Apr 16 12:44:49 2003 +0000 imaginat

	Rename temporary files to prefix tentakel. Separate remote stdout and stderr.

* Wed Apr 16 11:55:20 2003 +0000 cran

	simplify usage() output

* Wed Apr 16 11:54:16 2003 +0000 cran

	Introduce -s parameter that can be used to specify a custom
	separator string.



* Wed Apr 16 08:51:22 2003 +0000 cran

	Forgot a closing quote.

* Wed Apr 16 08:48:12 2003 +0000 cran

	We're beta now.

* Wed Apr 16 08:47:03 2003 +0000 cran

	Remove lies about the need to quote the remote command in a whole.
	This was just a bug that has vanished in the meanwhile.



* Wed Apr 16 08:43:16 2003 +0000 cran

	o Rename flag -c to -l since -c will be used for the global config file.
	o Reflect this change in the documentation as well.
	o Rename FLAG_CONFIG to FLAG_HOSTLIST for the same reason.



* Wed Apr 16 08:30:43 2003 +0000 cran

	rename parse_config() to parse_hostlist() because we need
	this name for the function that will parse the global configfile



* Wed Apr 16 08:10:01 2003 +0000 cran

	rename functions to match their meaning better:
	o callit() becomes distribute_command()
	o execute() becomes execute_command()



* Tue Apr 15 23:48:02 2003 +0000 imaginat

	Add a class that takes over the repetitive calling of methods of the host
	objects. Restructure the callit function to make use of this class.
	Change make_host to use only one parameter by throwing the currently unused
	dexechost out. Change the class definition syntax slightly by omitting the
	semanticly misguiding {} in make_host.



* Tue Apr 15 23:28:11 2003 +0000 imaginat

	Due to the OO rewrite the DEXECHOST feature is not implemented at the
	moment. Note this in the ENVIRONMENT section.



* Mon Apr 14 21:58:05 2003 +0000 imaginat

	The bourne shell doesnt support the unary negation operator !, that negates
	the return code of pipelines. Remove the only appearance.



* Mon Apr 14 19:20:30 2003 +0000 imaginat

	Introduce a first try on object oriented programming to tentakel.
	Rewrite the whole callit function to make use of the new object model
	for hosts.



* Mon Apr 14 13:48:13 2003 +0000 cran

	more

* Mon Apr 14 13:45:22 2003 +0000 cran

	Don't keep the users from being smart themselves.

* Sat Apr 12 00:33:25 2003 +0000 imaginat

	Remove RSHFLAGS (those configuration will be taken over by configuration
	files) and DOWNHOSTS (which is obsolete).



* Fri Apr 11 23:46:38 2003 +0000 imaginat

	Some additional notes. Remove the entry about writing a manpage.

* Fri Apr 11 22:27:38 2003 +0000 imaginat

	Take the information about the now obsolete alive check out.

* Fri Apr 11 22:26:55 2003 +0000 imaginat

	Update according to the changes in the code (take the aliveness check out).

* Fri Apr 11 22:21:21 2003 +0000 imaginat

	Take the test for aliveness of remote hosts out.  As a result of that,
	the now useless flags -o and -a have also been removed. -q is the same
	as -a.



* Thu Apr 10 22:31:18 2003 +0000 cran

	No more nmap. Instead, use ping to determine aliveness of hosts.
	Since some implementations of ping don't support setting an explicit
	timeout value we're bound to the default.

	Comment two asserts that bugged me while I'm here.



* Thu Apr 10 22:27:51 2003 +0000 imaginat

	Use correct quotation marks (mainly useful for postscript output).

* Thu Apr 10 18:18:55 2003 +0000 imaginat

	Introduce the function assert. Use it in some functions.

* Thu Apr 10 16:54:51 2003 +0000 imaginat

	Revision of the callit function, remove some non-bourne dependencies.

* Thu Apr 10 08:46:11 2003 +0000 cran

	more

* Thu Apr 10 08:42:36 2003 +0000 cran

	further explanations for the DEXECHOST variable

* Thu Apr 10 08:27:37 2003 +0000 cran

	proper license and RCS id

* Thu Apr 10 08:06:34 2003 +0000 cran

	document DEXECHOST variable in new section ENVIRONMENT

* Wed Apr 9 20:03:44 2003 +0000 imaginat

	Minor corrections / hacks: Ignorance of nmap's stderr, fix a missing "then",
	include the main program.



* Wed Apr 9 19:50:57 2003 +0000 imaginat

	Introduce the setup function to evaluate the results of the command line
	parsing. Move the dprint function generation to the setup function.
	Introduce the function alive_echo. Moved the setting of the
	CFGFILE-variable from parse_config to setup.



* Wed Apr 9 19:16:17 2003 +0000 imaginat

	Change parse_options to be just a parser, don't execute any code there.
	Removed FLAG_QUIET to conform to documentation to prohibit possible
	side effects. Removed command line option -h and added --version for
	displaying version information.



* Wed Apr 9 18:58:51 2003 +0000 imaginat

	Simplify the execute function

* Wed Apr 9 18:41:08 2003 +0000 imaginat

	Split the huge code block at the end of the file into separate functions.
	Rename Version and Usage to version and usage, resp.



* Wed Apr 9 18:34:25 2003 +0000 imaginat

	Stripped some comments.

* Wed Apr 9 18:25:38 2003 +0000 imaginat

	Introduce a function to output the current version number and remove
	this from the Usage function



* Wed Apr 9 18:22:51 2003 +0000 imaginat

	Substitution of tabulator characters in the output of the Usage function

* Wed Apr 9 14:56:18 2003 +0000 imaginat

	Added quotes in the dprint function.

* Tue Apr 8 22:17:44 2003 +0000 imaginat

	Replacement of "[" by "test" for better compatibility. Cleaner semanticss
	for the tests like -eq instead = for numbers.



* Tue Apr 8 22:05:56 2003 +0000 imaginat

	Added the "Reporting Bugs" section and my name to the author's list.

* Tue Apr 8 21:53:34 2003 +0000 imaginat

	Improved bourne compatibility. Dropped some uses of "$(())"- and
	"${}"-expansion that are not present in all bourne shells.



* Tue Apr 8 13:54:22 2003 +0000 cran

	remove unnecessary comment

* Tue Apr 8 13:45:21 2003 +0000 imaginat

	Changed the indentation to use 8 character wide columns globally.

* Tue Apr 8 13:22:57 2003 +0000 imaginat

	Removed the unnecessary encapsulation of the nmap|grep pipe in the
	alive function.



* Tue Apr 8 13:19:47 2003 +0000 imaginat

	Changed the semantics of the tempfile function. Error is now reported
	through the exit code from the mktemp process itself. The caller doesn't
	have to check if the created file name is "/dev/null" anymore.



* Tue Apr 8 13:16:08 2003 +0000 imaginat

	Changed the function err to exit by itself after showing the error.
	Adapted this behaviour to every places where the err function was
	used. Introduced the "warn" function to output warnings without
	exiting.



* Tue Apr 8 13:01:33 2003 +0000 imaginat

	Got rid of the "checksoft" function. It's still too early for such a functionality.

* Wed Apr 2 23:15:56 2003 +0000 cran

	more

* Wed Apr 2 23:14:09 2003 +0000 cran

	some new, some done, some changed

* Tue Apr 1 10:25:02 2003 +0000 cran

	initialize FLAG_* with numbers, not strings.

* Tue Apr 1 10:07:21 2003 +0000 cran

	forgot one ~ -> $HOME

* Tue Apr 1 10:06:53 2003 +0000 cran

	 o use `` instead of $()
	 o use $HOME instead of ~
	I hope this commit makes tentakel bourne shell compatible again.



* Sun Mar 30 16:51:08 2003 +0000 cran

	missing ,

* Sun Mar 30 16:42:30 2003 +0000 cran

	Remove -s option because it makes absolutely no sense.
	Return values should be handled in a better way.



* Sun Mar 30 16:36:58 2003 +0000 cran

	sync -h output with manpage

* Sun Mar 30 15:36:46 2003 +0000 cran

	installation helper

* Sun Mar 30 15:10:27 2003 +0000 cran

	User numbers, not strings, to express flags.
	Change [ parameters accordingly. (= -> -eq, != -> -ne)



* Sun Mar 30 13:27:16 2003 +0000 cran

	tentacle -> tentakel name change

* Sun Mar 30 13:24:00 2003 +0000 cran

	send commit info to tentakel-commits@

* Sun Mar 30 13:23:11 2003 +0000 cran

	put manpage into tarball

* Sat Mar 29 21:49:08 2003 +0000 cran

	o manpage
	o rcs id



* Sat Mar 29 21:39:48 2003 +0000 cran

	host list sorting functions

* Sat Mar 29 21:37:24 2003 +0000 cran

	enable syncmail for cran@

* Sat Mar 29 21:20:20 2003 +0000 cran

	No logfile anymore. Instead, use dprint for debugging output.
	Debug output is enabled using the -d switch.



* Wed Mar 26 17:39:18 2003 +0000 cran

	o manpage mostly done
	o new todo: stdin/stdout handling



* Wed Mar 26 17:36:55 2003 +0000 cran

	some clarifications

* Wed Mar 26 17:29:40 2003 +0000 cran

	unnecessary

* Wed Mar 26 14:08:26 2003 +0000 imaginat

	Written the initial manpage.

* Wed Mar 26 14:05:53 2003 +0000 cran

	typo in example

* Wed Mar 26 14:04:38 2003 +0000 cran

	Some usage examples

* Wed Mar 26 13:56:13 2003 +0000 cran

	more

* Wed Mar 26 13:46:51 2003 +0000 cran

	add error handling function and use it where appropriate

* Wed Mar 26 13:39:45 2003 +0000 cran

	document a bit

* Wed Mar 26 13:11:22 2003 +0000 imaginat

	Corrected one of the spelling errors.

* Wed Mar 26 12:23:48 2003 +0000 cran

	append yesterdays and todays changes

* Wed Mar 26 12:23:10 2003 +0000 cran

	more

* Wed Mar 26 12:19:05 2003 +0000 cran

	o clarify install process
	o provide hostlist example
	o raise version number to 0.3-beta



* Wed Mar 26 12:09:23 2003 +0000 cran

	add (empty) ChangeLog

* Wed Mar 26 12:04:39 2003 +0000 cran

	MUCH more information

* Wed Mar 26 12:04:21 2003 +0000 cran

	manpage

* Wed Mar 26 11:51:30 2003 +0000 cran

	put TODO in release tarballs as well

* Tue Mar 25 12:09:39 2003 +0000 cran

	sprinkle some rcs ids

* Tue Mar 25 12:08:54 2003 +0000 cran

	some todos

* Tue Mar 25 11:56:08 2003 +0000 cran

	german -> english

* Tue Mar 25 10:25:10 2003 +0000 cran

	make release script

* Tue Mar 25 09:36:28 2003 +0000 cran

	Initial revision

* Thu Mar 20 18:16:18 2003 +0000 root

	initial checkin

* Thu Mar 20 18:16:18 2003 +0000 root

	initial checkin

* Thu Mar 20 18:16:18 2003 +0000 (no author)

	New repository initialized by cvs2svn.
