diff --git a/ingestion/src/metadata/utils/source_connections.py b/ingestion/src/metadata/utils/source_connections.py index 42face5cc4d..471f8a154a5 100644 --- a/ingestion/src/metadata/utils/source_connections.py +++ b/ingestion/src/metadata/utils/source_connections.py @@ -317,15 +317,17 @@ def _(connection: SnowflakeConnection): @get_connection_url.register def _(connection: HiveConnection): url = f"{connection.scheme.value}://" - if connection.connectionArguments: - if connection.connectionArguments.auth in ("LDAP", "CUSTOM"): - if connection.username: - url += f"{connection.username}" - if not connection.password: - connection.password = SecretStr("") - url += f":{quote_plus(connection.password.get_secret_value())}" - - url += "@" + if ( + connection.username + and connection.connectionArguments + and hasattr(connection.connectionArguments, "auth") + and connection.connectionArguments.auth in ("LDAP", "CUSTOM") + ): + url += f"{connection.username}" + if not connection.password: + connection.password = SecretStr("") + url += f":{quote_plus(connection.password.get_secret_value())}" + url += "@" url += connection.hostPort url += f"/{connection.databaseSchema}" if connection.databaseSchema else "" @@ -335,6 +337,7 @@ def _(connection: HiveConnection): if connection.connectionOptions else connection.connectionOptions ) + if options: if not connection.databaseSchema: url += "/" diff --git a/ingestion/tests/unit/test_source_connection.py b/ingestion/tests/unit/test_source_connection.py index 99238f63fe4..bc8d2e75b1f 100644 --- a/ingestion/tests/unit/test_source_connection.py +++ b/ingestion/tests/unit/test_source_connection.py @@ -154,6 +154,17 @@ class SouceConnectionTest(TestCase): ) assert expected_result == get_connection_url(hive_conn_obj) + def test_hive_url_without_auth(self): + expected_result = "hive://localhost:10000" + hive_conn_obj = HiveConnection( + scheme=HiveScheme.hive.value, + username="username", + password="password", + hostPort="localhost:10000", + connectionArguments={"customKey": "value"}, + ) + assert expected_result == get_connection_url(hive_conn_obj) + def test_trino_url_without_params(self): expected_url = "trino://username:pass@localhost:443/catalog" trino_conn_obj = TrinoConnection(