diff options
author | Jhon Honce <jhonce@redhat.com> | 2020-02-03 11:57:54 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2020-02-03 11:57:54 -0700 |
commit | 4d301c8c4f3301bc99a55752b387ef4f7be9de5f (patch) | |
tree | 1f78b3b4d59f661947fc012de503622c44bb556e /pkg/api/handlers/ping.go | |
parent | 23f795786224c27f737e9043e9d513f54fa35ba8 (diff) | |
download | podman-4d301c8c4f3301bc99a55752b387ef4f7be9de5f.tar.gz podman-4d301c8c4f3301bc99a55752b387ef4f7be9de5f.tar.bz2 podman-4d301c8c4f3301bc99a55752b387ef4f7be9de5f.zip |
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 <jhonce@redhat.com>
Diffstat (limited to 'pkg/api/handlers/ping.go')
-rw-r--r-- | pkg/api/handlers/ping.go | 30 |
1 files changed, 30 insertions, 0 deletions
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") +} |