feat(storage): inline polaris.storage.name overrides for namespace/table#4023
feat(storage): inline polaris.storage.name overrides for namespace/table#4023sririshindra wants to merge 4 commits intoapache:mainfrom
Conversation
…nd reserved property allowlist Phase 0 of inline storage configuration spec: - Add StorageNameValidator with format validation (alphanumeric + hyphens + underscores, 1-128 chars) and normalizeBlankToNull utility. - Add PolarisStorageConfigurationInfo.withStorageName() static helper that clones a config with only storageName replaced, preserving all other fields across all four storage types (AWS, GCS, Azure, File). - Allowlist polaris.storage.name in ReservedProperties so it passes through reserved property filtering. - Add unit tests for validation, normalization, and field preservation round-trips.
…ierarchy lookup Combines namespace/table override implementation with the hierarchy lookup dedupe and aligned tests.
|
This should definitely go behind a feature flag since there's currently no way to limit what a user can put in I hate to be adding to the feature flag proliferation in polaris, but maybe there should be a way to configure at what level override is allowed to happen. I can see an admin wanting to allow override on namespace level, but not on table level since |
Thanks for the review, @tokoko! I'll go ahead and put this behind a feature flag. I intentionally kept authorization out of scope for this phase, but we can definitely address integrating |
8cdf152 to
7e84dce
Compare
Summary
This PR adds inline storage-name overrides for namespaces and tables using the polaris.storage.name property, so credential vending can select named credentials per entity without introducing new management APIs.
It also refactors hierarchy lookup logic to remove duplication and adds focused test coverage for override behavior and credential vending.
Why this change is needed
Today, catalog-level storage credentials are often too coarse for multi-tenant or team-isolated workloads. This change enables namespace/table-scoped credential selection by storing an inline override and resolving it through the existing hierarchy at runtime.
What changed
Behavioral notes
Testing
Reviewer notes
Checklist