in polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java [1252:1362]
PolarisBaseEntity createTestCatalog(String catalogName) {
// create new catalog
PolarisBaseEntity catalog =
new PolarisBaseEntity(
PolarisEntityConstants.getNullId(),
polarisMetaStoreManager.generateNewEntityId(this.polarisCallContext).getId(),
PolarisEntityType.CATALOG,
PolarisEntitySubType.NULL_SUBTYPE,
PolarisEntityConstants.getRootEntityId(),
catalogName);
CreateCatalogResult catalogCreated =
polarisMetaStoreManager.createCatalog(this.polarisCallContext, catalog, List.of());
Assertions.assertThat(catalogCreated).isNotNull();
catalog = catalogCreated.getCatalog();
// now create all objects
PolarisBaseEntity N1 = this.createEntity(List.of(catalog), PolarisEntityType.NAMESPACE, "N1");
PolarisBaseEntity N1_N2 =
this.createEntity(List.of(catalog, N1), PolarisEntityType.NAMESPACE, "N2");
this.createEntity(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T1");
this.createEntity(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T2");
this.createEntity(
List.of(catalog, N1, N1_N2),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_VIEW,
"V1");
PolarisBaseEntity N1_N3 =
this.createEntity(List.of(catalog, N1), PolarisEntityType.NAMESPACE, "N3");
this.createEntity(
List.of(catalog, N1, N1_N3),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T3");
this.createEntity(
List.of(catalog, N1, N1_N3),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_VIEW,
"V2");
this.createEntity(
List.of(catalog, N1),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T4");
this.createEntity(List.of(catalog, N1), PolarisEntityType.NAMESPACE, "N4");
PolarisBaseEntity N5 = this.createEntity(List.of(catalog), PolarisEntityType.NAMESPACE, "N5");
PolarisBaseEntity N5_N6 =
this.createEntity(List.of(catalog, N5), PolarisEntityType.NAMESPACE, "N6");
PolarisBaseEntity N5_N6_T5 =
this.createEntity(
List.of(catalog, N5, N5_N6),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T5");
this.createEntity(
List.of(catalog, N5, N5_N6),
PolarisEntityType.TABLE_LIKE,
PolarisEntitySubType.ICEBERG_TABLE,
"T6");
PolarisBaseEntity N7 = this.createEntity(List.of(catalog), PolarisEntityType.NAMESPACE, "N7");
PolarisBaseEntity N7_N8 =
this.createEntity(List.of(catalog, N7), PolarisEntityType.NAMESPACE, "N8");
this.createPolicy(List.of(catalog, N7, N7_N8), "POL1", PredefinedPolicyTypes.DATA_COMPACTION);
this.createPolicy(
List.of(catalog, N7, N7_N8), "POL2", PredefinedPolicyTypes.METADATA_COMPACTION);
this.createPolicy(List.of(catalog, N7), "POL3", PredefinedPolicyTypes.SNAPSHOT_EXPIRY);
// the two catalog roles
PolarisBaseEntity R1 =
this.createEntity(List.of(catalog), PolarisEntityType.CATALOG_ROLE, "R1");
PolarisBaseEntity R2 =
this.createEntity(List.of(catalog), PolarisEntityType.CATALOG_ROLE, "R2");
// perform the grants to R1
grantPrivilege(R1, List.of(catalog, N1, N1_N2), N1_N2, PolarisPrivilege.TABLE_READ_DATA);
grantPrivilege(R1, List.of(catalog), catalog, PolarisPrivilege.VIEW_CREATE);
grantPrivilege(R1, List.of(catalog, N5), N5, PolarisPrivilege.TABLE_LIST);
grantPrivilege(R1, List.of(catalog, N1, N5_N6), N5_N6_T5, PolarisPrivilege.TABLE_DROP);
// perform the grants to R2
grantPrivilege(R2, List.of(catalog, N5), N5, PolarisPrivilege.TABLE_WRITE_DATA);
grantPrivilege(R2, List.of(catalog), catalog, PolarisPrivilege.VIEW_LIST);
// now create two principal roles
PolarisBaseEntity PR1 = this.createEntity(null, PolarisEntityType.PRINCIPAL_ROLE, "PR1");
PolarisBaseEntity PR2 = this.createEntity(null, PolarisEntityType.PRINCIPAL_ROLE, "PR2");
// assign R1 and R2 to PR1
grantToGrantee(catalog, R1, PR1, PolarisPrivilege.CATALOG_ROLE_USAGE);
grantToGrantee(catalog, R2, PR1, PolarisPrivilege.CATALOG_ROLE_USAGE);
grantToGrantee(catalog, R2, PR2, PolarisPrivilege.CATALOG_ROLE_USAGE);
// also create two new principals
PolarisBaseEntity P1 = this.createPrincipal("P1");
PolarisBaseEntity P2 = this.createPrincipal("P2");
// assign PR1 and PR2 to this principal
grantToGrantee(null, PR1, P1, PolarisPrivilege.PRINCIPAL_ROLE_USAGE);
grantToGrantee(null, PR2, P1, PolarisPrivilege.PRINCIPAL_ROLE_USAGE);
grantToGrantee(null, PR2, P2, PolarisPrivilege.PRINCIPAL_ROLE_USAGE);
return catalog;
}