From 523205583b89a7260cf427bbce90a7782abf443c Mon Sep 17 00:00:00 2001 From: Jack Wotherspoon Date: Tue, 4 Feb 2025 11:36:04 -0500 Subject: [PATCH] feat: add support for `GOOGLE_CLOUD_QUOTA_PROJECT` env var (#1231) Add support for quota_project to be set via the GOOGLE_CLOUD_QUOTA_PROJECT env var. --- google/cloud/sql/connector/connector.py | 6 +++++- tests/unit/test_connector.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/google/cloud/sql/connector/connector.py b/google/cloud/sql/connector/connector.py index a0935a38..3e53e754 100755 --- a/google/cloud/sql/connector/connector.py +++ b/google/cloud/sql/connector/connector.py @@ -165,13 +165,17 @@ def __init__( # set default params for connections self._timeout = timeout self._enable_iam_auth = enable_iam_auth - self._quota_project = quota_project self._user_agent = user_agent self._resolver = resolver() # if ip_type is str, convert to IPTypes enum if isinstance(ip_type, str): ip_type = IPTypes._from_str(ip_type) self._ip_type = ip_type + # check for quota project arg and then env var + if quota_project: + self._quota_project = quota_project + else: + self._quota_project = os.environ.get("GOOGLE_CLOUD_QUOTA_PROJECT") # type: ignore # check for universe domain arg and then env var if universe_domain: self._universe_domain = universe_domain diff --git a/tests/unit/test_connector.py b/tests/unit/test_connector.py index eaf188c3..e25c9a38 100644 --- a/tests/unit/test_connector.py +++ b/tests/unit/test_connector.py @@ -451,3 +451,20 @@ def test_configured_universe_domain_env_var( assert connector._sqladmin_api_endpoint == f"https://sqladmin.{universe_domain}" # unset env var del os.environ["GOOGLE_CLOUD_UNIVERSE_DOMAIN"] + + +def test_configured_quota_project_env_var( + fake_credentials: Credentials, +) -> None: + """Test that configured quota project succeeds with quota project + set via GOOGLE_CLOUD_QUOTA_PROJECT env var. + """ + quota_project = "my-cool-project" + # set environment variable + os.environ["GOOGLE_CLOUD_QUOTA_PROJECT"] = quota_project + # Note: we are not passing quota_project arg, env var should set it + with Connector(credentials=fake_credentials) as connector: + # test quota project was configured + assert connector._quota_project == quota_project + # unset env var + del os.environ["GOOGLE_CLOUD_QUOTA_PROJECT"]