=====================
iw.recipe.fss package
=====================

.. contents::

What is iw.recipe.fss ?
=======================

This recipe configure FSS Storage.


How to use iw.recipe.fss ?
==========================

The recipe is called by buildout, let's create an instance of it, with
a buildout simulated context::

    >>> import os
    >>> data_dir = os.path.join(test_dir, 'data')
    >>> bin_dir = os.path.join(data_dir, 'bin')
    >>> var_dir = os.path.join(data_dir, 'var2')
    >>> conf_dir = os.path.join(data_dir, 'etc')
    >>> buildout = {'instance': {'location': data_dir},
    ...		    'buildout': {'bin-directory': bin_dir}}
    >>> name = 'fss'
    >>> options = {'conf': os.path.join(conf_dir,
    ...			                'plone-filesystemstorage.conf'),
    ...		   'storages': """
    ...			storage1 /site/storage1
    ...			storage2 /site/storage2 flat
    ...			storage3 /site/storage3 flat %s/storage %s/backup
    ...			""" % (var_dir, var_dir)}

Creating the recipe::

    >>> from iw.recipe.fss import Recipe
    >>> recipe = Recipe(buildout, name, options)

Running it::

    >>> paths = list(recipe.install())

Checking files created::

    >>> paths.sort()
    >>> paths
    ['...data/etc/plone-filesystemstorage.conf',
     '...data/var/fss_backup_storage1',
     '...data/var/fss_backup_storage2',
     '...data/var/fss_storage_storage1',
     '...data/var/fss_storage_storage2',
     '...data/var2/backup',
     '...data/var2/storage']

Checking the conf file::

    >>> conf = open(os.path.join(conf_dir,
    ...			         'plone-filesystemstorage.conf'))
    >>> print conf.read()
    # FSS conf file generated by iw.recipe.fss
    <BLANKLINE>
    # main storage storage1 for /site/storage1
    storage-path /.../data/var/fss_storage_storage1
    backup-path /.../data/var/fss_backup_storage1
    storage-strategy directory
    <BLANKLINE>
    # storage storage2
    <site /site/storage2>
     storage-path /.../data/var/fss_storage_storage2
     backup-path /.../data/var/fss_backup_storage2
     storage-strategy flat
    </site>
    <BLANKLINE>
    # storage storage3
    <site /site/storage3>
     storage-path /.../data/var2/storage
     backup-path /.../data/var2/backup
     storage-strategy flat
    </site>
    <BLANKLINE>
    <BLANKLINE>

Cleaning up the files::

    >>> for path in paths:
    ...	    try:
    ...	        os.rmdir(path)
    ...     except:
    ...         os.remove(path)

