Synchronisation du référentiel
==============================

Waarp Manager offre la possibilité d'être synchronisé avec un
référentiel externe. La synchronisation permet de créer et de mettre à
jour les partenaires et les sites définis.

.. note::

   Seuls les partenaires de type Waarp R66 (client et serveurs) et Waarp
   Gateway FTP sont gérés.

Le référentiel en base de donnée doit être mis à jour par vos propres moyens.
Après chaque modification du référentiel, un script doit être exécuté pour
synchroniser la base de données interne avec le référentiel :

.. code-block:: bash

   ./waarp-manager db sync -c waarp-manager.ini

Opérations effectuées
---------------------

Le référentiel doit être injecté dans la table ``ref_instances`` de la
base de données utilisée par Waarp Manager.

Lors de l'exécution de la commande ``./waarp-manager db sync``, pour
chaque ligne créée dans la table ``ref_instances``, les opérations
suivantes sont effectuées :

* Si le site indiqué n'existe pas, celui-ci est créé.
* Si le partenaire n'existe pas, celui-ci est créé. Sinon, il est mis
  à jour.


Structure de la table
---------------------

La table ``ref_instances`` a la structure suivante :

====================== =========== ===========
Colonne                Type        Description
====================== =========== ===========
app_name               text        Le nom de l'application correspondant au partenaire
id_app                 text        Identifiant de l'application
env                    text        Environnement de l'application
tiers_id               text unique Identifiant du partenaire pour les transferts en clair
tiers_id_ssl           text unique Identifiant du partenaire pour les transferts SSL
host_name              text        Identifiant du serveur sur lequel le partenaire est installé
ip_address             text        Adresse IP du serveur sur lequel le partenaire est installé
site_name              text        Nom du site auquel le partenaire appartient
type                   text        Type du partenaire (valeurs possibles: ``client``, ``server`` ou ``gwftp``)
port_r66               int64       Port utilisé par le moniteur R66
port_r66_ssl           int64       Port utilisé par le moniteur R66 via SSL
port_r66_monitoring    int64       Port utilisé par le service de monitoring du moniteur R66
port_r66_admin         int64       Port utilisé par l'interface d'administration du moniteur R66
port_r66_rest          int64       Port utilisé par l'interface REST du moniteur R66
port_gwftp             int64       Port utilisé par la passerelle FTP
port_gwftp_monitoring  int64       Port utilisé par le service de monitoring de la passerelle FTP
port_gwftp_admin       int64       Port utilisé par l'interface d'administration de la passerelle FTP
port_gwftp_passive_min int64       Port minimal utilisé par la passerelle FTP pour les flux de données passif
port_gwftp_passive_max int64       Port maximal utilisé par la passerelle FTP pour les flux de données passif
====================== =========== ===========

Elle peut être créée avec le code SQL suivant :

.. code-block:: sql

  CREATE TABLE IF NOT EXISTS ref_instances (
      app_name text not null,
      id_app text not null,
      env text not null,
      tiers_id text unique not null,
      tiers_id_ssl text unique not null,
      host_name text not null,
      ip_address text not null,
      site_name text not null,
      type text not null,
      port_r66 integer not null default 6666,
      port_r66_ssl integer not null default 667,
      port_r66_monitoring integer not null default 8066,
      port_r66_admin integer not null default 8067,
      port_r66_rest integer not null default 8088,
      port_gwftp integer not null default 6621,
      port_gwftp_monitoring integer not null default 8068,
      port_gwftp_admin integer not null default 8069,
      port_gwftp_passive_min integer not null default 30000,
      port_gwftp_passive_max integer not null default 40000
   );
