diff --git a/.github/actions/setup-openmetadata-test-environment/action.yml b/.github/actions/setup-openmetadata-test-environment/action.yml index 2b5ed13686e..c9eb1e6b531 100644 --- a/.github/actions/setup-openmetadata-test-environment/action.yml +++ b/.github/actions/setup-openmetadata-test-environment/action.yml @@ -21,7 +21,7 @@ runs: - name: Install Ubuntu dependencies run: | sudo apt-get update && sudo apt-get install -y unixodbc-dev python3-venv librdkafka-dev gcc libsasl2-dev build-essential libssl-dev libffi-dev \ - unixodbc-dev libevent-dev python3-dev libkrb5-dev + libevent-dev python3-dev libkrb5-dev tdsodbc && ACCEPT_EULA=Y sudo apt-get -qq install -y msodbcsql18 shell: bash # ------------------------------------------------------------------------------ diff --git a/ingestion/src/metadata/ingestion/source/database/azuresql/connection.py b/ingestion/src/metadata/ingestion/source/database/azuresql/connection.py index 185e38dc66e..7256e850791 100644 --- a/ingestion/src/metadata/ingestion/source/database/azuresql/connection.py +++ b/ingestion/src/metadata/ingestion/source/database/azuresql/connection.py @@ -22,6 +22,7 @@ from metadata.generated.schema.entity.automations.workflow import ( ) from metadata.generated.schema.entity.services.connections.database.azureSQLConnection import ( Authentication, + AuthenticationMode, AzureSQLConnection, ) from metadata.generated.schema.entity.services.connections.database.mssqlConnection import ( @@ -42,7 +43,8 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) - """ if ( - hasattr(connection.authenticationMode, "authentication") + isinstance(connection, AzureSQLConnection) + and isinstance(connection.authenticationMode, AuthenticationMode) and connection.authenticationMode.authentication is not None ): connection_string = f"Driver={connection.driver};Server={connection.hostPort};Database={connection.database};" @@ -82,7 +84,7 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) - params = "&".join( f"{key}={quote_plus(value)}" for key, value in options.items() if value ) - url = f"{url}?{params}" + url = f"{url}&{params}" return url diff --git a/ingestion/tests/integration/sql_server/conftest.py b/ingestion/tests/integration/sql_server/conftest.py index b256d7a33fc..3e46d6dee3b 100644 --- a/ingestion/tests/integration/sql_server/conftest.py +++ b/ingestion/tests/integration/sql_server/conftest.py @@ -3,8 +3,6 @@ import os import shutil import pytest -from docker_utils import try_bind -from markers import xfail_param from sqlalchemy import create_engine, text from testcontainers.mssql import SqlServerContainer @@ -16,6 +14,9 @@ from metadata.ingestion.lineage.sql_lineage import search_cache from metadata.ingestion.ometa.ometa_api import OpenMetadata from metadata.workflow.metadata import MetadataWorkflow +from ...helpers.docker_utils import try_bind +from ...helpers.markers import xfail_param + @pytest.fixture(scope="session", autouse=True) def config_logging(): @@ -104,10 +105,7 @@ def mssql_server_config(mssql_container, request): scope="module", params=[ MssqlScheme.mssql_pytds, - xfail_param( - MssqlScheme.mssql_pyodbc, - "sql server fails with pyodbc (https://github.com/open-metadata/OpenMetadata/issues/16435)", - ), + MssqlScheme.mssql_pyodbc, ], ) def ingest_metadata(mssql_container, metadata: OpenMetadata, request): @@ -125,6 +123,7 @@ def ingest_metadata(mssql_container, metadata: OpenMetadata, request): + mssql_container.get_exposed_port(mssql_container.port), "database": "AdventureWorks", "ingestAllDatabases": True, + "connectionOptions": {"TrustServerCertificate": "yes"}, } }, "sourceConfig": {