|
62 | 62 | import org.apache.iceberg.rest.responses.ConfigResponse; |
63 | 63 | import org.apache.iceberg.rest.responses.ImmutableLoadCredentialsResponse; |
64 | 64 | import org.apache.iceberg.rest.responses.LoadTableResponse; |
| 65 | +import org.apache.polaris.core.admin.model.StorageConfigInfo; |
65 | 66 | import org.apache.polaris.core.auth.PolarisAuthorizer; |
66 | 67 | import org.apache.polaris.core.auth.PolarisPrincipal; |
67 | 68 | import org.apache.polaris.core.catalog.ExternalCatalogFactory; |
|
78 | 79 | import org.apache.polaris.core.rest.PolarisEndpoints; |
79 | 80 | import org.apache.polaris.core.rest.PolarisResourcePaths; |
80 | 81 | import org.apache.polaris.core.secrets.UserSecretsManager; |
81 | | -import org.apache.polaris.core.storage.StorageAccessProperty; |
82 | 82 | import org.apache.polaris.service.catalog.AccessDelegationMode; |
83 | 83 | import org.apache.polaris.service.catalog.CatalogPrefixParser; |
84 | 84 | import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; |
@@ -454,22 +454,25 @@ public Response loadTable( |
454 | 454 |
|
455 | 455 | private LoadTableResponse injectRefreshVendedCredentialProperties( |
456 | 456 | LoadTableResponse originalResponse, String credentialsEndpoint) { |
457 | | - LoadTableResponse.Builder loadResponseBuilder = |
458 | | - LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata()); |
459 | | - loadResponseBuilder.addAllConfig(originalResponse.config()); |
460 | | - loadResponseBuilder.addAllCredentials(originalResponse.credentials()); |
461 | | - loadResponseBuilder.addConfig( |
462 | | - AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint); |
463 | 457 | // Only enable credential refresh for currently supported credential types |
464 | 458 | if (originalResponse.credentials().stream() |
465 | 459 | .anyMatch( |
466 | 460 | credential -> |
467 | 461 | credential |
468 | | - .config() |
469 | | - .containsKey(StorageAccessProperty.AWS_SECRET_KEY.getPropertyName()))) { |
| 462 | + .prefix() |
| 463 | + .toLowerCase() |
| 464 | + .startsWith(StorageConfigInfo.StorageTypeEnum.S3.name().toLowerCase()))) { |
| 465 | + LoadTableResponse.Builder loadResponseBuilder = |
| 466 | + LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata()); |
| 467 | + loadResponseBuilder.addAllConfig(originalResponse.config()); |
| 468 | + loadResponseBuilder.addAllCredentials(originalResponse.credentials()); |
| 469 | + loadResponseBuilder.addConfig( |
| 470 | + AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint); |
470 | 471 | loadResponseBuilder.addConfig(AwsClientProperties.REFRESH_CREDENTIALS_ENABLED, "true"); |
| 472 | + return loadResponseBuilder.build(); |
| 473 | + } else { |
| 474 | + return originalResponse; |
471 | 475 | } |
472 | | - return loadResponseBuilder.build(); |
473 | 476 | } |
474 | 477 |
|
475 | 478 | @Override |
|
0 commit comments