Désactiver la référence de ressource

Objets et procédures de la base de données

Les objets de base de données suivants sont créés lorsque le fichier ingestion/resource_management.sql est exécuté.

PUBLIC.DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procédure de point d’entrée disponible pour le rôle ADMIN. Cette procédure appelle la fonction Java DisableResourceHandler.disableResource.

PUBLIC.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procédure utilisée pour ajouter une logique spécifique à un connecteur qui est appelée avant la désactivation d’une ressource. Par défaut, elle renvoie 'response_code': 'OK'. Elle est appelée par DefaultPreDisableResourceCallback. Peut être écrasée à la fois en SQL et en Java.

PUBLIC.POST_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)

Procédure utilisée pour ajouter une logique spécifique à un connecteur qui est appelée après la désactivation d’une ressource. Par défaut, elle renvoie 'response_code': 'OK'. Elle est appelée par DefaultPostDisableResourceCallback. Peut être écrasée à la fois en SQL et en Java.

Gestionnaire (handler) personnalisé

Le gestionnaire (handler) et ses éléments internes peuvent être personnalisés selon les approches suivantes.

Approche de remplacement de procédure

Les composants suivants peuvent être remplacés à l’aide de SQL.

Gestionnaire (handler)

Pour fournir une implémentation personnalisée de DisableResourceHandler, remplacez la procédure PUBLIC.DISABLE_RESOURCE.

Par exemple :

CREATE OR REPLACE PROCEDURE PUBLIC.DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomDisableResourceHandler.disableResource';

GRANT USAGE ON PROCEDURE PUBLIC.DISABLE_RESOURCE(VARCHAR) TO APPLICATION ROLE ADMIN;
Copy

Procédures internes

Les procédures internes PRE_DISABLE_RESOURCE et POST_DISABLE_RESOURCE peuvent également être personnalisées par le biais de SQL. Ces procédures peuvent aussi appeler d’autres gestionnaires (handlers) Java :

CREATE OR REPLACE PROCEDURE PUBLIC.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE SQL
EXECUTE AS OWNER
AS
BEGIN
    -- SOME CUSTOM LOGIC BEGIN
    SELECT sysdate();
    -- SOME CUSTOM LOGIC END

    RETURN OBJECT_CONSTRUCT('response_code', 'OK');
END;

CREATE OR REPLACE PROCEDURE PUBLIC.PRE_DISABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomHandler.disableResourceValidate';
Copy

L’approche du constructeur

DisableResourceHandler peut être personnalisé à l’aide de DisableResourceHandlerBuilder. Ce constructeur permet à l’utilisateur de fournir des implémentations personnalisées des interfaces suivantes :

  • PreDisableResourceCallback

  • PostDisableResourceCallback

  • ConnectorErrorHelper

Quand une fonction n’est pas fournie, l’implémentation par défaut fournie par SDK est utilisée.

class CustomPreDisableResourceCallback implements PreDisableResourceCallback {
    @Override
    public ConnectorResponse execute(String resourceIngestionDefinitionId) {
        // CUSTOM LOGIC
        return ConnectorResponse.success();
    }
}

class CustomHandler {

    // Path to this method needs to be specified in the PUBLIC.DISABLE_RESOURCE procedure using SQL
    public static Variant disableResource(Session session, String resourceIngestionDefinitionId) {
            //Using builder
        var handler = DisableResourceHandlerBuilder.builder(session)
            .withPreDisableResourceCallback(new CustomPreDisableResourceCallback())
            .build();
        return handler.disableResource(resourceIngestionDefinitionId).toVariant();
    }
}
Copy