.. _backup_restore_extensions: Backup and Restore Extension for the management of ImageMosaic indexers ======================================================================= Introduction ------------ *ImageMosaics CoverageStores* make use of several ``.properties`` files instructing the reader on how to create the mosaic index. What we want to achieve is to allow the GeoServer Backup & Restore module to *inject* environment properties on indexers allowing the ImageMosaic to be automatically ported among different environments. Technical Details ----------------- The GeoServer Backup & Restore module actually provides an extension point on reading / writing allowing GeoServer to handle additional resources related to a particular ``ResourceInfo``. The interfaces :: public interface CatalogAdditionalResourcesWriter { public boolean canHandle(Object item); public void writeAdditionalResources(Backup backupFacade, Resource base, T item) throws IOException; } :: public interface CatalogAdditionalResourcesReader { public boolean canHandle(Object item); public void readAdditionalResources(Backup backupFacade, Resource base, T item) throws IOException; } Is invoked by the ``CatalogFileWriter`` (when doing a Backup) and the ``CatalogItemWriter`` (when doing a Restore) after a successful write of the resource configuration on the, respectively, target backup folder and in-memory catalog. The idea is the following one *allowing the CatalogItemWriter to*: #. Restore the ImageMosaic Indexer Properties injecting environment properties #. Check if the Mosaic index physically exist and if not create an empty one In order to do that we envisage the following technical approach On a **BACKUP** operation #. The Additional Resource Writer checks if the ``ResourceInfo`` is an ImageMosaic Coverage Store. #. The Additional Resource Writer looks for ``*.template`` files on the ImageMosaic index directory. It must store them into the zip archive by reading the path from the Coverage Store. #. The Additional Resource Writer stores the ``*.template`` along with the ``*.properties`` files on the target backup folder. Same as above. On a **RESTORE** operation #. The Additional Resource Reader checks if the ``ResourceInfo`` is an ImageMosaic Coverage Store. #. The Additional Resource Reader looks for ``*.template`` files on the ImageMosaic index directory. It will try to restore them by using the path read from the Coverage Store configuration. #. The Additional Resource Reader overwrites the ``*.properties`` files by resolving all the environment properties declared on the templates. #. The Additional Resource Reader checks if the empty mosaic must be created or not.