summaryrefslogtreecommitdiff
path: root/pkg/api/handlers/libpod/swagger.go
diff options
context:
space:
mode:
authorBrent Baude <bbaude@redhat.com>2020-03-18 14:33:39 -0500
committerBrent Baude <bbaude@redhat.com>2020-03-18 14:34:14 -0500
commit52c835053007c5991903e778b5dbf64a25aea0a4 (patch)
tree63037289a6d3d4f9fd79e9d8323bc1989fea043c /pkg/api/handlers/libpod/swagger.go
parent45e7cbfef65d0379af19264c5fa90e1ae9ccb74a (diff)
downloadpodman-52c835053007c5991903e778b5dbf64a25aea0a4.tar.gz
podman-52c835053007c5991903e778b5dbf64a25aea0a4.tar.bz2
podman-52c835053007c5991903e778b5dbf64a25aea0a4.zip
serve swagger when present
register the swagger endpoint and add some error handling for when the swagger file does not exist Signed-off-by: Brent Baude <bbaude@redhat.com>
Diffstat (limited to 'pkg/api/handlers/libpod/swagger.go')
-rw-r--r--pkg/api/handlers/libpod/swagger.go29
1 files changed, 28 insertions, 1 deletions
diff --git a/pkg/api/handlers/libpod/swagger.go b/pkg/api/handlers/libpod/swagger.go
index f6a26134b..149fa10dc 100644
--- a/pkg/api/handlers/libpod/swagger.go
+++ b/pkg/api/handlers/libpod/swagger.go
@@ -1,6 +1,16 @@
package libpod
-import "github.com/containers/image/v5/manifest"
+import (
+ "net/http"
+ "os"
+
+ "github.com/containers/image/v5/manifest"
+ "github.com/containers/libpod/pkg/api/handlers/utils"
+ "github.com/pkg/errors"
+)
+
+// DefaultPodmanSwaggerSpec provides the default path to the podman swagger spec file
+const DefaultPodmanSwaggerSpec = "/usr/share/containers/podman/swagger.yaml"
// List Containers
// swagger:response ListContainers
@@ -15,3 +25,20 @@ type swagInspectManifestResponse struct {
// in:body
Body manifest.List
}
+
+func ServeSwagger(w http.ResponseWriter, r *http.Request) {
+ path := DefaultPodmanSwaggerSpec
+ if p, found := os.LookupEnv("PODMAN_SWAGGER_SPEC"); found {
+ path = p
+ }
+ if _, err := os.Stat(path); err != nil {
+ if os.IsNotExist(err) {
+ utils.InternalServerError(w, errors.Errorf("file %q does not exist", path))
+ return
+ }
+ utils.InternalServerError(w, err)
+ return
+ }
+ w.Header().Set("Content-Type", "text/yaml")
+ http.ServeFile(w, r, path)
+}