You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polaris.apache.org by ad...@apache.org on 2026/10/29 20:09:25 UTC

(polaris) branch main updated: Add missing credentials endpoint in /config (#5850)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new abd9e5772d Add missing credentials endpoint in /config (#5850)
abd9e5772d is described below

commit abd9e5772d2ec1fb979a2df9786ad557adb4aad9
Author: Nándor Kollár <na...@users.noreply.github.com>
AuthorDate: Thu Oct 29 21:09:19 2026 +0100

    Add missing credentials endpoint in /config (#5850)
---
 CHANGELOG.md                                                          | 4 ++++
 plugins/spark/v3.5/regtests/suites/spark_sql_delta.ref                | 2 +-
 plugins/spark/v3.5/regtests/suites/spark_sql_hudi.ref                 | 2 +-
 regtests/t_spark_sql/ref/spark_sql_azure_blob.sh.ref                  | 2 +-
 regtests/t_spark_sql/ref/spark_sql_azure_dfs.sh.ref                   | 2 +-
 regtests/t_spark_sql/ref/spark_sql_basic.sh.ref                       | 2 +-
 regtests/t_spark_sql/ref/spark_sql_gcp.sh.ref                         | 2 +-
 regtests/t_spark_sql/ref/spark_sql_s3.sh.ref                          | 2 +-
 regtests/t_spark_sql/ref/spark_sql_views.sh.ref                       | 2 +-
 .../polaris/service/catalog/iceberg/IcebergRestConfigEndpoints.java   | 1 +
 .../org/apache/polaris/service/catalog/iceberg/GetConfigTest.java     | 1 +
 11 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4fc70c2be9..cfc8cc7465 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -140,6 +140,10 @@ request adding CHANGELOG notes for breaking (!) changes and possibly other secti
 
 ### Fixes
 
+- The Iceberg REST `/config` response now advertises the
+  `GET /v1/{prefix}/namespaces/{namespace}/tables/{table}/credentials` endpoint, which Polaris
+  already served. Clients that check advertised endpoints before refreshing vended credentials can
+  now use it.
 - Helm chart: `helm test` now runs the chart's connection test. Previously the test was left out of
   the packaged chart, so `helm test` ran no tests.
 - NoSQL commits resend unresolved object writes on retry, preventing successful commits from
diff --git a/plugins/spark/v3.5/regtests/suites/spark_sql_delta.ref b/plugins/spark/v3.5/regtests/suites/spark_sql_delta.ref
index 79f4be779a..68845ac325 100755
--- a/plugins/spark/v3.5/regtests/suites/spark_sql_delta.ref
+++ b/plugins/spark/v3.5/regtests/suites/spark_sql_delta.ref
@@ -1,4 +1,4 @@
-{"defaults":{"default-base-location":"file:///tmp/spark_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","GET /v1/{prefix}/namespaces/{namespace}/tables/ [...]
+{"defaults":{"default-base-location":"file:///tmp/spark_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","GET /v1/{prefix}/namespaces/{namespace}/tables/ [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> create namespace db1;
diff --git a/plugins/spark/v3.5/regtests/suites/spark_sql_hudi.ref b/plugins/spark/v3.5/regtests/suites/spark_sql_hudi.ref
index 2889ab613f..6e45d90bb0 100644
--- a/plugins/spark/v3.5/regtests/suites/spark_sql_hudi.ref
+++ b/plugins/spark/v3.5/regtests/suites/spark_sql_hudi.ref
@@ -1,4 +1,4 @@
-{"defaults":{"default-base-location":"file:///tmp/spark_hudi_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_hudi_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","GET /v1/{prefix}/namespaces/{namespace}/t [...]
+{"defaults":{"default-base-location":"file:///tmp/spark_hudi_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_hudi_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","GET /v1/{prefix}/namespaces/{namespace}/t [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> create namespace hudi_db1;
diff --git a/regtests/t_spark_sql/ref/spark_sql_azure_blob.sh.ref b/regtests/t_spark_sql/ref/spark_sql_azure_blob.sh.ref
index 6dd38084d9..9b8d87abf3 100755
--- a/regtests/t_spark_sql/ref/spark_sql_azure_blob.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_azure_blob.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"abfss://polaris-container@polarisadls.blob.core.windows.net/polaris-test/spark_sql_blob_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_azure_blob_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namesp [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"abfss://polaris-container@polarisadls.blob.core.windows.net/polaris-test/spark_sql_blob_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_azure_blob_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namesp [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/regtests/t_spark_sql/ref/spark_sql_azure_dfs.sh.ref b/regtests/t_spark_sql/ref/spark_sql_azure_dfs.sh.ref
index 2769981b45..2233b5b748 100755
--- a/regtests/t_spark_sql/ref/spark_sql_azure_dfs.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_azure_dfs.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"abfss://polaris-container@polarisadls.dfs.core.windows.net/polaris-test/spark_sql_dfs_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_azure_dfs_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespace [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"abfss://polaris-container@polarisadls.dfs.core.windows.net/polaris-test/spark_sql_dfs_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_azure_dfs_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespace [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/regtests/t_spark_sql/ref/spark_sql_basic.sh.ref b/regtests/t_spark_sql/ref/spark_sql_basic.sh.ref
index 081ff27460..ae454ef397 100755
--- a/regtests/t_spark_sql/ref/spark_sql_basic.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_basic.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"file:///tmp/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_basic_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","G [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"file:///tmp/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_basic_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","G [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/regtests/t_spark_sql/ref/spark_sql_gcp.sh.ref b/regtests/t_spark_sql/ref/spark_sql_gcp.sh.ref
index 60e35816d9..8fd70a978a 100755
--- a/regtests/t_spark_sql/ref/spark_sql_gcp.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_gcp.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"gs://polaris-test1/polaris_test/spark_sql_gcp_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_gcp_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{n [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"gs://polaris-test1/polaris_test/spark_sql_gcp_catalog/"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_gcp_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{n [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/regtests/t_spark_sql/ref/spark_sql_s3.sh.ref b/regtests/t_spark_sql/ref/spark_sql_s3.sh.ref
index 76afb42a11..1e414bcea3 100755
--- a/regtests/t_spark_sql/ref/spark_sql_s3.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_s3.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"s3://test_bucket/polaris_test/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_s3_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namesp [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"s3://test_bucket/polaris_test/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_s3_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namesp [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/regtests/t_spark_sql/ref/spark_sql_views.sh.ref b/regtests/t_spark_sql/ref/spark_sql_views.sh.ref
index 2827c3a437..032a599da0 100755
--- a/regtests/t_spark_sql/ref/spark_sql_views.sh.ref
+++ b/regtests/t_spark_sql/ref/spark_sql_views.sh.ref
@@ -1,4 +1,4 @@
-{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"file:///tmp/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_views_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","G [...]
+{"defaults":{"drop-with-purge.enabled":"true","default-base-location":"file:///tmp/spark_sql_s3_catalog"},"overrides":{"namespace-separator":"%1F","prefix":"spark_sql_views_catalog"},"endpoints":["GET /v1/{prefix}/namespaces","GET /v1/{prefix}/namespaces/{namespace}","HEAD /v1/{prefix}/namespaces/{namespace}","POST /v1/{prefix}/namespaces","POST /v1/{prefix}/namespaces/{namespace}/properties","DELETE /v1/{prefix}/namespaces/{namespace}","GET /v1/{prefix}/namespaces/{namespace}/tables","G [...]
 Catalog created
 spark-sql (default)> use polaris;
 spark-sql ()> show namespaces;
diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigEndpoints.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigEndpoints.java
index a91a1e0b7e..3b82bc2add 100644
--- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigEndpoints.java
+++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigEndpoints.java
@@ -46,6 +46,7 @@ public class IcebergRestConfigEndpoints implements CatalogConfigEndpointContribu
           .add(Endpoint.V1_REGISTER_TABLE)
           .add(Endpoint.V1_REPORT_METRICS)
           .add(Endpoint.V1_COMMIT_TRANSACTION)
+          .add(Endpoint.V1_TABLE_CREDENTIALS)
           .build();
 
   @Override
diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/GetConfigTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/GetConfigTest.java
index cfccbc65fc..5d3d6fca53 100644
--- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/GetConfigTest.java
+++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/GetConfigTest.java
@@ -48,6 +48,7 @@ public class GetConfigTest {
     ConfigResponse configResponse = getConfig(Map.of("ENABLE_GENERIC_TABLES", enableGenericTable));
 
     assertThat(configResponse.endpoints()).contains(PolicyEndpoints.V1_CREATE_POLICY);
+    assertThat(configResponse.endpoints()).contains(Endpoint.V1_TABLE_CREDENTIALS);
     assertEndpointOrder(configResponse, enableGenericTable);
     assertGenericTableEndpoints(configResponse, enableGenericTable);
   }