Configuration du connecteur

La configuration du connecteur est la première étape obligatoire de la phase de l’assistant. Elle garantit que le connecteur possède la configuration des objets communs à tous les types de connecteurs, quels que soient le système source et le domaine réels. La procédure appelée PUBLIC.CONFIGURE_CONNECTOR(config VARIANT) est le point d’entrée à partir de l’UI ou de la feuille de calcul pour ce faire. Lorsque vous remplacez la procédure par une logique personnalisée, gardez à l’esprit que cette procédure doit être remplacée, car elle renvoie à la méthode statique ConfigureConnectorHandler.configureConnector en Java en tant que gestionnaire (handler).

Pour lancer cette procédure, l’utilisateur doit avoir le rôle d’application ADMIN.

L’étape de configuration du connecteur se déroule en interne en plusieurs phases. Certaines d’entre elles sont entièrement personnalisables et, par défaut, n’ont pas d’impact. Les phases sont les suivantes :

  1. Validation du statut

  2. Validation des champs

  3. Validation des entrées

  4. Mise à jour de la configuration

  5. Rappel interne

  6. Mise à jour du statut

Exigences

La configuration du connecteur nécessite au moins les fichiers SQL suivants pour être exécutés lors de l’installation de l’application native :

  • core.sql

  • configuration/app_config.sql

  • configuration/connector_configuration.sql

Validation du statut

Pour effectuer la configuration du connecteur, le statut interne du connecteur doit être CONFIGURING. Cette validation ne peut pas être écrasée par l’utilisation de ConfigureConnectorHandlerBuilder ni par l’écrasement d’une procédure stockée. Toutefois, il est possible d’implémenter un gestionnaire (handler) personnalisé, qui n’aura pas ce type de validation.

Validation des champs

La configuration du connecteur doit contenir un ensemble de champs spécifiques. Tous ces champs sont facultatifs, mais tout autre champ entraîne la levée d’une exception. Les clés autorisées sont les suivantes :

  • warehouse

  • destination_database

  • destination_schema

  • operational_warehouse

  • global_schedule

  • data_owner_role

  • agent_username

  • agent_role

Entrepôt

L’entrepôt est utilisé par le connecteur pour faire fonctionner la planification, exécuter des tâches et des requêtes.

Base_donnees_de_destination

La base de données de destination est utilisée pour stocker les données ingérées par le connecteur. Cette base de données doit se trouver à l’extérieur du connecteur. Il peut s’agir d’une base de données existante, mais le connecteur doit disposer de privilèges d’écriture sur celle-ci. Il peut également s’agir d’une base de données nouvellement créée, mais cela ne se fait pas automatiquement et doit être mis en œuvre dans le cadre du rappel interne lors de la configuration du connecteur ou de la finalisation de la configuration.

schema_destination

Le schéma de destination sera le schéma utilisé dans la base de données de destination ci-dessus.

entrepot_operationnel

Il arrive que le connecteur ait besoin de séparer les processus d’ingestion proprement dits nécessitant un entrepôt des processus liés aux opérations internes du connecteur. La spécification de ce deuxième entrepôt permet de répartir la charge entre eux.

calendrier_global

Cette propriété définit la planification d’exécution de la tâche du planificateur. Actuellement, le planificateur ne traite que les ressources ayant leur propre scheduleType=GLOBAL. La valeur de cette propriété doit être similaire à celle indiquée ci-dessous :

"global_schedule": {
    "scheduleType": "CRON",
    "scheduleDefinition": "*/10 * * * *"
}
Copy

role_proprietaire_donnees

Rôle qui peut être utilisé pour donner la propriété de la base de données de synchronisation afin de conserver les données lors de la désinstallation du connecteur.

nom_utilisateur_agent

Nom d’utilisateur utilisé par l’agent du connecteur basé sur le push lors de la connexion avec Snowflake.

role_agent

Rôle utilisé par l’agent du connecteur basé sur le push lors de la connexion avec Snowflake.

Validation des entrées

L’entrée doit être un Variant valide. En outre, le SDK fournit une procédure stockée interne appelée : PUBLIC.CONFIGURE_CONNECTOR_VALIDATE(config VARIANT). Par défaut, cette procédure renvoie simplement 'response_code': 'OK', mais elle peut être modifiée en écrasant cette procédure stockée. Il est également possible de la personnaliser en utilisant ConfigureConnectorHandlerBuilder et en fournissant une implémentation personnalisée de l’interface ConfigureConnectorValidator.

Mise à jour de la configuration

Une fois les validations transmises avec succès, la configuration est sauvegardée dans la table interne APP_CONFIG. Le service responsable de cette opération enregistre le Variant fourni sous la clé connector_configuration.

Rappel interne

Le rappel interne est une autre étape personnalisable. Par défaut, il appelle PUBLIC.CONFIGURE_CONNECTOR_INTERNAL(config VARIANT), qui renvoie 'response_code': 'OK'. Il peut être remplacé par le script SQL ou en utilisant un ConfigureConnectorHandlerBuilder pour fournir une implémentation personnalisée de l’interface ConfigureConnectorCallback.

Mise à jour du statut

Lorsque toutes les phases ci-dessus sont achevées avec succès, le statut interne du connecteur est mis à jour :

{
    "status": "CONFIGURING",
    "configurationStatus": "CONFIGURED"
}
Copy

Pour un diagramme des transitions d’état, voir Débit du connecteur.

Réponse

Réponse aboutie

Si la procédure se termine avec succès, elle renvoie une réponse au format suivant :

{
  "response_code": "OK",
}
Copy

Erreur de réponse

En cas d’erreur, la réponse suivra le format ci-dessous :

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

Les codes d’erreur possibles sont les suivants :

  • INVALID_CONNECTOR_STATUS - La procédure a été appelée sur un connecteur déjà configuré

  • CONNECTOR_CONFIGURATION_PARSING_ERROR - La configuration donnée n’est pas une configuration JSON valide

  • CONNECTOR_STATUS_NOT_FOUND - L’enregistrement du statut du connecteur n’existe pas dans la base de données

  • CONNECTOR_STATUS_PARSING_ERROR - La valeur stockée dans la table APP_STATE sous la clé connector_status a un format incorrect et ne peut pas être analysée par l’application