[Subtask] feat(iceberg-rest-server): expose a catalog-listing endpoint for engine-side discovery
- 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
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