2006-10-24  Maurits van Rees  <maurits@localhost.localdomain>

	* src/instancemanager/actions.py (QuickreinstallAction.run): The
	config option main_products is now also 'dict-aware': if you mark
	a product here with 'develop', then it will not be a main_product
	if the machine is not a development machine.

	* src/instancemanager/actionutils.py: Added functions
	isPureDevelopmentItem and adaptListForDevelopment, to make the
	above possible.
	
2006-10-24  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/sources.py: Added a 'url' option for sources
	(like 'drop') that enables automatic downloading of an archive or
	automatic checkout of an svn source.

2006-10-24  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/sources.py: Added possibility to specify an
	'internalBundles' list for an archive bundle (it works the same
	way as 'drop' and so). This is handy for extracting the cachefu
	products from a 2.5 plone tgz: that includes cachefu's products
	inside a subdirectory...

2006-10-24  Russ Ferriday  <russf@topia.com>
   
        * src/instancemanager/mainprogram.py: prevented config
        files starting with "stub." from being considered.

2006-10-24  Russ Ferriday  <russf@topia.com>

        * src/instancemanager/config.py: added SECRET_PREFIX const
        
        * src/instancemanager/configuration.py: enabled additional 
        local config files that start with "local-" and can be excluded
        with svn propset svn:ignore.
        
        * src/instancemanager/mainprogram.py: made getProjects()
        ignore SECRET_PREFIX files, and refactored searching of the 
        config directory.
 
2006-10-20  Russ Ferriday <russf@topia.com>

        * src/instancemanager/sources.py: added an optional droplist item
	to allow dropping Products from bundles.

2006-10-11  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Added more aggressive
	FakeRequest and FakeResponse removing (they are by necessity
	stored in the zope database; a stray FakeResponse hosed my
	normal zope management views like /manage).

2006-10-10  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/sources.py: Adding check for svn .OLD files
	in symlink bundles.  We're issuing a warning if we encounter them
	and we won't link to them.

2006-10-09  Maurits van Rees  <maurits@localhost.localdomain>

	* src/instancemanager/defaults.py, src/instancemanager/sources.py:
	Added config option development_machine.  When False (the
	default), the products marked as 'develop' will not be installed.
	When True, all products will be installed.

2006-09-22  Reinout van Rees  <reinout@isengrim.local>

	* src/instancemanager/config.py: Added a --rewriterule that
	outputs some hints on how to configure apache+squid.

2006-09-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: Add option to specify a source
	as a dict instead of a string.  This enables you to specify a
	different name for a symlink, which helps when working on multiple
	versions of the same product.

	* src/instancemanager/skeleton/userdefaults.py: Ran the
	copy_defaults_to_userdefaults.py script, which we should do more
	often.  I manually removed the multi-actions there, as those are
	not handled correctly by the copy script.

	* src/instancemanager/quickreinstaller.py: Added
	getPresentationSkin() to FakeRequest so
	/opt/zope/zope2.8.8/lib/python/zope/component/presentation.py
	doesn't give an AttributeError in queryView.

2006-09-04  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: Correctly determine the Zope
	version (28, 29) when running tests.  Also add instance dir to the
	--libdir option for 2.7/2.8 tests.

	* INSTALL.txt, src/instancemanager/defaults.py: Minor documentary
	changes.
	
2006-09-04  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/defaults.py: bugfix, the "soft" multi-action
	was missing the update of the Products/ directory.

2006-09-04  Reinout van Rees  <reinout@vanrees.org>

	* INSTALL.txt: Updated for the change from 'create' to '--create'.

2006-08-16  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py (FakeRequest.__init__):
	Add cookies to the FakeRequest as I need that to properly install
	a product for a client.  Cookies! Jummy!

2006-08-05  Maurits van Rees  <maurits@mauritsvanrees.xs4all.nl>

	* src/instancemanager/changeownership.py,
	src/instancemanager/actions.py, src/instancemanager/config.py:
	Added option --changeown to change the ownership of all content
	owned by 'all_powerful_Oz' (see below) to the defined admin user.
	Not completely functioning yet and it needs a small change in
	PloneTool.py, though that may be a good change anyway.  If you
	give it to a different user, that change is not necessary.

	* src/instancemanager/quickreinstaller.py,
	src/instancemanager/actions.py: Created our own version of
	OmnipotentUser, as until now we would create a new plone site that
	was owned by 'all_powerful_Oz'.  This at least gave an error when
	going to the sharing tab on the front page.  Plus it's a rather
	strange name to have as the owner of your site. :) I added
	https://dev.plone.org/plone/ticket/5727 for this, but found that
	the real cause was instancemanager, thanks to alecm and
	davcontent.
	
2006-08-01  Russ Ferriday <russf@topia.com>

    * src/instancemanager/mainprogram.py: Added --manifest option
    to print the results of a --products installation, including
    versions, source directories or bundles, and conflicts. Use 
    --manifest at the same time as --products. Maurits points out that
    the manifest listing is wide. Some folding is already in place,
    and IMHO one line per product is clearer than multiline entries,
    but I'm sure there's potential for improvement.
    
    * src/instancemanager/actions.py: added the _printManifest 
    functionality under the --products action.

    * src/instancemanager/sources.py: improved the warning when removing 
    a target. Added build of a manifest as products are added. Restructured
    so that addProduct on the superclass is called, which delegates to 
    implementation methods on the subclasses. (This made passing manifest
    slightly easier, and makes enforcing common behaviour simpler)

    * README.txt: noted that the doc was out of date.
    
2006-07-20  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/actions.py: Added --test action to easily
	test products.

2006-07-19  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/pack.py: Added --pack option.

2006-07-18  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/utils.py: Added svn export support.

	* setup.cfg: Released 0.3.

2006-07-18  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py: Fixed missing comma and wrong
	order of actions in fresh and soft multiaction.

2006-07-17  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py,
	src/instancemanager/actionutils.py: Refactor use of
	InvokedInVolatileDir Exception: move it to actionutils and also
	use it in class CreateInstanceAction.

2006-07-17  Russ Ferriday <russf@topia.com>

	* src/instancemanager/actions.py: renamed avoidUsageWithinProductsDir()
	to  trapUsageWithinVolatileDir and raise exception. More generic approach 
	can be used with similar tests in ZEO handing. Ref. email with Mauritz.

2006-07-17  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: Added forced full backup,
	snapshot backup, snapshot restore and sync options to a new
	--repozo action. 

	* src/instancemanager/actionutils.py: Refactored the backup and
	restore actions in preparation for a more diverse repozo action.

	* src/instancemanager/actions.py: Large-scale restructuring of the
	way instancemanager handles options. I'm using python's optparse
	module now. See "instancemanager -h" for a usage message.

	Big change also: multi-actions. You can provide per-project
	collections of actions grouped together under a single name. By
	default, fresh and soft are provided.

2006-07-17  Russ Ferriday <russf@topia.com>
	* src/instancemanager/actions.py: added avoidUsageWithinProductsDir()
	to prevent occurrence of current dir being deleted and raising
	unexplained IOError. Currently warns in the case the post execution
	directory will be invalid.
	
	* src/instancemanager/sources.py: trivial logging and comment change
	
2006-07-12  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py (CreateInstanceAction.run): Fixed
	old TODO: Also check for current working dir being *below* the
	instance dir before creating a new instance.

2006-07-12  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/actions.py: Added support for a zeo
	server+client setup. If you add a use_zeo=True option to your
	config, instancemanager will create a zeo server and a zeo client
	for you. Copying an existing database will copy it to the zeo
	server's var/ directory, then. There's an extra startzeo/stopzeo
	command, also.

2006-07-10  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Added FakeResponse as
	this was needed by a product. That product still gives other
	errors, but those should be unrelated.

2006-07-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py,
	src/instancemanager/actions.py, src/instancemanager/defaults.py :
	Added config option 'generic_setup_profiles' to apply site
	customizations with GenericSetup.  Please test.
	
2006-07-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: First check if target is symlink
	before removing it.  Previous implementation would remove the
	contents of a symlink to a directory and then fail.

2006-07-06  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: check for existence of
	bin/zopectl.

	* src/instancemanager/mainprogram.py: add performActionOnProject
	function to remove some code duplication.
	
2006-07-02  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py: Changed double archive_sources and
	archive_basedir_template to their bundle variants.	
	
2006-06-27  Russ Ferriday <russf@topia.com>

	* replaced "tgz" with "archive" in config attribute names, while
	maintaining compatibility with attribute names in existing config
	files.  Allowed non-gzipped archives, and refactored archive
	expansion into one utility function.

2006-06-26  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/configuration.py: Patch by Russ Ferriday to
	prevent copying of .pyc files to the .instancemanager config dir.

2006-06-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: warn before removing a product
	when switching to another version (e.g. symlink instead of tgz).
	Also use removeTargetIfExists() when adding a tgz or symlink
	source.

	* src/instancemanager/configuration.py: sort the sources so the
	order of product installation is clear: bundles first, then
	singles.

2006-06-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion, src/instancemanager/actions.py: Added fg action
	to put the zope instance in the foreground.  You first need to
	stop it manually (e.g. with the stop action).

2006-06-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/mainprogram.py: loglevels in lowercase are
	allowed now.

2006-06-20  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/mainprogram.py, src/sources.py: Added command line option to
	set the log level for the log that is printed to standard out.
	With help from Joris Slob.

2006-06-20  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion: pretty functional now.

2006-06-19  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/mainprogram.py: Added project alias ALL that
	performs the action (like 'stop') for all projects.

2006-06-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/quickreinstaller.py: Use request for making a new plone
	site, which makes this work again.  Also check if ATContentTypes
	needs to be updated.

	* src/sources.py: If a tgz source ends with 'zip' unzip it instead
	of using tar.

2006-06-06  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* src/mainprogram.py: Corrected error on first startup: the config
	dir is now being created.

	* setup.py: Large-scale moving: putting instancemanager as a
	directory inside src/ instead of having the files directly in
	src. Also switched to using setuptools.

	* setup.py: instancemanager is now easy-installable using
	"easy_install instancemanager"!

2006-06-04  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Added restore action, which restores the last
	available backup from the backup repository directory. This action
	will also remove the temporary files: Data.fs.tmp, Data.fs.index
	and Data.fs.lock.

	* Refactored backup and restore action. For each project a
	subdirectory is created inside the BackupsBaseDir.

2006-06-02  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Refactored the backup action, it now checks if
	the target folder exists and will created it if missing. Also set
        the PYTHONPATH using os.environ. 

	* refactored ParseArguments. you can now use either:
	instancemanager <action> <project>
	or
	instancemanager <project> <action>
	Also invalid projects or actions will be detected and will throw
	a warning.

2006-06-01  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Added backupDatabase action which uses repozo.py
	to make an online backup of the instance Data.fs

        * src/configuration.py: Added a backupBaseDir method which returns
	the backup_basedir_template variable from config. Also added
        databasePath method which returns the full path to the instance
        Data.fs

        * src/defaults.py: Added the backup_basedir_template variable for
	storing backups

2006-06-01  Reinout van Rees  <reinout@vanrees.org>

	* src/actions.py: Added loads more documentation.

	* src/quickreinstaller.py: Removed the fake request and the not
	quite elegant passing-along of REQUEST. Copied some boilerplate
	code Daniel Nouri showed me yesterday (makerequest). Much
	neater. Less code! :-)

	* src/quickreinstaller.py: Re-added the fake request later on
	because cmflinkchecker ruins later reinstalls otherwise. But I
	re-added it just inside the actual product reinstall part, so the
	code stays cleaner than it was before.

2006-05-01  Maurits van Rees  <maurits@vanrees.org>

	* src/quickreinstaller.py: Create a plone site with the name of
	the config option plone_site_name if it does not exist yet.  Needs
	more eyeballs though.

	* src/action.py, src/sources.py: addProduct() now checks if the
	source for that product exists and for now just gives a warning if
	it doesn't.
	
2006-05-29  Reinout van Rees  <reinout@vanrees.org>

	* src/quickreinstaller.py: Moved the fake request so that the
	reinstall method also uses it. Needed for (at least)
	textindexng3.
	
2006-05-29  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion: Beginning of command completion in bash.
	
2006-05-25  Reinout van Rees  <reinout@vanrees.org>

	* setup.py: Fixed setup to support python 2.3.

	* setup.py: Released as 0.2.

2006-05-24  Maurits van Rees  <m.van.rees@zestsoftware.nl>
	
	* src/actions.py: Added a printconfig action that prints the
	sorted configuration, with variables expanded.

	* src/configuration.py: Handle exception in expandTemplate when
	the template is not a string.
	
2006-05-24  Reinout van Rees  <reinout@vanrees.org>

	* src/actions.py: Calling our quickreinstall script instead of
	depending on a custom made script inside the Data.fs. Updated the
	'soft' and 'fresh' targets for this.

	* src/quickreinstaller.py: Added script that gets fed to "zopectl
	run" to quickreinstall the products.

	* src/utils.py: Logfile now gets saved to the ~/.instancemanager
	directory instead of being littered all over the place into every
	directory from which you run the instancemanager.

2006-05-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>
	
	* In the Create action instancemanager now exits with an error
	when the current dir is the instance dir, as mkzopeinstance would
	fail in that case.
	
2006-05-22  Reinout van Rees  <reinout@vanrees.org>

	* Added support for pre-made zope.conf files (for when
	instancemanager's handling just doesn't cut it).

2006-05-18  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/actions.py: Added info-logging of zope port when starting
	up (handy when juggling some 20 instances and so). :-)

	* src/sources.py: Bundle sources now overwrite files or
	directories if they already exist. Needed for README.txt files or
	so that are included in bundles.

2006-05-15  Reinout van Rees  <reinout@vanrees.org>

	* MANIFEST.in: Added the src/skeleton directory to the generated
	.tgz and uploaded a new 0.1 .tgz to plone.org.

2006-05-11  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* 0.1 release!
	
	* actions.py: On creation, the zope config is changed for port
	number, verbose security and debug mode.
	
	* setup.py: Added distutils installation (including extra
	instruction for moving the executable to /usr/local/bin in
	INSTALL.txt).

	* copy_defaults_to_userdefaults.py: Added utility script to
	prepare an up-to-date userdefaults.py for the skeleton directory.

	* defaults.py: Added full documentation for all options.

	* actions.py: Made quickreinstall call optional.

2006-05-10  Reinout van Rees  <reinout@vanrees.org>

	* sources.py: Added symlinkbundle source. (Handy for svn bundle
	checkouts of plone2.5, for instance).

2006-05-09  Reinout van Rees  <reinout@vanrees.org>

	* all: Started the project. Base sources, instance creation,
	documentation, reinstalling, product install, etc. Works for one
	of my projects already.
