aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-02-14 00:32:26 +0100
committerGitHub <noreply@github.com>2020-02-14 00:32:26 +0100
commit1b290f995b0dec0d9ac58ddba93f8b6b24dc6d0a (patch)
tree0b60453f00a9d3eb5c7c3a2407e52c0daaf6ef6c
parent3e0475eb8891499630d0eefb9b133a1356e7abac (diff)
parent4bb55161e95d9c28928210b92b9cd2bacaa7768b (diff)
downloadpodman-1b290f995b0dec0d9ac58ddba93f8b6b24dc6d0a.tar.gz
podman-1b290f995b0dec0d9ac58ddba93f8b6b24dc6d0a.tar.bz2
podman-1b290f995b0dec0d9ac58ddba93f8b6b24dc6d0a.zip
Merge pull request #5074 from jwhonce/wip/swagger_endpoint
Add /swagger/ endpoint to serve swagger yaml to clients
-rw-r--r--pkg/api/server/register_swagger.go26
-rw-r--r--pkg/api/server/server.go1
2 files changed, 27 insertions, 0 deletions
diff --git a/pkg/api/server/register_swagger.go b/pkg/api/server/register_swagger.go
new file mode 100644
index 000000000..5564ec096
--- /dev/null
+++ b/pkg/api/server/register_swagger.go
@@ -0,0 +1,26 @@
+package server
+
+import (
+ "net/http"
+ "os"
+
+ "github.com/gorilla/mux"
+)
+
+// DefaultPodmanSwaggerSpec provides the default path to the podman swagger spec file
+const DefaultPodmanSwaggerSpec = "/usr/share/containers/podman/swagger.yaml"
+
+// RegisterSwaggerHandlers maps the swagger endpoint for the server
+func (s *APIServer) RegisterSwaggerHandlers(r *mux.Router) error {
+ // This handler does _*NOT*_ provide an UI rather just a swagger spec that an UI could render
+ r.PathPrefix("/swagger/").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ path := DefaultPodmanSwaggerSpec
+ if p, found := os.LookupEnv("PODMAN_SWAGGER_SPEC"); found {
+ path = p
+ }
+ w.Header().Set("Content-Type", "text/yaml")
+
+ http.ServeFile(w, r, path)
+ })
+ return nil
+}
diff --git a/pkg/api/server/server.go b/pkg/api/server/server.go
index 87b11b716..2c709bc59 100644
--- a/pkg/api/server/server.go
+++ b/pkg/api/server/server.go
@@ -114,6 +114,7 @@ func newServer(runtime *libpod.Runtime, duration time.Duration, listener *net.Li
server.registerPingHandlers,
server.RegisterPluginsHandlers,
server.registerPodsHandlers,
+ server.RegisterSwaggerHandlers,
server.RegisterSwarmHandlers,
server.registerSystemHandlers,
server.registerVersionHandlers,