Atualizar a configuração de conexão

Atualizar a configuração da conexão é uma etapa que pode ser chamada diretamente após pausar o conector. Esta etapa permite que o usuário atualize as propriedades necessárias para estabelecer uma conexão com o sistema de origem para começar a ingerir dados no Snowflake. Ao substituir com lógica personalizada, este procedimento precisa ser substituído para especificar um manipulador Java personalizado.

Chamar este procedimento requer que o usuário tenha a função do aplicativo ADMIN atribuída.

A etapa de configuração da conexão consiste internamente em várias fases. Alguns deles são totalmente personalizáveis e, por padrão, não fazem nada. As fases são as seguintes:

  1. Validação de status

  2. Validação de entrada

  3. Rascunho de retorno de chamada

  4. Rascunho da validação da conexão

  5. Atualização de configuração

  6. Retorno de chamada interno

  7. Validação de conexão

  8. Atualização de status

Requisitos

A configuração da conexão requer que pelo menos os seguintes arquivos sql sejam executados durante a instalação do Native App:

  • core.sql

  • configuration/app_config.sql

  • configuration/connection_configuration.sql

  • configuration/update_connection_configuration.sql

No caso deste recurso, há um requisito adicional dependente do usuário SDK:

  • Implementação personalizada dos procedimentos PUBLIC.TEST_DRAFT_CONNECTION() e PUBLIC.TEST_CONNECTION()

Validação de status

Para executar a atualização da configuração da conexão, o status interno do conector precisa ser PAUSED.

Esta validação não pode ser substituída usando UpdateConnectionConfigurationHandlerBuilder nem sobrescrevendo o procedimento armazenado. No entanto, é possível implementar um manipulador personalizado, que não terá esse tipo de validação.

Validação de entrada

A entrada precisa ser uma variant contendo um mapa de propriedades, porém às vezes isso não é suficiente. Por essa razão, o SDK fornece um procedimento armazenado interno chamado: PUBLIC.UPDATE_CONNECTION_CONFIG_VALIDATE(config VARIANT). Por padrão, este procedimento apenas retorna 'response_code': 'OK', mas ao sobrescrevê-lo, ele pode atualizar a configuração fornecida durante a validação. Esse recurso permite lógica personalizada, como, por exemplo, corte de entrada, conversão para maiúsculas/minúsculas etc. Para retornar a configuração transformada de qualquer forma, a resposta precisa conter informações adicionais da propriedade "config" na resposta Variant, esta propriedade deve conter a configuração atualizada como Variant. O procedimento pode ser personalizado por meio de sobreposição através do SQL ou usando UpdateConnectionConfigurationHandlerBuilder e fornecer implementação personalizada da interface ConnectionConfigurationInputValidator.

A resposta válida da implementação personalizada com transformação se parece com isto:

{
    "response_code" : "OK",
    "config": {
        "key1": "value1",
        "key2": "value2"
    }
}
Copy

Atualização de configuração

Depois que as validações forem aprovadas com sucesso, a configuração será salva na tabela APP_CONFIG interna. O serviço responsável por isso salvará a Variant fornecida sob a chave connection_configuration. Esta configuração precisa ser validada com sucesso pelo rascunho interno do retorno de chamada e pela validação de conexão de rascunho para ser atualizada; o conjunto de propriedades fornecidas fica totalmente a critério do usuário.

Rascunho interno de retorno de chamada

O retorno de chamada interno é outra etapa personalizável. Por padrão, ele invoca PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT), que retorna 'response_code': 'OK'. Por exemplo, ele pode ser usado para alterar outros procedimentos, concedendo-lhes integração de acesso externo. Ele pode ser substituído por meio do script sql ou usando um ConnectionConfigurationHandlerBuilder para fornecer implementação personalizada da interface ConnectionConfigurationCallback.

Rascunho da validação da conexão

Esta etapa irá disparar um procedimento PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT). Este procedimento tenta consultar o sistema de origem para obter dados usando dados do parâmetro de entrada como configuração de conexão. Este procedimento não é implementado por padrão e precisa ser fornecido pelo usuário do SDK. Além disso, uma implementação da interface ConnectionValidator pode ser fornecida ao UpdateConnectionConfigurationHandlerBuilder para personalizar esta fase. Neste caso, não há necessidade de implementar procedimento armazenado. A recomendação é executar apenas uma verificação mínima de conectividade neste procedimento para garantir que os recursos de acesso externo do Snowflake foram configurados corretamente e que o conector tem todos os privilégios necessários para usá-los.

Retorno de chamada interno

O retorno de chamada interno é outra etapa personalizável. Por padrão, ele invoca PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT), que retorna 'response_code': 'OK'. Por exemplo, ele pode ser usado para alterar outros procedimentos, concedendo-lhes integração de acesso externo. Ele pode ser substituído por meio do script sql ou usando um ConnectionConfigurationHandlerBuilder para fornecer implementação personalizada da interface ConnectionConfigurationCallback.

Validação de conexão

Esta etapa irá disparar um procedimento PUBLIC.TEST_CONNECTION. Este procedimento tem ação de geminação para o PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT), mas não tem parâmetro de entrada e deve ser usado para testar a conexão oficial usando uma configuração salva no banco de dados.

Visualização da configuração

Há um procedimento PUBLIC.GET_CONNECTION_CONFIGURATION() disponível para os usuários ADMIN e VIEWER que retorna uma configuração de conexão atual da tabela interna.

Resposta

Resposta bem-sucedida

Se o procedimento for concluído com sucesso, ele retornará uma resposta do procedimento TEST_CONNECTION. Recomendamos usar o seguinte formato:

{
  "response_code": "OK"
}
Copy

Resposta de erro

Em caso de erro, a resposta segue o formato abaixo:

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

Possíveis códigos de erro incluem:

  • INVALID_CONNECTOR_STATUS - Status do conector inválido. Status esperado: [PAUSED]

  • INTERNAL_ERROR - Algo deu errado internamente, a mensagem deve ser descritiva

  • PROCEDURE_NOT_FOUND - O procedimento que foi chamado não existe. Neste caso é sobre o procedimento TEST_CONNECTION e TEST_DRAFT_CONNECTION principalmente.

  • UNKNOWN_SQL_ERROR - Este erro ocorre quando algo inesperado acontece ao chamar procedimentos internos

  • INVALID_RESPONSE - Este erro ocorre quando a resposta recebida do procedimento interno não contém response_code ou uma resposta de erro não contém message, mas contém response_code

  • UNKNOWN_ERROR - Significa que algo inesperado deu errado - a mensagem de exceção lançada é encaminhada

  • Códigos de erro personalizados recebidos do procedimento TEST_DRAFT_CONNECTION() - definido pelo desenvolvedor do conector

  • Códigos de erro personalizados recebidos do procedimento DRAFT_CONNECTION_CONFIGURATION_INTERNAL() - definido pelo desenvolvedor do conector

  • Códigos de erro personalizados recebidos do procedimento TEST_CONNECTION() - definido pelo desenvolvedor do conector

  • Códigos de erro personalizados recebidos do procedimento SET_CONNECTION_CONFIGURATION_INTERNAL() - definido pelo desenvolvedor do conector