diff --git a/ingestion/src/metadata/great_expectations/action.py b/ingestion/src/metadata/great_expectations/action.py index eecc6c7e519..8c62c35a071 100644 --- a/ingestion/src/metadata/great_expectations/action.py +++ b/ingestion/src/metadata/great_expectations/action.py @@ -16,6 +16,7 @@ This subpackage needs to be used in Great Expectations checkpoints actions. """ +import warnings from typing import Dict, Optional, Union from great_expectations.checkpoint.actions import ValidationAction @@ -68,13 +69,29 @@ class OpenMetadataValidationAction(ValidationAction): data_context: DataContext, *, config_file_path: str = None, + database_service_name: Optional[str] = None, ometa_service_name: Optional[str] = None, ): super().__init__(data_context) - self.ometa_service_name = ometa_service_name + self._ometa_service_name = ( + ometa_service_name # will be deprecated in future release + ) + self._database_service_name = database_service_name self.config_file_path = config_file_path self.ometa_conn = self._create_ometa_connection() + @property + def database_service_name(self): + """Handle depracation warning""" + if self._ometa_service_name: + warnings.warn( + "`ometa_service_name` will be deperacted in future releases. Use `database_service_name` instead", + DeprecationWarning, + ) + + return self._ometa_service_name + return self._database_service_name + # pylint: disable=arguments-differ,unused-argument def _run( self, @@ -152,10 +169,10 @@ class OpenMetadataValidationAction(ValidationAction): ValueError: if 2 entities with the same `database`.`schema`.`table` are found """ - if self.ometa_service_name: + if self.database_service_name: return self.ometa_conn.get_by_name( entity=Table, - fqn=f"{self.ometa_service_name}.{database}.{schema_name}.{table_name}", + fqn=f"{self.database_service_name}.{database}.{schema_name}.{table_name}", ) table_entity = [ diff --git a/ingestion/tests/unit/great_expectations/test_ometa_validation_action.py b/ingestion/tests/unit/great_expectations/test_ometa_validation_action.py index c7e75b487c0..a174f8fba1c 100644 --- a/ingestion/tests/unit/great_expectations/test_ometa_validation_action.py +++ b/ingestion/tests/unit/great_expectations/test_ometa_validation_action.py @@ -15,6 +15,7 @@ Test suite for the action module implementation import os from unittest import mock +import pytest from jinja2 import Environment from pytest import mark @@ -41,6 +42,27 @@ def test_get_table_entity(input, expected, mocked_ometa, mocked_ge_data_context) assert res._type == expected +@mark.parametrize( + "input,expected", + [ + (None, "list_entities"), + ("service_name", "get_by_name"), + ], +) +def test_get_table_entity_database_service_name( + input, expected, mocked_ometa, mocked_ge_data_context +): + """Test get table entity""" + ometa_validation = OpenMetadataValidationAction( + data_context=mocked_ge_data_context, + config_file_path="my/config/path", + database_service_name=input, + ) + + res = ometa_validation._get_table_entity("database", "schema", "table") + assert res._type == expected + + def test_create_jinja_environment(fixture_jinja_environment): """Test create jinja environment""" assert isinstance(fixture_jinja_environment, Environment)