apache / apache/gravitino

[Subtask] feat(iceberg-rest-server): expose a catalog-listing endpoint for engine-side discovery

Open
#12,524 0 comments 0 reactions 0 assignees View on GitHub
subtask
Dominant language
Java
Stars
3.2k
Forks
935
Avg merge
1d 17h
Merged PRs (30d)
339

Description

### Describe the subtask

Add a Gravitino-private management endpoint on the Iceberg REST server, outside the Iceberg REST specification's `/v1/` namespace, so engines can ask the server which catalogs it serves:

`GET {iceberg-rest-base}/gravitino/v1/management/catalogs`

```json
{
"catalogs": [
{ "name": "iceberg_prod" },
{ "name": "iceberg_audit" }
]
}
```

- New JAX-RS operations class under `iceberg/iceberg-rest-server/src/main/java/org/apache/gravitino/iceberg/service/rest/`, alongside `IcebergConfigOperations`. `management` is the scope for further Gravitino management APIs on this server.
- Returned names must be exactly what this server accepts as the `warehouse` parameter, under both `static-config-provider` and `dynamic-config-provider` — they equal Gravitino catalog names only in the dynamic case, which is the whole reason the endpoint exists.
- Names only in V1. Per-catalog client configuration already arrives via `GET /v1/config?warehouse=`; because JSON objects extend compatibly, per-catalog fields (e.g. Trino's credential-vending flag) can be added later without a breaking change.
- Unit tests, and document the endpoint in `docs/iceberg-rest-service.md`.

Design doc: https://github.com/apache/gravitino/blob/main/design-docs/spark-rest-catalog-registration.md

### Parent issue

https://github.com/apache/gravitino/issues/11064

Contributor guide

Open the contributing guide

Research direction

Start with the existing IcebergConfigOperations class under iceberg/iceberg-rest-server/src/main/java/org/apache/gravitino/iceberg/service/rest/ and inspect how static-config-provider and dynamic-config-provider resolve warehouse names. Add unit tests for GET /gravitino/v1/management/catalogs, verifying the exact accepted names for both providers, and document the endpoint in docs/iceberg-rest-service.md. Done means the response contains the required catalog-name objects without changing the /v1/ specification namespace.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend, documentation
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.