From 78793e390cd970bebedc72323de088c6093b718e Mon Sep 17 00:00:00 2001 From: Luke Couzens Date: Tue, 7 Jan 2025 15:25:03 +0000 Subject: [PATCH] Add unleash flag to skip trino tag matched get logic (#5436) * Add unleash flag to skip trino tag matched queries. --- koku/masu/processor/__init__.py | 7 +++++++ .../parquet/ocp_cloud_parquet_report_processor.py | 5 +++++ .../test_ocp_cloud_parquet_report_processor.py | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/koku/masu/processor/__init__.py b/koku/masu/processor/__init__.py index d9bad2cb47..cba2dbf898 100644 --- a/koku/masu/processor/__init__.py +++ b/koku/masu/processor/__init__.py @@ -181,3 +181,10 @@ def is_customer_cost_model_large(account): # pragma: no cover account = convert_account(account) context = {"schema": account} return UNLEASH_CLIENT.is_enabled("cost-management.backend.large-customer-cost-model", context) + + +def is_tag_processing_disabled(account): # pragma: no cover + """Flag the customer as tag processing disabled.""" + account = convert_account(account) + context = {"schema": account} + return UNLEASH_CLIENT.is_enabled("cost-management.backend.is_tag_processing_disabled", context) diff --git a/koku/masu/processor/parquet/ocp_cloud_parquet_report_processor.py b/koku/masu/processor/parquet/ocp_cloud_parquet_report_processor.py index f9bc0949d5..d0313833b9 100644 --- a/koku/masu/processor/parquet/ocp_cloud_parquet_report_processor.py +++ b/koku/masu/processor/parquet/ocp_cloud_parquet_report_processor.py @@ -26,6 +26,7 @@ from masu.database.gcp_report_db_accessor import GCPReportDBAccessor from masu.database.ocp_report_db_accessor import OCPReportDBAccessor from masu.database.report_manifest_db_accessor import ReportManifestDBAccessor +from masu.processor import is_tag_processing_disabled from masu.processor.ocp.ocp_cloud_updater_base import OCPCloudUpdaterBase from masu.processor.parquet.parquet_report_processor import OPENSHIFT_REPORT_TYPE from masu.processor.parquet.parquet_report_processor import PARQUET_EXT @@ -172,6 +173,10 @@ def get_matched_tags(self, ocp_provider_uuids): matched_tags = self.db_accessor.get_openshift_on_cloud_matched_tags(self.bill_id) if not matched_tags and enabled_tags: LOG.info(log_json(msg="matched tags not available via Postgres", context=ctx)) + # This flag is specifically for disabling trino tag matching for specific customers. + if is_tag_processing_disabled(self.schema_name): + LOG.info(log_json(msg="trino tag matching disabled for customer", context=ctx)) + return [] LOG.info(log_json(msg="getting matching tags from Trino", context=ctx)) matched_tags = self.db_accessor.get_openshift_on_cloud_matched_tags_trino( self.provider_uuid, diff --git a/koku/masu/test/processor/parquet/test_ocp_cloud_parquet_report_processor.py b/koku/masu/test/processor/parquet/test_ocp_cloud_parquet_report_processor.py index 0a6362a9fb..cdbf310498 100644 --- a/koku/masu/test/processor/parquet/test_ocp_cloud_parquet_report_processor.py +++ b/koku/masu/test/processor/parquet/test_ocp_cloud_parquet_report_processor.py @@ -448,6 +448,17 @@ def test_get_matched_tags_trino(self, mock_has_enabled, mock_matching_enabled, m self.report_processor.get_matched_tags([]) mock_get_tags.assert_not_called() + @patch.object(AWSReportDBAccessor, "check_for_matching_enabled_keys", return_value=True) + @patch.object(OCPCloudParquetReportProcessor, "has_enabled_ocp_labels", return_value=True) + @patch.object(AWSReportDBAccessor, "get_openshift_on_cloud_matched_tags", return_value=None) + @patch("masu.processor.parquet.ocp_cloud_parquet_report_processor.is_tag_processing_disabled", return_value=True) + def test_get_matched_tags_trino_disabled( + self, mock_unleash, mock_pg_tags, mock_has_enabled, mock_matching_enabled + ): + """Test that we skip trino matched tag queries if disabled in unleash.""" + result = self.report_processor.get_matched_tags([]) + self.assertEqual(result, []) + def test_instantiating_processor_without_manifest_id(self): """Assert that report_status exists and is None.""" report_processor = OCPCloudParquetReportProcessor(