2007-09-12  Thomas Desvenain <thomas.desvenain@ingeniweb.com>
   
    * added 'instancebundle' option to declare that bundle
    is at instance root level (as, for example, plone 3 bundle).
    For now, works only with archivebundle sources

    * uses popen to launch zeoclient/zeoserver make command
	and if it failed, exits the process with an error message

2007-08-30  Maurits van Rees  <maurits@vanrees.org>

	* src/instancemanager/actionutils.py (createInstance): Put quotes
	around the user and password when creating/upgrading the instance.
	Fixes http://plone.org/products/instance-manager/issues/42

2007-08-13  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py (setUpWorkingenv): make sure
	setuptools is added to lib/python again during a --products when
	set_workingenv is True. 
	Fixes http://plone.org/products/instance-manager/issues/41

2007-08-01  Mark van Lent  <m.vanlent@zestsoftware.nl>

	* src/instancemanager/sources.py (SymlinkSource._updateSource):
	The _updateSources method now also takes the 'version' option from
	the configuration into account.

2007-08-01  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py (multi_actions): added
	multi-action 'update'.

2007-07-24  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: added
	desired_plone_version and desired_atct_version to the config,
	migration only takes place if the relevant option is present and
	if the current version doesn't match.

2007-07-19  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/sources.py (ConfigSource._addProduct): First
    update the config sources, then *reload* the config, as the products
    list may have changed, then update the product sources.

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

    * src/instancemanager/configuration.py (Configuration.sources): also
    try to update the configSource when doing --updatesources

2007-06-27  Ian F. Hood <pythonhack@gmail.com>

    * src/instancemanager/utils.py
    Added windows filepath quotes for svn commands

    * src/instancemanager/sources.py
    Added windows filepath quotes for svn commands
    Added warnings re: windows filepath quotes for cvs commands

    * src/instancemanager/actions.py
    Added warnings re: windows filepath quotes for iPython commands

2007-06-26  Ian F. Hood <pythonhack@gmail.com>

    * src/instancemanager/actionutils.py
    Added support for whitespace in Windows filepaths (os.commands)
    windowsService() - path to zope instance is now quoted as zServerPath
    createInstance() - mkInstance is quoted (path to mkzopeinstance.py)
        - instanceDir is quoted as instancePath (path to new instance)
    runZopectl() - minor log message change


2007-06-26  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/sources.py (ArchivebundleSource.moveDirs):
    Plone 3.0 tar files contain Products and lib/python as
    internalBundles.  Handle that correctly.

    * src/instancemanager/mainprogram.py (parseArguments): Try to
    construct project name out of bootstrap file.

    * src/instancemanager/actions.py (DeleteAction.run): Stop zope
    (and zeo) instances before deleting them in the --delete action.

2007-06-26  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/actions.py: Added --delete target that
    deletes the im config and the instance dirs. Could be handy when
    you messed it up and want to use a fresh --bootstrap.

2007-06-26  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/quickreinstaller.py
    (Reinstaller.handleMigration): Do not try to migrate portal_atct
    on Plone 3, as this is not possible/needed anymore.

2007-06-26  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/config.py: Cleaned up the http-server,
    ftp-server, etc. handling in the config file replacement code. It
    is now more flexible and waaaay easier to add the upcoming
    webdav-server statement :-)

    * src/instancemanager/config.py: Added webdav_port and icp_port,
    also fixed up the ftp_port support.

2007-06-25  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/actionutils.py: Fixed bug: the list of
    backups (sorted on date) needs to be reversed first...

    * src/instancemanager/configuration.py: Fixed bug: the
    CONFIGCHANGES from config.py were applied always. This would set,
    for instance, debugmode=on on production machines. Fixed this so
    that it is only applied when development_machine==True. Also
    zapped ZEOCONFIGCHANGES as that's now handled in a more sane way
    (it used to be something that was changed always and then removed
    again if it wasn't enabled). configuration.py's
    _zeoConfigChanges() now handles it through python code.

    * src/instancemanager/actionutils.py: Added new
    'listen_ip_address' option that allows you to set the ip address
    that zope listens to.

2007-06-22  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/sources.py: Added support for figuring out
    the optimal source name if you're passing a url (svn /trunk
    recognision and so). This cuts down on the amount of times you
    need to pass a dictionary instead of just a simple string.

    Also renamed the 'imconfig' to the more generic 'config', as it is
    also meant for apache config, squid config, cronjobs, etc.

2007-06-21  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

    * src/instancemanager/actions.py: Made sure bootstrap only
    download the imconfig_source

    * src/instancemanager/sources.py: Added imconfig_source which only
    downloads the source, but doesn't symlink it.

2007-06-19  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/actions.py: Added --bootstrap action that
    can set up your development environment with one call.

2007-06-15  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (PackAction.run): Use urllib2
    instead of wget to pack the database, as we need to use POST and
    that is easier with urllib2.

2007-06-14  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

  * src/instancemanager/sources.py: Added an updateSources action and on the
    source added a method to update svn or cvs working-copies.

2007-06-14  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/actions.py: Added slightly modified patches
    from Thomas Desvenain. You can now add a sub_path to archive
    sources, so that you only extract that subdirectory of the
    archive. Handy for plucking out something that ought to end up in
    lib/python. Also, pylib=True is now also usable for archives. Also
    the cvs support has been updated, it now uses the normal 'url'
    field (mostly).

2007-04-25  Ian F. Hood <pythonhack@gmail.com>

    * src/instancemanager/utils.py:
    applied patch by Shimizukawa Takayuki [closes #31]
    now uses python modules to extract zip/tar files (instead of 'os')

2007-04-02  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/actions.py: Added printing of the
    paste-this-in-the-shell instruction to start workingenv. Also
    added --ipython option to run the great ipython shell.

2007-03-27  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/sources.py (BaseSource.__init__):
    Add self.cvsroot = None to sources that are just mentioned with a
    string.  Avoids an AttributeError.

2007-03-09 Thomas Desvenain  <thomas.desvenain@ingeniweb.com>

  * symlink sources manages cvs. doc added in userdefaults.py


2007-03-06  Russ Ferriday  <russf@topia.com>

  * removed expandTemplate() and performed all* expansion during
  Configuration.__init__(). This allows the simple definition of local
  templates and variables in terms of the other configData elements.
  http://plone.org/products/instance-manager/issues/24.
      * : single exception is clientname.

  * made configuration a doctest module.

2007-02-26  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (AddProductsAction.run):
    lib/python does not exist in older Zopes, so check before removing.

2007-02-22  Maurits van Rees  <maurits@vanrees.org>

    * src/instancemanager/tests.py (modules): Began first automated
    tests.

2007-02-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (AddProductsAction.run):
    Correctly rebuild the Products AND lib/python dir of multiple zeo
    clients again.

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

    * src/instancemanager/actions.py: Make sure lib/python is removed and
    created with a --products action.

2007-02-15  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/sources.py: Added the possibility to add
    'deleteExisting': False to a source's dictionary. This prevents,
    for instance, a tgz bundle from deleting products from an earlier
    symlink source. At times, this is handier than an elaborate
    droplist.

2007-02-14  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (TestAction.testCommand):
    '--test MAIN' now tests the products in your main_products list.

2007-02-13  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/configuration.py: removed instanceParams() as
    that was not the right way to solve it.  Moved the zope3 part of that
    function to actionutils.py again

    * src/instancemanager/actionutils.py: make sure multiple zeo clients
    can be created again and their zope.conf updated.

2007-02-13  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * DEVELOPERS.txt: Added file with some info for developers.  In this
    case, explain the copy_defaults_to_userdefaults.py script.

2007-02-12  Ian F. Hood <pythonhack@gmail.com>

    * src/instancemanager/defaults.py:  added missing win32 comments
    and verified z3 comments are ok.

    * src/instancemanager/skeleton/userdefaults.py: ran copy_defaults...
    and removed the uncommentd multiactions

2007-02-09  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/sources.py: Adding logging for when there's
    no 'source' key (read: I mis-spelled it as 'src').

2007-02-05  Maurits van Rees  <maurits@vanrees.org>

    * src/instancemanager/sources.py (BaseSource.__init__): only split
    a url when that url is not None.

2007-02-01  Maurits van Rees  <maurits@vanrees.org>

    * src/instancemanager/actionutils.py (logInfoAboutCtl): Return a
    better string for the zopectl info.

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

    * Merged Ians branch work to trunk. We now have basic windows
    support And on linux Zope 3 support. ( Not tested on windows yet).

2007-01-06  Ian F. Hood <pythonhack@gmail.com>

    * src/instancemanager/configuration.py: added
    configData['is_windows']

    * src/instancemanager/actionutils.py: added windowsService() to
    control the zope instance via zopeservice.py (instead of zopectl)

    * src/instancemanager/actionutils.py: in createInstance() if
    running on windows install zope as a windowsService() in
    'automatic startup' mode (and/or remove if instance is being
    recreated)

    * src/instancemanager/actionutils.py: if is_windows, all calls to
    zopectl are intercepted and redirected to windowsService(),
    without otherwise touching the existing code.

    * src/instancemanager/mainprogram.py: Eliminated redundant builds
    of the configuration information by building the configData in
    main() and passing the configData object instead of
    'project' (name).

    * src/instancemanager/sources.py: Changed symlink to 'copy' when
    rebuilding /Products on Windows OS (symlinks not supported)

    * src/instancemanager/actionutils.py: refactored parsing of
    zope.conf to better find and edit <xxx-server> directives while
    maintaining compatibility with existing version of im (no changes
    to config.py).  Note: this is a partial improvement and could be
    much better, but the full version would require changes to
    configurations (see #21)

    * src/instancemanager/actionutils.py: use .conf parsing to
    properly change the port number for the http-server on windows
    versions.

    * src/instancemanager/actionutils.py: use .conf parsing to find
    and disable the extra http-server that windows installers add on
    port 80

    * src/instancemanager/actionutils.py: use .conf parsing to find
    and repair the windows installer's $PRODUCTS
    bug (mkzopeinstance.py)

    * src/instancemanager/actionutils.py: if is_windows skip the
    'debug-mode' in CONFIGCHANGES to avoid the duplicate entry bug

    * documentation and various minor tweaks to comments/logging

    ToDo: this provides a minimal level of support for Enfold's win32
    installer release of Plone2.5.1-Zope2.9.5, does not yet support
    zeo.

2007-01-31  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/quickreinstaller.py: Improved the plone and
    atct upgrade detection.

2007-01-30 Jean-Paul Ladage <j.ladage@zestsoftware.nl>

    * src/instancemanager/sources.py: Made 'source' attribute optional
    When no source is given the sourceName is extracted from the URL.
    Currently this only works for archive sources. When omitting the
    source of a symlink it will checkout the source in the wrong foler
    e.g. trunk or 3.0 in case of a branch name

2007-01-28 Jean-Paul Ladage <j.ladage@zestsoftware.nl>

    * src/instancemanager/sources.py: Added a pylib attribute to the
    BaseSource, and used that to check wether the target should be
    Products or lib/python. Works for both singles and bundles.

2007-01-24  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/quickreinstaller.py (OmnipotentUser): Make
    sure our OmnipotentUser has all permissions and all roles.

2007-01-24  Reinout van Rees  <reinout@zestsoftware.nl>

    * src/instancemanager/quickreinstaller.py: Switched off all our
    own FakeRequest() stuff and moved to use Zope's
    Testing/makerequest.py instead. There was some code that enabled
    that, but we didn't use it yet. This gets rid of some reinstall
    problems.

2007-01-23  Reinout van Rees  <reinout@vanrees.org>

    * src/instancemanager/quickreinstaller.py: Made portal migration
    work for SVN versions (they don't match the exact version strings,
    which borks portal_migration).

2007-01-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (PackAction.run): When zeo is not
    used, the current pack script fails as it cannot connect.  So
    simply use wget then.  That could also be used for the zeo server.
    Or we could call <zopesource>/bin/zeopack.py

2007-01-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/sources.py (ArchiveSource._attemptDownload):
    If the download url ends with a slash, append the name of the
    archive source and download that.  This avoids errors where the
    user (read: me) changes the name and forgets to change the url as
    well.

2007-01-16  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actions.py (AddProductsAction.run): In case
    of multiple zeo clients, simply copy the Products dir from the
    first client.  This at least gains us time when the Products dir
    is built with an svn export.

2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actionutils.py (runZopectl): a zopectl test
    is only useful for one zeo client, so only run that once, on the
    first client.  Hm, same for 'run'.

2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actionutils.py (handleZopeConf):
    zopeconf_template now uses the on-the-fly generated 'clientname'
    by default instead of 'project'.  Without zeo these have the same
    value.  With multiple zeo clients this gives the option to have a
    premade zope.conf file per client.

2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actionutils.py (handleZopeConf): Added
    config option use_zeo_client_caches (default False).  When True
    this adds a client name in the zeo section of zope.conf for
    clients.  This results in persistent caching.

    * src/instancemanager/actionutils.py (runZeoctl): When the zeo
    command is 'status' we do not wait ten seconds and if there is a
    zeo monitor we query it for info.

2007-01-10  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actionutils.py (createInstance): Add config
    option to specify a zeo monitor-port.

2007-01-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/compat.py (sorted): Added compatibility
    file, as sorted() was added in python 2.4 and throws a NameError
    in python 2.3 and earlier.  Code taken from Trac, thanks.

2007-01-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * For multiple zeo clients, we now get sane port numbers in the
    config files.  You get a client at e.g. 8000, server at 8001, and
    then more clients from 8002 upwards.

2007-01-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * Start of support for multiple zeo clients.  Creating instances
    and adding products seems okay.  Currently they all use the same
    port though, so I will look at that tomorrow.  /Should/ be usable
    with the default number_of_zeo_clients = 1.

2007-01-08  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/actionutils.py: Added cleanup to the backup
    action, by setting the number_of_backups variable (default is
    2). All backups older than the full backup that pointed out by
    number_of_backups will be deleted. If number_of_backups is set to
    0, no backups will be deleted.

    * src/instancemanager/defaults.py: Added number_of_backups
    variable

    * src/intancemanager/configuration.py: Added numberOfBackups
    method to the configuration class.

2007-01-02  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/sources.py (BaseSource.addProduct): First
    check if product can be safely installed, then try to add it,
    otherwise you can get unneeded warnings about non-available
    products that are not getting installed anyway.

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

    * Added two example strings for the GenericSetup config option.

2006-12-05  Maurits van Rees  <m.van.rees@zestsoftware.nl>

    * src/instancemanager/actionutils.py: Revert last change, as
    backup_basedir_template takes care of this nicely already. :)

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

    * src/instancemanager/configuration.py: Added absolutePath
    argument, so sitedefaults.py doesn't get sitedefaults.py.py.

    * src/instancemanager/actionutils.py: When using multiple projects
    it makes more sense to backup each project into a subfolder of
    backup_basedir_template. I updated the restore method likewise.

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

    * setup.py: Releasing 1.0rc.

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

    * src/instancemanager/configuration.py: Added support for a
    site-wide defaults file in
    /etc/instancemanager/sitedefaults.py. Also quieted down the
    messages about the "secret" files possibility. Removed abuse of
    exception handling for returning log messages. And PEP8-ified some
    of the code. (var=value without spaces around the '=', the
    horror!) :-)

2006-11-21  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/actions.py: refactored the upgradezope
    action, it now also supports zeo enabled projects.

    * src/instancemanager/actionutils.py: Added a createInstance
    method that is reused for both the createInstance and upgradeZope
    action.

2006-11-13  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/quickreinstaller.py: In case Plone-2.0.5
    with ATContentTypes installed needs to be upgraded, ATCT needs to
    be reinstalled first.

2006-11-10  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/actions.py: Upgrade Zope now also updates
    the binaries by reomving them first and then run mkzopeinstance.py
    again.

2006-11-09  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/actions.py: Moved HandleZopeConf to
    actionutils and added UpdateZopeConfAction (--upgradezope) which
    allows you to upgrade your instance to a new zope version with one
    command after updating your project.py

    * src/instancemanager/actionutils.py: Added HandleZopeConf method
    from actions, so we can reuse it in the --upgradezope action.

2006-11-08  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/actions.py: Added UninstallAction which
    allows you to uninstall products from your instance.

    * src/instancemanager/uninstaller.py: Added script for
    uninstalling products.

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

    * src/instancemanager/defaults.py: Changed ftp_port to None, so it
    gets commented out by default; the previous setting of 8021 was
    giving problems while parsing the zope.conf file.  Also made
    copy_defaults_to_userdefaults.py give a clear warning and used
    that to generate a new skeleton/userdefaults.py file.

2006-11-07  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

    * src/instancemanager/config.py: Added ftp_port to the list of
    configurable items in CONFIGCHANGES.

    * src/instancemanager/defaults.py: Added default config for
    ftp_port to 8021.

    * src/instancemanager/actions.py: Added logic for commenting out
    address in case a port number is set to None.

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

    * src/instancemanager/quickreinstaller.py (FakeRequest.__init__):
    Added self.maybe_webdav_client = False

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

    * src/instancemanager/quickreinstaller.py: Added zope 2.7 backward
    compatibility ("import transaction" gave an import error). Hey,
    I'm doing software archeology at the moment: resurrecting an old
    2.7 application :-)

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

    * src/instancemanager/sources.py: Made droplist Warning more
    informative.

    * src/instancemanager/actions.py: Completed the task of notifying
    copy *before* the copy, not afterwards.

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

    * src/instancemanager/actions.py: reordered the log INFO line to
    BEFORE the copy over. So that, if it's taking a while, you KNOW
    it's because of the copy.

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

    * 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  <m.van.rees@zestsoftware.nl>

    * 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.
