fix(landscape): accept an empty run body; pin the builder's Alpine release
POST /landscape/runs documents an optional body, but DecodeJSON returned io.EOF on an empty one and the handler turned that into 400 — breaking the most common call, an all-defaults run. decodeRunRequest now treats io.EOF as the zero request; a malformed body is still 400. The Dockerfile's Alpine ABI coupling was enforced only by a comment: a floating golang:1.26-alpine builder against a pinned alpine:3.24 runtime would build green and die at startup on a libgdal soname mismatch as soon as the Go image rolls forward. Both stages are now pinned to 3.24. Also: the route-mount test walks the router so all six routes are asserted (GET /slots and GET /results included), and the spec documents the 404 those two return when migration 00011's seeded groups are absent. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -761,6 +761,10 @@ paths:
|
||||
Every leaf input group of the computation graph, in graph order, with
|
||||
the dataset currently filling it (any status) or `null` when nothing
|
||||
has been uploaded yet.
|
||||
|
||||
Yields 404 when a slot's dataset group is missing — that means
|
||||
migration `00011_landscape.sql`, which seeds the groups, has not been
|
||||
applied to this database.
|
||||
responses:
|
||||
"200":
|
||||
description: The input slots
|
||||
@@ -769,6 +773,7 @@ paths:
|
||||
schema:
|
||||
type: array
|
||||
items: { $ref: "#/components/schemas/LandscapeSlot" }
|
||||
"404": { $ref: "#/components/responses/NotFound" }
|
||||
|
||||
/landscape/slots/{code}:
|
||||
parameters:
|
||||
@@ -842,6 +847,9 @@ paths:
|
||||
Validates the params and overrides, persists the run with one pending
|
||||
node per graph node, and publishes the worker job. Returns 202: the
|
||||
graph is executed asynchronously, poll `GET /landscape/runs/{id}`.
|
||||
|
||||
Every field has a default, so the body is optional: sending no body at
|
||||
all (or `{}`) starts a default incremental run.
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
@@ -879,6 +887,10 @@ paths:
|
||||
One entry per output group of the graph with its freshest `ready`
|
||||
raster, the COG URL to render it, and the group's SLD URL when one has
|
||||
been uploaded. `latest` is `null` while nothing has been computed.
|
||||
|
||||
Yields 404 when an output group is missing — that means migration
|
||||
`00011_landscape.sql`, which seeds the groups, has not been applied to
|
||||
this database.
|
||||
responses:
|
||||
"200":
|
||||
description: The result layers
|
||||
@@ -887,6 +899,7 @@ paths:
|
||||
schema:
|
||||
type: array
|
||||
items: { $ref: "#/components/schemas/LandscapeResult" }
|
||||
"404": { $ref: "#/components/responses/NotFound" }
|
||||
|
||||
components:
|
||||
parameters:
|
||||
|
||||
Reference in New Issue
Block a user