|
60 | 60 | import org.apache.iceberg.rest.responses.ConfigResponse; |
61 | 61 | import org.apache.iceberg.rest.responses.ImmutableLoadCredentialsResponse; |
62 | 62 | import org.apache.iceberg.rest.responses.LoadTableResponse; |
| 63 | +import org.apache.polaris.core.admin.model.StorageConfigInfo; |
63 | 64 | import org.apache.polaris.core.auth.AuthenticatedPolarisPrincipal; |
64 | 65 | import org.apache.polaris.core.auth.PolarisAuthorizer; |
65 | 66 | import org.apache.polaris.core.context.CallContext; |
|
74 | 75 | import org.apache.polaris.core.rest.PolarisEndpoints; |
75 | 76 | import org.apache.polaris.core.rest.PolarisResourcePaths; |
76 | 77 | import org.apache.polaris.core.secrets.UserSecretsManager; |
77 | | -import org.apache.polaris.core.storage.StorageAccessProperty; |
78 | 78 | import org.apache.polaris.service.catalog.AccessDelegationMode; |
79 | 79 | import org.apache.polaris.service.catalog.CatalogPrefixParser; |
80 | 80 | import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; |
@@ -444,22 +444,25 @@ public Response loadTable( |
444 | 444 |
|
445 | 445 | private LoadTableResponse injectRefreshVendedCredentialProperties( |
446 | 446 | LoadTableResponse originalResponse, String credentialsEndpoint) { |
447 | | - LoadTableResponse.Builder loadResponseBuilder = |
448 | | - LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata()); |
449 | | - loadResponseBuilder.addAllConfig(originalResponse.config()); |
450 | | - loadResponseBuilder.addAllCredentials(originalResponse.credentials()); |
451 | | - loadResponseBuilder.addConfig( |
452 | | - AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint); |
453 | 447 | // Only enable credential refresh for currently supported credential types |
454 | 448 | if (originalResponse.credentials().stream() |
455 | 449 | .anyMatch( |
456 | 450 | credential -> |
457 | 451 | credential |
458 | | - .config() |
459 | | - .containsKey(StorageAccessProperty.AWS_SECRET_KEY.getPropertyName()))) { |
| 452 | + .prefix() |
| 453 | + .toLowerCase() |
| 454 | + .startsWith(StorageConfigInfo.StorageTypeEnum.S3.name().toLowerCase()))) { |
| 455 | + LoadTableResponse.Builder loadResponseBuilder = |
| 456 | + LoadTableResponse.builder().withTableMetadata(originalResponse.tableMetadata()); |
| 457 | + loadResponseBuilder.addAllConfig(originalResponse.config()); |
| 458 | + loadResponseBuilder.addAllCredentials(originalResponse.credentials()); |
| 459 | + loadResponseBuilder.addConfig( |
| 460 | + AwsClientProperties.REFRESH_CREDENTIALS_ENDPOINT, credentialsEndpoint); |
460 | 461 | loadResponseBuilder.addConfig(AwsClientProperties.REFRESH_CREDENTIALS_ENABLED, "true"); |
| 462 | + return loadResponseBuilder.build(); |
| 463 | + } else { |
| 464 | + return originalResponse; |
461 | 465 | } |
462 | | - return loadResponseBuilder.build(); |
463 | 466 | } |
464 | 467 |
|
465 | 468 | @Override |
|
0 commit comments