Skip to content

Commit a8cd0e7

Browse files
refactor: create robust helper function for secret name extraction
Co-Authored-By: Aaron <AJ> Steers <[email protected]>
1 parent ed1e60a commit a8cd0e7

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

airbyte_cdk/cli/airbyte_cdk/_secrets.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def fetch(
146146
)
147147

148148
if error:
149-
secret_name = secret.name.split("/secrets/")[-1] # Removes project prefix
149+
secret_name = _extract_secret_name(secret.name)
150150
failed_secrets.append(secret_name)
151151
click.echo(f"Failed to retrieve secret '{secret_name}': {error}", err=True)
152152
else:
@@ -255,7 +255,7 @@ def list_(
255255
table.add_column("Created", justify="left", style="blue", overflow="fold")
256256
for secret in secrets:
257257
full_secret_name = secret.name
258-
secret_name = full_secret_name.split("/secrets/")[-1] # Removes project prefix
258+
secret_name = _extract_secret_name(full_secret_name)
259259
secret_url = _get_secret_url(secret_name, gcp_project_id)
260260
table.add_row(
261261
f"[link={secret_url}]{secret_name}[/link]",
@@ -266,6 +266,24 @@ def list_(
266266
console.print(table)
267267

268268

269+
def _extract_secret_name(secret_name: str) -> str:
270+
"""Extract the secret name from a fully qualified secret path.
271+
272+
Handles different formats of secret names:
273+
- Full path: "projects/project-id/secrets/SECRET_NAME"
274+
- Already extracted: "SECRET_NAME"
275+
276+
Args:
277+
secret_name: The secret name or path
278+
279+
Returns:
280+
str: The extracted secret name without project prefix
281+
"""
282+
if "/secrets/" in secret_name:
283+
return secret_name.split("/secrets/")[-1]
284+
return secret_name
285+
286+
269287
def _get_secret_url(secret_name: str, gcp_project_id: str) -> str:
270288
"""Generate a URL for a secret in the GCP Secret Manager console.
271289
@@ -280,6 +298,8 @@ def _get_secret_url(secret_name: str, gcp_project_id: str) -> str:
280298
Returns:
281299
str: URL to the secret in the GCP console
282300
"""
301+
# Ensure we have just the secret name without the project prefix
302+
secret_name = _extract_secret_name(secret_name)
283303
return f"https://console.cloud.google.com/security/secret-manager/secret/{secret_name}/versions?hl=en&project={gcp_project_id}"
284304

285305

@@ -337,7 +357,7 @@ def _write_secret_file(
337357
versions = list(response)
338358

339359
if not versions:
340-
secret_name = secret.name.split("/secrets/")[-1] # Removes project prefix
360+
secret_name = _extract_secret_name(secret.name)
341361
return f"No enabled version found for secret: {secret_name}"
342362

343363
enabled_version = versions[0]

0 commit comments

Comments
 (0)