From 4d301c8c4f3301bc99a55752b387ef4f7be9de5f Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Mon, 3 Feb 2020 11:57:54 -0700 Subject: Update /_ping support * Add swagger support and documentation * Promote handler as there can only ever be one * Update swagger tags Between verbs and paths there are four endpoints for /_ping. I've attempted to document them well without four copies of the details. Time will tell. Clients will use the headers `Libpod-API-Version` and `Libpod-Buildha-Version` to determine if they are connecting to a Podman service or some other compatible engine. Client calls GET(/_ping): * VARLINK engines will fail with error message * Compatible engines will return 200 without Libpod headers * Podman engines will return 200 and Libpod headers Signed-off-by: Jhon Honce --- pkg/api/handlers/ping.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pkg/api/handlers/ping.go (limited to 'pkg/api/handlers/ping.go') diff --git a/pkg/api/handlers/ping.go b/pkg/api/handlers/ping.go new file mode 100644 index 000000000..d41da60f3 --- /dev/null +++ b/pkg/api/handlers/ping.go @@ -0,0 +1,30 @@ +package handlers + +import ( + "fmt" + "net/http" + + "github.com/containers/buildah" +) + +// Ping returns headers to client about the service +// +// This handler must always be the same for the compatibility and libpod URL trees! +// Clients will use the Header availability to test which backend engine is in use. +func Ping(w http.ResponseWriter, r *http.Request) { + w.Header().Set("API-Version", DefaultApiVersion) + w.Header().Set("BuildKit-Version", "") + w.Header().Set("Docker-Experimental", "true") + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Pragma", "no-cache") + + // API-Version and Libpod-API-Version may not always be equal + w.Header().Set("Libpod-API-Version", DefaultApiVersion) + w.Header().Set("Libpod-Buildha-Version", buildah.Version) + w.WriteHeader(http.StatusOK) + + if r.Method == http.MethodGet { + fmt.Fprint(w, "OK") + } + fmt.Fprint(w, "\n") +} -- cgit v1.2.3-54-g00ecf