mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
feat: error messages for Presto connections (#14172)
* chore: rename connection errors * feat: error messages for Presto connections * Add unit tests * Update docs/src/pages/docs/Miscellaneous/issue_codes.mdx Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com> Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
This commit is contained in:
@@ -130,7 +130,8 @@ class DatabaseTestConnectionDriverError(CommandInvalidError):
|
||||
message = _("Could not load database driver")
|
||||
|
||||
|
||||
class DatabaseTestConnectionUnexpectedError(CommandInvalidError):
|
||||
class DatabaseTestConnectionUnexpectedError(SupersetErrorsException):
|
||||
status = 422
|
||||
message = _("Unexpected error occurred, please check your logs for details")
|
||||
|
||||
|
||||
|
||||
@@ -49,6 +49,17 @@ class TestConnectionDatabaseCommand(BaseCommand):
|
||||
uri = self._properties.get("sqlalchemy_uri", "")
|
||||
if self._model and uri == self._model.safe_sqlalchemy_uri():
|
||||
uri = self._model.sqlalchemy_uri_decrypted
|
||||
|
||||
# context for error messages
|
||||
url = make_url(uri)
|
||||
context = {
|
||||
"hostname": url.host,
|
||||
"password": url.password,
|
||||
"port": url.port,
|
||||
"username": url.username,
|
||||
"database": url.database,
|
||||
}
|
||||
|
||||
try:
|
||||
database = DatabaseDAO.build_db_for_connection_test(
|
||||
server_cert=self._properties.get("server_cert", ""),
|
||||
@@ -87,14 +98,6 @@ class TestConnectionDatabaseCommand(BaseCommand):
|
||||
engine=database.db_engine_spec.__name__,
|
||||
)
|
||||
# check for custom errors (wrong username, wrong password, etc)
|
||||
url = make_url(uri)
|
||||
context = {
|
||||
"hostname": url.host,
|
||||
"password": url.password,
|
||||
"port": url.port,
|
||||
"username": url.username,
|
||||
"database": url.database,
|
||||
}
|
||||
errors = database.db_engine_spec.extract_errors(ex, context)
|
||||
raise DatabaseTestConnectionFailedError(errors)
|
||||
except SupersetSecurityException as ex:
|
||||
@@ -108,7 +111,8 @@ class TestConnectionDatabaseCommand(BaseCommand):
|
||||
action=f"test_connection_error.{ex.__class__.__name__}",
|
||||
engine=database.db_engine_spec.__name__,
|
||||
)
|
||||
raise DatabaseTestConnectionUnexpectedError(str(ex))
|
||||
errors = database.db_engine_spec.extract_errors(ex, context)
|
||||
raise DatabaseTestConnectionUnexpectedError(errors)
|
||||
|
||||
def validate(self) -> None:
|
||||
database_name = self._properties.get("database_name")
|
||||
|
||||
Reference in New Issue
Block a user