Skip to content

Commit 7f09cc3

Browse files
committed
WIP cred vend to storage-creds-cache - step 2
1 parent d93f13b commit 7f09cc3

File tree

26 files changed

+215
-377
lines changed

26 files changed

+215
-377
lines changed

persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkPolarisMetaStoreManagerFactory.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
3232
import org.apache.polaris.core.persistence.bootstrap.RootCredentialsSet;
3333
import org.apache.polaris.core.persistence.transactional.TransactionalPersistence;
34-
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
3534

3635
/**
3736
* The implementation of Configuration interface for configuring the {@link PolarisMetaStoreManager}
@@ -47,16 +46,15 @@ public class EclipseLinkPolarisMetaStoreManagerFactory
4746

4847
@SuppressWarnings("unused") // Required by CDI
4948
protected EclipseLinkPolarisMetaStoreManagerFactory() {
50-
this(null, null, null, null);
49+
this(null, null, null);
5150
}
5251

5352
@Inject
5453
protected EclipseLinkPolarisMetaStoreManagerFactory(
5554
Clock clock,
5655
PolarisDiagnostics diagnostics,
57-
PolarisStorageIntegrationProvider storageIntegrationProvider,
5856
EclipseLinkConfiguration eclipseLinkConfiguration) {
59-
super(clock, diagnostics, storageIntegrationProvider);
57+
super(clock, diagnostics);
6058
this.eclipseLinkConfiguration = eclipseLinkConfiguration;
6159
}
6260

persistence/eclipselink/src/test/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreManagerTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
import org.junit.jupiter.params.ParameterizedTest;
4949
import org.junit.jupiter.params.provider.Arguments;
5050
import org.junit.jupiter.params.provider.MethodSource;
51-
import org.mockito.Mockito;
5251

5352
/**
5453
* Integration test for EclipseLink based metastore implementation
@@ -88,7 +87,7 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() {
8887
new PolarisEclipseLinkMetaStoreSessionImpl(
8988
store, realmContext, null, "polaris", RANDOM_SECRETS);
9089
TransactionalMetaStoreManagerImpl metaStoreManager =
91-
new TransactionalMetaStoreManagerImpl(clock, Mockito.mock());
90+
new TransactionalMetaStoreManagerImpl(clock);
9291
PolarisCallContext callCtx = new PolarisCallContext(realmContext, session, diagServices);
9392
return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
9493
}

persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ protected PrincipalSecretsGenerator secretsGenerator(
8787
}
8888

8989
protected PolarisMetaStoreManager createNewMetaStoreManager() {
90-
return new AtomicOperationMetaStoreManager(clock, storageIntegrationProvider);
90+
return new AtomicOperationMetaStoreManager(clock);
9191
}
9292

9393
private void initializeForRealm(

persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.apache.polaris.core.persistence.BasePolarisMetaStoreManagerTest;
3333
import org.apache.polaris.core.persistence.PolarisTestMetaStoreManager;
3434
import org.h2.jdbcx.JdbcConnectionPool;
35-
import org.mockito.Mockito;
3635

3736
public class AtomicMetastoreManagerWithJdbcBasePersistenceImplTest
3837
extends BasePolarisMetaStoreManagerTest {
@@ -65,8 +64,7 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() {
6564
JdbcBasePersistenceImpl basePersistence =
6665
new JdbcBasePersistenceImpl(
6766
datasourceOperations, RANDOM_SECRETS, realmContext.getRealmIdentifier(), schemaVersion);
68-
AtomicOperationMetaStoreManager metaStoreManager =
69-
new AtomicOperationMetaStoreManager(clock, Mockito.mock());
67+
AtomicOperationMetaStoreManager metaStoreManager = new AtomicOperationMetaStoreManager(clock);
7068
PolarisCallContext callCtx =
7169
new PolarisCallContext(realmContext, basePersistence, diagServices);
7270
return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);

polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
import org.apache.polaris.core.policy.PolicyEntity;
7171
import org.apache.polaris.core.policy.PolicyMappingUtil;
7272
import org.apache.polaris.core.policy.PolicyType;
73-
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
7473
import org.slf4j.Logger;
7574
import org.slf4j.LoggerFactory;
7675

@@ -84,9 +83,7 @@ public class AtomicOperationMetaStoreManager extends BaseMetaStoreManager {
8483

8584
private final Clock clock;
8685

87-
public AtomicOperationMetaStoreManager(
88-
Clock clock, PolarisStorageIntegrationProvider storageIntegrationProvider) {
89-
super(storageIntegrationProvider);
86+
public AtomicOperationMetaStoreManager(Clock clock) {
9087
this.clock = clock;
9188
}
9289

polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -18,75 +18,23 @@
1818
*/
1919
package org.apache.polaris.core.persistence;
2020

21-
import static java.util.Objects.requireNonNull;
22-
2321
import com.fasterxml.jackson.core.JsonProcessingException;
2422
import com.fasterxml.jackson.core.type.TypeReference;
2523
import com.fasterxml.jackson.databind.ObjectMapper;
2624
import jakarta.annotation.Nonnull;
2725
import java.util.Map;
28-
import java.util.Set;
2926
import org.apache.polaris.core.PolarisCallContext;
3027
import org.apache.polaris.core.entity.PolarisBaseEntity;
3128
import org.apache.polaris.core.entity.PolarisEntityConstants;
3229
import org.apache.polaris.core.entity.PolarisEntitySubType;
3330
import org.apache.polaris.core.entity.PolarisEntityType;
34-
import org.apache.polaris.core.persistence.dao.entity.BaseResult;
3531
import org.apache.polaris.core.persistence.dao.entity.GenerateEntityIdResult;
36-
import org.apache.polaris.core.persistence.dao.entity.ScopedCredentialsResult;
37-
import org.apache.polaris.core.storage.AccessConfig;
38-
import org.apache.polaris.core.storage.PolarisStorageConfigurationInfo;
39-
import org.apache.polaris.core.storage.PolarisStorageIntegration;
40-
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
4132

4233
/** Shared basic PolarisMetaStoreManager logic for transactional and non-transactional impls. */
4334
public abstract class BaseMetaStoreManager implements PolarisMetaStoreManager {
4435
/** mapper, allows to serialize/deserialize properties to/from JSON */
4536
private static final ObjectMapper MAPPER = new ObjectMapper();
4637

47-
private final PolarisStorageIntegrationProvider storageIntegrationProvider;
48-
49-
public BaseMetaStoreManager(PolarisStorageIntegrationProvider storageIntegrationProvider) {
50-
this.storageIntegrationProvider = storageIntegrationProvider;
51-
}
52-
53-
/** {@inheritDoc} */
54-
@Override
55-
public @Nonnull ScopedCredentialsResult getSubscopedCredsForEntity(
56-
@Nonnull PolarisCallContext callCtx,
57-
@Nonnull PolarisStorageConfigurationInfo storageConfigurationInfo,
58-
boolean allowListOperation,
59-
@Nonnull Set<String> allowedReadLocations,
60-
@Nonnull Set<String> allowedWriteLocations) {
61-
62-
// get meta store session we should be using
63-
callCtx
64-
.getDiagServices()
65-
.check(
66-
!allowedReadLocations.isEmpty() || !allowedWriteLocations.isEmpty(),
67-
"allowed_locations_to_subscope_is_required");
68-
69-
// get storage integration
70-
PolarisStorageIntegration<PolarisStorageConfigurationInfo> storageIntegration =
71-
storageIntegrationProvider.getStorageIntegrationForConfig(storageConfigurationInfo);
72-
73-
// cannot be null
74-
requireNonNull(storageIntegration);
75-
76-
try {
77-
AccessConfig accessConfig =
78-
storageIntegration.getSubscopedCreds(
79-
callCtx.getRealmConfig(),
80-
allowListOperation,
81-
allowedReadLocations,
82-
allowedWriteLocations);
83-
return new ScopedCredentialsResult(accessConfig);
84-
} catch (Exception ex) {
85-
return new ScopedCredentialsResult(
86-
BaseResult.ReturnStatus.SUBSCOPE_CREDS_ERROR, ex.getMessage());
87-
}
88-
}
89-
9038
/**
9139
* Given the internal property as a map of key/value pairs, serialize it to a String
9240
*

polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
3939
import org.apache.polaris.core.persistence.transactional.TransactionalMetaStoreManagerImpl;
4040
import org.apache.polaris.core.persistence.transactional.TransactionalPersistence;
41-
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
4241
import org.slf4j.Logger;
4342
import org.slf4j.LoggerFactory;
4443

@@ -54,20 +53,16 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType>
5453
final Map<String, EntityCache> entityCacheMap = new HashMap<>();
5554
final Map<String, StoreType> backingStoreMap = new HashMap<>();
5655
final Map<String, Supplier<TransactionalPersistence>> sessionSupplierMap = new HashMap<>();
57-
protected final PolarisStorageIntegrationProvider storageIntegrationProvider;
5856
private final Clock clock;
5957
private final PolarisDiagnostics diagnostics;
6058

6159
private static final Logger LOGGER =
6260
LoggerFactory.getLogger(LocalPolarisMetaStoreManagerFactory.class);
6361

6462
protected LocalPolarisMetaStoreManagerFactory(
65-
@Nonnull Clock clock,
66-
@Nonnull PolarisDiagnostics diagnostics,
67-
@Nonnull PolarisStorageIntegrationProvider storageIntegrationProvider) {
63+
@Nonnull Clock clock, @Nonnull PolarisDiagnostics diagnostics) {
6864
this.clock = clock;
6965
this.diagnostics = diagnostics;
70-
this.storageIntegrationProvider = storageIntegrationProvider;
7166
}
7267

7368
protected abstract StoreType createBackingStore(@Nonnull PolarisDiagnostics diagnostics);
@@ -93,7 +88,7 @@ protected PrincipalSecretsGenerator secretsGenerator(
9388
* into the existing realm-based setup flow.
9489
*/
9590
protected PolarisMetaStoreManager createNewMetaStoreManager(Clock clock) {
96-
return new TransactionalMetaStoreManagerImpl(clock, storageIntegrationProvider);
91+
return new TransactionalMetaStoreManagerImpl(clock);
9792
}
9893

9994
private void initializeForRealm(

polaris-core/src/main/java/org/apache/polaris/core/persistence/PolarisMetaStoreManager.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,13 @@
4949
import org.apache.polaris.core.persistence.dao.entity.ResolvedEntityResult;
5050
import org.apache.polaris.core.persistence.pagination.PageToken;
5151
import org.apache.polaris.core.policy.PolarisPolicyMappingManager;
52-
import org.apache.polaris.core.storage.PolarisCredentialVendor;
5352

5453
/**
5554
* Polaris Metastore Manager manages all Polaris entities and associated grant records metadata for
5655
* authorization. It uses the underlying persistent metastore to store and retrieve Polaris metadata
5756
*/
5857
public interface PolarisMetaStoreManager
59-
extends PolarisSecretsManager,
60-
PolarisGrantManager,
61-
PolarisCredentialVendor,
62-
PolarisPolicyMappingManager {
58+
extends PolarisSecretsManager, PolarisGrantManager, PolarisPolicyMappingManager {
6359

6460
/**
6561
* Bootstrap the Polaris service, creating the root catalog, root principal, and associated

polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.List;
2626
import java.util.Map;
2727
import java.util.Optional;
28-
import java.util.Set;
2928
import org.apache.polaris.core.PolarisCallContext;
3029
import org.apache.polaris.core.entity.LocationBasedEntity;
3130
import org.apache.polaris.core.entity.PolarisBaseEntity;
@@ -51,11 +50,9 @@
5150
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
5251
import org.apache.polaris.core.persistence.dao.entity.PrivilegeResult;
5352
import org.apache.polaris.core.persistence.dao.entity.ResolvedEntityResult;
54-
import org.apache.polaris.core.persistence.dao.entity.ScopedCredentialsResult;
5553
import org.apache.polaris.core.persistence.pagination.PageToken;
5654
import org.apache.polaris.core.policy.PolicyEntity;
5755
import org.apache.polaris.core.policy.PolicyType;
58-
import org.apache.polaris.core.storage.PolarisStorageConfigurationInfo;
5956

6057
/**
6158
* Wraps an existing impl of PolarisMetaStoreManager and delegates expected "read" operations
@@ -330,21 +327,6 @@ public EntitiesResult loadTasks(
330327
return null;
331328
}
332329

333-
@Override
334-
public ScopedCredentialsResult getSubscopedCredsForEntity(
335-
@Nonnull PolarisCallContext callCtx,
336-
@Nonnull PolarisStorageConfigurationInfo storageConfigurationInfo,
337-
boolean allowListOperation,
338-
@Nonnull Set<String> allowedReadLocations,
339-
@Nonnull Set<String> allowedWriteLocations) {
340-
return delegate.getSubscopedCredsForEntity(
341-
callCtx,
342-
storageConfigurationInfo,
343-
allowListOperation,
344-
allowedReadLocations,
345-
allowedWriteLocations);
346-
}
347-
348330
@Override
349331
public ResolvedEntityResult loadResolvedEntityById(
350332
@Nonnull PolarisCallContext callCtx,

polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
import org.apache.polaris.core.policy.PolicyEntity;
7676
import org.apache.polaris.core.policy.PolicyMappingUtil;
7777
import org.apache.polaris.core.policy.PolicyType;
78-
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
7978
import org.slf4j.Logger;
8079
import org.slf4j.LoggerFactory;
8180

@@ -90,9 +89,7 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager {
9089

9190
private final Clock clock;
9291

93-
public TransactionalMetaStoreManagerImpl(
94-
Clock clock, PolarisStorageIntegrationProvider storageIntegrationProvider) {
95-
super(storageIntegrationProvider);
92+
public TransactionalMetaStoreManagerImpl(Clock clock) {
9693
this.clock = clock;
9794
}
9895

0 commit comments

Comments
 (0)