summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJhon Honce <jhonce@redhat.com>2020-02-03 16:47:52 -0700
committerJhon Honce <jhonce@redhat.com>2020-02-04 16:39:54 -0700
commit4bb55161e95d9c28928210b92b9cd2bacaa7768b (patch)
tree9aa599ce853d3265243f5c7111985d70f2092dfd
parent5092c078ec635c9f1598989b27ccf53369b3cf2b (diff)
downloadpodman-4bb55161e95d9c28928210b92b9cd2bacaa7768b.tar.gz
podman-4bb55161e95d9c28928210b92b9cd2bacaa7768b.tar.bz2
podman-4bb55161e95d9c28928210b92b9cd2bacaa7768b.zip
Add /swagger/ endpoint to serve swagger yaml to clients
The provided yaml file will describe the current Podman REST API. Signed-off-by: Jhon Honce <jhonce@redhat.com>
-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 7bb0f5481..69f04034d 100644
--- a/pkg/api/server/server.go
+++ b/pkg/api/server/server.go
@@ -113,6 +113,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,