Skip to content

Add GCP external catalog authentication support to the CLI - #5178

Merged
MonkeyCanCode merged 1 commit into
apache:mainfrom
akvelon:task/add-gcp-external-catalog-cli-auth-support
Jul 30, 2026
Merged

Add GCP external catalog authentication support to the CLI#5178
MonkeyCanCode merged 1 commit into
apache:mainfrom
akvelon:task/add-gcp-external-catalog-cli-auth-support

Conversation

@davidchaava

Copy link
Copy Markdown
Contributor

Summary

Adds GCP authentication support when creating external catalogs through the Polaris CLI.

Polaris supports GCP authentication parameters for external catalogs, but the CLI did not expose a way to select this authentication type. This is needed for BigLake Iceberg REST catalog federation, where Polaris uses server-side Google credentials and the created catalog should be configured with authenticationType: GCP.

Changes

  • Adds gcp as a supported external catalog authentication type in the CLI.
  • Maps the CLI value to GCP authentication parameters for external catalog creation.
  • Adds test coverage for the CLI parsing and catalog creation path.

Validation

  • ./gradlew format compileAll
  • ./gradlew check
  • Manually validated by creating an external catalog with GCP authentication and verifying that Polaris can list namespaces through a BigLake-backed catalog.

Fixes #5177

@github-project-automation github-project-automation Bot moved this to PRs In Progress in Basic Kanban Board Jul 28, 2026
@davidchaava
davidchaava force-pushed the task/add-gcp-external-catalog-cli-auth-support branch from d2bd58f to bc47e33 Compare July 28, 2026 15:28
@davidchaava
davidchaava marked this pull request as ready for review July 28, 2026 16:42
@davidchaava

Copy link
Copy Markdown
Contributor Author

Hi Polaris maintainers,

The PR is ready for review, but CI checks have not started yet. Could someone please approve the workflow run when available?

Thanks.

Comment thread CHANGELOG.md Outdated
- Added support for `register table` overwrite semantics in the Iceberg REST catalog flow (`overwrite=true`) for internal Polaris catalogs. With overwrite enabled, existing table pointers can be updated to a new metadata location while preserving default behavior for `overwrite=false`.
- Added `REGISTER_TABLE_OVERWRITE` authorization operation mapped to `TABLE_FULL_METADATA` for deterministic overwrite authorization.
- Added Polaris Spark 4.0 client.
- Added `maintenance` support in Helm chart.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this added by this PR?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for catching this. No, this entry is not part of this PR. I have rebased the branch onto the current main branch, and this entry now comes from main rather than from this change. The only changelog entry added by this PR is the one for GCP external-catalog authentication support in the CLI.

f"Missing required argument for authentication type 'BEARER':"
f" {Argument.to_flag_name(Arguments.CATALOG_BEARER_TOKEN)}"
)
elif self.catalog_authentication_type == AuthenticationType.GCP.value:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: this elif ... GCP: pass is a no-op. validate() has no branch for IMPLICIT either and it validates fine by just falling through, so this branch can be deleted, keeping validate() to the types that actually need checks.

@davidchaava davidchaava Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the suggestion. Addressed in the updated commit: I removed the no-op GCP validation branch. GCP now falls through, consistent with IMPLICIT, while validation remains only for authentication types that require additional arguments.

Comment thread CHANGELOG.md Outdated
- Python CLI: added `--catalog-url` to specify a custom base URL for the Iceberg REST Catalog (IRC) API. Allows use with deployments that map a path (e.g. `/server1`) directly to the catalog root instead of the standard `/api/catalog`. See #4927.
- Python CLI: added `gcp` as an external catalog authentication type for Iceberg REST federation, enabling CLI creation of GCP-authenticated catalogs such as BigLake without passing Google credential secrets through command-line flags.

- Added an OpenTelemetry event listener for emitting Polaris audit events as OpenTelemetry log records.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question here

@davidchaava davidchaava Jul 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you. No, this entry is not part of this PR either. After rebasing onto the current main branch, it comes from main and is no longer included in this PR's diff. The only changelog entry introduced by this PR is the GCP CLI authentication entry.

@MonkeyCanCode

Copy link
Copy Markdown
Contributor

Hi Polaris maintainers,

The PR is ready for review, but CI checks have not started yet. Could someone please approve the workflow run when available?

Thanks.

Hello @davidchaava ,

Please rebase as your current PR has changes that are not related to this PR.

Thanks,
Yong

@gkalashyan-akv
gkalashyan-akv force-pushed the task/add-gcp-external-catalog-cli-auth-support branch from cbaf761 to a7bcca2 Compare July 29, 2026 14:50
@davidchaava
davidchaava force-pushed the task/add-gcp-external-catalog-cli-auth-support branch from a7bcca2 to 0ecde3d Compare July 29, 2026 15:04
@davidchaava
davidchaava requested a review from flyrain July 29, 2026 15:27

@flyrain flyrain left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @davidchaava !

@github-project-automation github-project-automation Bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Jul 29, 2026
@MonkeyCanCode

Copy link
Copy Markdown
Contributor

LGTM. Thanks @davidchaava .

@MonkeyCanCode
MonkeyCanCode merged commit 48ddd3d into apache:main Jul 30, 2026
25 checks passed
@github-project-automation github-project-automation Bot moved this from Ready to merge to Done in Basic Kanban Board Jul 30, 2026
@gkalashyan-akv
gkalashyan-akv deleted the task/add-gcp-external-catalog-cli-auth-support branch July 30, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support GCP authentication for external catalogs in the Polaris CLI

3 participants