This is an automated email from the ASF dual-hosted git repository.

kaxil pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 90b8ee44d78 Fix Google Links for TPC (Trusted Partner Cloud) (#69805)
90b8ee44d78 is described below

commit 90b8ee44d78ab32d61f9f036569eeba0f959f4f1
Author: M. Olcay Tercanlı <[email protected]>
AuthorDate: Mon Jul 13 22:08:22 2026 +0200

    Fix Google Links for TPC (Trusted Partner Cloud) (#69805)
    
    Co-authored-by: Maksim Yermakou <[email protected]>
---
 providers/google/src/airflow/providers/google/cloud/links/base.py | 3 ++-
 .../src/airflow/providers/google/cloud/links/cloud_functions.py   | 4 ++--
 .../providers/google/cloud/links/cloud_storage_transfer.py        | 4 ++--
 .../google/src/airflow/providers/google/cloud/links/compute.py    | 4 ++--
 .../airflow/providers/google/cloud/links/data_loss_prevention.py  | 4 +---
 .../google/src/airflow/providers/google/cloud/links/datafusion.py | 8 +++++---
 .../airflow/providers/google/cloud/operators/cloud_composer.py    | 4 ++--
 .../providers/google/cloud/operators/dataproc_metastore.py        | 3 +--
 .../src/airflow/providers/google/common/hooks/base_google.py      | 7 ++++++-
 .../google/src/airflow/providers/google/common/links/storage.py   | 3 +--
 10 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/providers/google/src/airflow/providers/google/cloud/links/base.py 
b/providers/google/src/airflow/providers/google/cloud/links/base.py
index 2d540ad40ee..d6accd33e39 100644
--- a/providers/google/src/airflow/providers/google/cloud/links/base.py
+++ b/providers/google/src/airflow/providers/google/cloud/links/base.py
@@ -21,13 +21,14 @@ from typing import TYPE_CHECKING, ClassVar
 from urllib.parse import urlparse
 
 from airflow.providers.common.compat.sdk import BaseOperatorLink, 
BaseSensorOperator, XCom
+from airflow.providers.google.common.hooks.base_google import GoogleBaseHook
 from airflow.providers.google.version_compat import AIRFLOW_V_3_0_PLUS, 
BaseOperator
 
 if TYPE_CHECKING:
     from airflow.providers.common.compat.sdk import Context, TaskInstanceKey
     from airflow.providers.google.cloud.operators.cloud_base import 
GoogleCloudBaseOperator
 
-BASE_LINK = "https://console.cloud.google.com";
+BASE_LINK = 
f"https://console.cloud.{GoogleBaseHook.get_high_value_cookie_domain()}"
 
 
 class BaseGoogleLink(BaseOperatorLink):
diff --git 
a/providers/google/src/airflow/providers/google/cloud/links/cloud_functions.py 
b/providers/google/src/airflow/providers/google/cloud/links/cloud_functions.py
index a0e5373bedc..9621fc19b65 100644
--- 
a/providers/google/src/airflow/providers/google/cloud/links/cloud_functions.py
+++ 
b/providers/google/src/airflow/providers/google/cloud/links/cloud_functions.py
@@ -19,9 +19,9 @@
 
 from __future__ import annotations
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
-CLOUD_FUNCTIONS_BASE_LINK = "https://console.cloud.google.com/functions";
+CLOUD_FUNCTIONS_BASE_LINK = BASE_LINK + "/functions"
 
 CLOUD_FUNCTIONS_DETAILS_LINK = (
     CLOUD_FUNCTIONS_BASE_LINK + 
"/details/{location}/{function_name}?project={project_id}"
diff --git 
a/providers/google/src/airflow/providers/google/cloud/links/cloud_storage_transfer.py
 
b/providers/google/src/airflow/providers/google/cloud/links/cloud_storage_transfer.py
index e8ccffe7b1c..45f9842e93c 100644
--- 
a/providers/google/src/airflow/providers/google/cloud/links/cloud_storage_transfer.py
+++ 
b/providers/google/src/airflow/providers/google/cloud/links/cloud_storage_transfer.py
@@ -21,12 +21,12 @@ from __future__ import annotations
 
 from typing import TYPE_CHECKING
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
 if TYPE_CHECKING:
     from airflow.providers.common.compat.sdk import Context
 
-CLOUD_STORAGE_TRANSFER_BASE_LINK = "https://console.cloud.google.com/transfer";
+CLOUD_STORAGE_TRANSFER_BASE_LINK = BASE_LINK + "/transfer"
 
 CLOUD_STORAGE_TRANSFER_LIST_LINK = CLOUD_STORAGE_TRANSFER_BASE_LINK + 
"/jobs?project={project_id}"
 
diff --git 
a/providers/google/src/airflow/providers/google/cloud/links/compute.py 
b/providers/google/src/airflow/providers/google/cloud/links/compute.py
index 6989bc44f77..363dc00b387 100644
--- a/providers/google/src/airflow/providers/google/cloud/links/compute.py
+++ b/providers/google/src/airflow/providers/google/cloud/links/compute.py
@@ -19,9 +19,9 @@
 
 from __future__ import annotations
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
-COMPUTE_BASE_LINK = "https://console.cloud.google.com/compute";
+COMPUTE_BASE_LINK = BASE_LINK + "/compute"
 COMPUTE_LINK = (
     COMPUTE_BASE_LINK + 
"/instancesDetail/zones/{location_id}/instances/{resource_id}?project={project_id}"
 )
diff --git 
a/providers/google/src/airflow/providers/google/cloud/links/data_loss_prevention.py
 
b/providers/google/src/airflow/providers/google/cloud/links/data_loss_prevention.py
index 1ea6bef696a..be04d2f7f5e 100644
--- 
a/providers/google/src/airflow/providers/google/cloud/links/data_loss_prevention.py
+++ 
b/providers/google/src/airflow/providers/google/cloud/links/data_loss_prevention.py
@@ -17,9 +17,7 @@
 
 from __future__ import annotations
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
-
-BASE_LINK = "https://console.cloud.google.com";
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
 DLP_BASE_LINK = BASE_LINK + "/security/dlp"
 
diff --git 
a/providers/google/src/airflow/providers/google/cloud/links/datafusion.py 
b/providers/google/src/airflow/providers/google/cloud/links/datafusion.py
index f6e996434fc..80988269fd6 100644
--- a/providers/google/src/airflow/providers/google/cloud/links/datafusion.py
+++ b/providers/google/src/airflow/providers/google/cloud/links/datafusion.py
@@ -19,10 +19,12 @@
 
 from __future__ import annotations
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
-BASE_LINK = "https://console.cloud.google.com/data-fusion";
-DATAFUSION_INSTANCE_LINK = BASE_LINK + 
"/locations/{region}/instances/{instance_name}?project={project_id}"
+DATAFUSION_BASE_LINK = BASE_LINK + "/data-fusion"
+DATAFUSION_INSTANCE_LINK = (
+    DATAFUSION_BASE_LINK + 
"/locations/{region}/instances/{instance_name}?project={project_id}"
+)
 DATAFUSION_PIPELINES_LINK = "{uri}/cdap/ns/{namespace}/pipelines"
 DATAFUSION_PIPELINE_LINK = 
"{uri}/pipelines/ns/{namespace}/view/{pipeline_name}"
 
diff --git 
a/providers/google/src/airflow/providers/google/cloud/operators/cloud_composer.py
 
b/providers/google/src/airflow/providers/google/cloud/operators/cloud_composer.py
index 43372c30905..d05e3022ab3 100644
--- 
a/providers/google/src/airflow/providers/google/cloud/operators/cloud_composer.py
+++ 
b/providers/google/src/airflow/providers/google/cloud/operators/cloud_composer.py
@@ -28,7 +28,7 @@ from google.cloud.orchestration.airflow.service_v1.types 
import Environment, Exe
 
 from airflow.providers.common.compat.sdk import AirflowException, conf
 from airflow.providers.google.cloud.hooks.cloud_composer import 
CloudComposerHook
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 from airflow.providers.google.cloud.operators.cloud_base import 
GoogleCloudBaseOperator
 from airflow.providers.google.cloud.triggers.cloud_composer import (
     CloudComposerAirflowCLICommandTrigger,
@@ -42,7 +42,7 @@ if TYPE_CHECKING:
 
     from airflow.providers.common.compat.sdk import Context
 
-CLOUD_COMPOSER_BASE_LINK = 
"https://console.cloud.google.com/composer/environments";
+CLOUD_COMPOSER_BASE_LINK = BASE_LINK + "/composer/environments"
 CLOUD_COMPOSER_DETAILS_LINK = (
     CLOUD_COMPOSER_BASE_LINK + 
"/detail/{region}/{environment_id}/monitoring?project={project_id}"
 )
diff --git 
a/providers/google/src/airflow/providers/google/cloud/operators/dataproc_metastore.py
 
b/providers/google/src/airflow/providers/google/cloud/operators/dataproc_metastore.py
index 5381588710d..f4bf20f8ed1 100644
--- 
a/providers/google/src/airflow/providers/google/cloud/operators/dataproc_metastore.py
+++ 
b/providers/google/src/airflow/providers/google/cloud/operators/dataproc_metastore.py
@@ -32,7 +32,7 @@ from google.cloud.metastore_v1.types.metastore import 
DatabaseDumpSpec, Restore
 
 from airflow.providers.common.compat.sdk import AirflowException
 from airflow.providers.google.cloud.hooks.dataproc_metastore import 
DataprocMetastoreHook
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 from airflow.providers.google.cloud.operators.cloud_base import 
GoogleCloudBaseOperator
 from airflow.providers.google.common.links.storage import StorageLink
 
@@ -42,7 +42,6 @@ if TYPE_CHECKING:
     from airflow.providers.common.compat.sdk import Context, TaskInstanceKey
     from airflow.providers.google.version_compat import BaseOperator
 
-BASE_LINK = "https://console.cloud.google.com";
 METASTORE_BASE_LINK = BASE_LINK + 
"/dataproc/metastore/services/{region}/{service_id}"
 METASTORE_BACKUP_LINK = METASTORE_BASE_LINK + 
"/backups/{resource}?project={project_id}"
 METASTORE_BACKUPS_LINK = METASTORE_BASE_LINK + 
"/backuprestore?project={project_id}"
diff --git 
a/providers/google/src/airflow/providers/google/common/hooks/base_google.py 
b/providers/google/src/airflow/providers/google/common/hooks/base_google.py
index 7ffef424bf8..64990197169 100644
--- a/providers/google/src/airflow/providers/google/common/hooks/base_google.py
+++ b/providers/google/src/airflow/providers/google/common/hooks/base_google.py
@@ -427,12 +427,17 @@ class GoogleBaseHook(BaseHook):
                 "and can contain only lowercase letters, digits, and hyphens."
             )
 
-    def is_default_universe(self) -> bool:
+    @staticmethod
+    def is_default_universe() -> bool:
         global_universe_domain = os.getenv("GOOGLE_CLOUD_UNIVERSE_DOMAIN", 
None)
         if global_universe_domain in ("googleapis.com", "", None):
             return True
         return False
 
+    @staticmethod
+    def get_high_value_cookie_domain() -> str:
+        return os.getenv("GOOGLE_CLOUD_HIGH_VALUE_COOKIE_DOMAIN", "google.com")
+
     def get_client_options(
         self,
         api_endpoint_override: str | None = None,
diff --git 
a/providers/google/src/airflow/providers/google/common/links/storage.py 
b/providers/google/src/airflow/providers/google/common/links/storage.py
index 8041ae3a265..5f1e7e24372 100644
--- a/providers/google/src/airflow/providers/google/common/links/storage.py
+++ b/providers/google/src/airflow/providers/google/common/links/storage.py
@@ -18,9 +18,8 @@
 
 from __future__ import annotations
 
-from airflow.providers.google.cloud.links.base import BaseGoogleLink
+from airflow.providers.google.cloud.links.base import BASE_LINK, BaseGoogleLink
 
-BASE_LINK = "https://console.cloud.google.com";
 GCS_STORAGE_LINK = BASE_LINK + 
"/storage/browser/{uri};tab=objects?project={project_id}"
 GCS_FILE_DETAILS_LINK = BASE_LINK + 
"/storage/browser/_details/{uri};tab=live_object?project={project_id}"
 

Reply via email to