feat: default ports for SSH tunnel (#32403)

This commit is contained in:
Beto Dealmeida
2025-02-27 10:59:48 -05:00
committed by GitHub
parent 74733ae310
commit f4105e9ed2
7 changed files with 228 additions and 20 deletions

View File

@@ -33,6 +33,7 @@ from superset.databases.utils import make_url_safe
from superset.extensions import event_logger
from superset.models.core import Database
from superset.utils.decorators import on_error, transaction
from superset.utils.ssh_tunnel import get_default_port
logger = logging.getLogger(__name__)
@@ -72,7 +73,9 @@ class CreateSSHTunnelCommand(BaseCommand):
"private_key_password"
)
url = make_url_safe(self._database.sqlalchemy_uri)
if not url.port:
backend = url.get_backend_name()
port = url.port or get_default_port(backend)
if not port:
raise SSHTunnelDatabasePortError()
if not server_address:
exceptions.append(SSHTunnelRequiredFieldValidationError("server_address"))

View File

@@ -32,6 +32,7 @@ from superset.daos.database import SSHTunnelDAO
from superset.databases.ssh_tunnel.models import SSHTunnel
from superset.databases.utils import make_url_safe
from superset.utils.decorators import on_error, transaction
from superset.utils.ssh_tunnel import get_default_port
logger = logging.getLogger(__name__)
@@ -75,5 +76,7 @@ class UpdateSSHTunnelCommand(BaseCommand):
raise SSHTunnelInvalidError(
exceptions=[SSHTunnelRequiredFieldValidationError("private_key")]
)
if not url.port:
backend = url.get_backend_name()
port = url.port or get_default_port(backend)
if not port:
raise SSHTunnelDatabasePortError()