PolarisBaseEntity createTestCatalog()

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;
  }