# pg\_restore Callback Task

## Présentation

Muppy vous permet de modifier le processus de restauration des **pg\_*****dumps*** à l'aide de Task d'un type particulier nommé **pg\_restore Callback Task.**

Ces callbacks **ont été conçues pour** permettre d'automatiser le type d'opérations suivantes:

* Modifier les caractéristiques d'un User juste après sa création
* Modifier un schéma après la création de la base et avant la restauration
* Anonymiser une base de données juste après la restauration

Les pg\_restore Callback Task sont des **Muppy Tasks** qui sont appelées à chaque étape du processus de restauration des Databases.&#x20;

Les **pg\_restore Callback Task** ont une signature particulière, un paramètre **step** permet d'indiquer à quelle étape du processus de restauration elles sont invoquées.

### Exemple de pg\_restore Callback Task

```python
@fabric_task()
def template_pg_restore_callback(
        cnx, host_obj,
        step:str,
        pg_cluster_obj:OdooModelType,
        pg_dump_obj:OdooModelType=None,
        pg_dump_file_path:str=None,
        db_name:str=None,
        db_comment:str=None,
        db_owner:str=None,
        _imq_logger=None
    ):
    """ Template pg_restore callback 
    :param step: The pg_restore step whose end triggered this task:
       any of 's3_download', 'create_user', 'drop_db', 'create_db', 'pg_restore'.
    :param pg_cluster_obj: Cluster on which the dump will be restored.
    :param pg_dump_obj: The Muppy pg_dump object that will be restored.
    :param pg_dump_file_path: Full path of the pg_dump that will be restored.
    :param db_name: Name of the database to restore.
    :param db_comment: Comment that will be set at restore.
    :param db_owner: User owner of the database.

    :returns: something or False
    """
    odoo_env = host_obj.env
    _task_logger = _imq_logger or _logger
    # ...
```

### Mise en oeuvre

Les callbacks peuvent être définies à différents niveaux:

* L'objet **"PostgreSQL Database"** permet de définir un callback qui sera proposée comme valeur par défaut dans le Wizard **"Backup Databases".**
* Le Wizard **"Backup Databases"** permet de définir un callback qui sera stockée dans l'objet **pg\_dump** et qui sera proposée comme valeur par défaut lors de la restauration d'un **pg\_dump**.
* Le Wizard **"Restore PostgreSQL Databases"** permet de forcer la callback à utiliser lors du Restore. Si aucun Callback n'est précisée au niveau du Wizard, c'est le Callback définie au niveau du pg\_dump qui est utilisée.
* Le Wizard **"Copy Databases (using pg\_dump)"** permet de définir le callback qui sera utilisée lors du Restore.
