From 7d05d9f50ac464b81a7ed87c4badf07caa17f0ce Mon Sep 17 00:00:00 2001 From: Takahiro Nakayama Date: Fri, 29 Dec 2023 18:39:59 +0900 Subject: [PATCH] Fixes: `GetTags-403 Permission denied on resource project None.` (#14521) * Fix "GetTags-403 Permission denied on resource project None." Signed-off-by: Takahiro Nakayama --- .../source/database/bigquery/connection.py | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/ingestion/src/metadata/ingestion/source/database/bigquery/connection.py b/ingestion/src/metadata/ingestion/source/database/bigquery/connection.py index 8a785cd739d..2f5b1b1523a 100644 --- a/ingestion/src/metadata/ingestion/source/database/bigquery/connection.py +++ b/ingestion/src/metadata/ingestion/source/database/bigquery/connection.py @@ -44,6 +44,9 @@ from metadata.ingestion.connections.test_connections import ( from metadata.ingestion.ometa.ometa_api import OpenMetadata from metadata.ingestion.source.database.bigquery.queries import BIGQUERY_TEST_STATEMENT from metadata.utils.credentials import set_google_credentials +from metadata.utils.logger import ingestion_logger + +logger = ingestion_logger() def get_connection_url(connection: BigQueryConnection) -> str: @@ -107,9 +110,27 @@ def test_connection( return policy_tags def test_tags(): - taxonomies = PolicyTagManagerClient().list_taxonomies( - parent=f"projects/{engine.url.host}/locations/{service_connection.taxonomyLocation}" - ) + taxonomy_project_ids = [] + if engine.url.host: + taxonomy_project_ids.append(engine.url.host) + if service_connection.taxonomyProjectId: + taxonomy_project_ids.extend(service_connection.taxonomyProjectId) + if not taxonomy_project_ids: + logger.info("'taxonomyProjectID' is not set, so skipping this test.") + return None + + taxonomy_location = service_connection.taxonomyLocation + if not taxonomy_location: + logger.info("'taxonomyLocation' is not set, so skipping this test.") + return None + + taxonomies = [] + for project_id in taxonomy_project_ids: + taxonomies.extend( + PolicyTagManagerClient().list_taxonomies( + parent=f"projects/{project_id}/locations/{taxonomy_location}" + ) + ) return get_tags(taxonomies) def test_connection_inner(engine):