aboutsummaryrefslogtreecommitdiff
path: root/pkg/api
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/api')
-rw-r--r--pkg/api/handlers/compat/containers.go13
-rw-r--r--pkg/api/handlers/compat/images.go2
-rw-r--r--pkg/api/handlers/compat/images_build.go2
-rw-r--r--pkg/api/handlers/compat/images_prune.go2
-rw-r--r--pkg/api/handlers/libpod/manifests.go10
-rw-r--r--pkg/api/handlers/utils/handler.go2
-rw-r--r--pkg/api/server/register_manifest.go157
7 files changed, 102 insertions, 86 deletions
diff --git a/pkg/api/handlers/compat/containers.go b/pkg/api/handlers/compat/containers.go
index 4830ef4b7..1c339730e 100644
--- a/pkg/api/handlers/compat/containers.go
+++ b/pkg/api/handlers/compat/containers.go
@@ -293,9 +293,10 @@ func LibpodToContainer(l *libpod.Container, sz bool) (*handlers.Container, error
stateStr = "created"
}
- if state == define.ContainerStateConfigured || state == define.ContainerStateCreated {
+ switch state {
+ case define.ContainerStateConfigured, define.ContainerStateCreated:
status = "Created"
- } else if state == define.ContainerStateStopped || state == define.ContainerStateExited {
+ case define.ContainerStateStopped, define.ContainerStateExited:
exitCode, _, err := l.ExitCode()
if err != nil {
return nil, err
@@ -305,7 +306,7 @@ func LibpodToContainer(l *libpod.Container, sz bool) (*handlers.Container, error
return nil, err
}
status = fmt.Sprintf("Exited (%d) %s ago", exitCode, units.HumanDuration(time.Since(finishedTime)))
- } else if state == define.ContainerStateRunning || state == define.ContainerStatePaused {
+ case define.ContainerStateRunning, define.ContainerStatePaused:
startedTime, err := l.StartedTime()
if err != nil {
return nil, err
@@ -314,11 +315,11 @@ func LibpodToContainer(l *libpod.Container, sz bool) (*handlers.Container, error
if state == define.ContainerStatePaused {
status += " (Paused)"
}
- } else if state == define.ContainerStateRemoving {
+ case define.ContainerStateRemoving:
status = "Removal In Progress"
- } else if state == define.ContainerStateStopping {
+ case define.ContainerStateStopping:
status = "Stopping"
- } else {
+ default:
status = "Unknown"
}
diff --git a/pkg/api/handlers/compat/images.go b/pkg/api/handlers/compat/images.go
index edefce010..a690cdd40 100644
--- a/pkg/api/handlers/compat/images.go
+++ b/pkg/api/handlers/compat/images.go
@@ -532,7 +532,7 @@ func ExportImages(w http.ResponseWriter, r *http.Request) {
utils.Error(w, http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
return
}
- if len(query.Names) <= 0 {
+ if len(query.Names) == 0 {
utils.Error(w, http.StatusBadRequest, fmt.Errorf("no images to download"))
return
}
diff --git a/pkg/api/handlers/compat/images_build.go b/pkg/api/handlers/compat/images_build.go
index 1a24f1ae3..0f85aa717 100644
--- a/pkg/api/handlers/compat/images_build.go
+++ b/pkg/api/handlers/compat/images_build.go
@@ -286,7 +286,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
}
}
}
- secrets = append(secrets, strings.Join(modifiedOpt[:], ","))
+ secrets = append(secrets, strings.Join(modifiedOpt, ","))
}
}
}
diff --git a/pkg/api/handlers/compat/images_prune.go b/pkg/api/handlers/compat/images_prune.go
index c0be9da7d..46524fcff 100644
--- a/pkg/api/handlers/compat/images_prune.go
+++ b/pkg/api/handlers/compat/images_prune.go
@@ -58,7 +58,7 @@ func PruneImages(w http.ResponseWriter, r *http.Request) {
idr = append(idr, types.ImageDeleteResponseItem{
Deleted: p.Id,
})
- reclaimedSpace = reclaimedSpace + p.Size
+ reclaimedSpace += p.Size
}
if errorMsg.Len() > 0 {
utils.InternalServerError(w, errors.New(errorMsg.String()))
diff --git a/pkg/api/handlers/libpod/manifests.go b/pkg/api/handlers/libpod/manifests.go
index 15d4b9f89..8dc7c57d5 100644
--- a/pkg/api/handlers/libpod/manifests.go
+++ b/pkg/api/handlers/libpod/manifests.go
@@ -7,6 +7,7 @@ import (
"io/ioutil"
"net/http"
"net/url"
+ "strconv"
"strings"
"github.com/containers/image/v5/docker/reference"
@@ -372,6 +373,15 @@ func ManifestModify(w http.ResponseWriter, r *http.Request) {
return
}
+ if tlsVerify, ok := r.URL.Query()["tlsVerify"]; ok {
+ tls, err := strconv.ParseBool(tlsVerify[len(tlsVerify)-1])
+ if err != nil {
+ utils.Error(w, http.StatusBadRequest, fmt.Errorf("tlsVerify param is not a bool: %w", err))
+ return
+ }
+ body.SkipTLSVerify = types.NewOptionalBool(!tls)
+ }
+
authconf, authfile, err := auth.GetCredentials(r)
if err != nil {
utils.Error(w, http.StatusBadRequest, err)
diff --git a/pkg/api/handlers/utils/handler.go b/pkg/api/handlers/utils/handler.go
index a9b6f0659..338d5a84b 100644
--- a/pkg/api/handlers/utils/handler.go
+++ b/pkg/api/handlers/utils/handler.go
@@ -150,7 +150,7 @@ func MarshalErrorJSONIsEmpty(ptr unsafe.Pointer) bool {
}
func MarshalErrorSliceJSONIsEmpty(ptr unsafe.Pointer) bool {
- return len(*((*[]error)(ptr))) <= 0
+ return len(*((*[]error)(ptr))) == 0
}
// WriteJSON writes an interface value encoded as JSON to w
diff --git a/pkg/api/server/register_manifest.go b/pkg/api/server/register_manifest.go
index 50a49bc1e..3e3a516f4 100644
--- a/pkg/api/server/register_manifest.go
+++ b/pkg/api/server/register_manifest.go
@@ -10,6 +10,82 @@ import (
func (s *APIServer) registerManifestHandlers(r *mux.Router) error {
v3 := r.PathPrefix("/v{version:[0-3][0-9A-Za-z.-]*}/libpod/manifests").Subrouter()
v4 := r.PathPrefix("/v{version:[4-9][0-9A-Za-z.-]*}/libpod/manifests").Subrouter()
+ // swagger:operation POST /libpod/manifests/{name}/push manifests ManifestPushV3Libpod
+ // ---
+ // summary: Push manifest to registry
+ // description: |
+ // Push a manifest list or image index to a registry
+ //
+ // Deprecated: As of 4.0.0 use ManifestPushLibpod instead
+ // produces:
+ // - application/json
+ // parameters:
+ // - in: path
+ // name: name
+ // type: string
+ // required: true
+ // description: the name or ID of the manifest
+ // - in: query
+ // name: destination
+ // type: string
+ // required: true
+ // description: the destination for the manifest
+ // - in: query
+ // name: all
+ // description: push all images
+ // type: boolean
+ // responses:
+ // 200:
+ // schema:
+ // $ref: "#/definitions/IDResponse"
+ // 400:
+ // $ref: "#/responses/BadParamError"
+ // 404:
+ // $ref: "#/responses/NoSuchManifest"
+ // 500:
+ // $ref: "#/responses/InternalError"
+ v3.Handle("/{name}/push", s.APIHandler(libpod.ManifestPushV3)).Methods(http.MethodPost)
+ // swagger:operation POST /libpod/manifests/{name}/registry/{destination} manifests ManifestPushLibpod
+ // ---
+ // summary: Push manifest list to registry
+ // description: |
+ // Push a manifest list or image index to the named registry
+ //
+ // As of v4.0.0
+ // produces:
+ // - application/json
+ // parameters:
+ // - in: path
+ // name: name
+ // type: string
+ // required: true
+ // description: the name or ID of the manifest list
+ // - in: path
+ // name: destination
+ // type: string
+ // required: true
+ // description: the registry for the manifest list
+ // - in: query
+ // name: all
+ // description: push all images
+ // type: boolean
+ // default: false
+ // - in: query
+ // name: tlsVerify
+ // type: boolean
+ // default: false
+ // description: skip TLS verification for registries
+ // responses:
+ // 200:
+ // schema:
+ // $ref: "#/definitions/IDResponse"
+ // 400:
+ // $ref: "#/responses/BadParamError"
+ // 404:
+ // $ref: "#/responses/NoSuchManifest"
+ // 500:
+ // $ref: "#/responses/InternalError"
+ v4.Handle("/{name:.*}/registry/{destination:.*}", s.APIHandler(libpod.ManifestPush)).Methods(http.MethodPost)
// swagger:operation POST /libpod/manifests manifests ManifestCreateLibpod
// ---
// summary: Create
@@ -116,6 +192,11 @@ func (s *APIServer) registerManifestHandlers(r *mux.Router) error {
// type: string
// required: true
// description: the name or ID of the manifest
+ // - in: query
+ // name: tlsVerify
+ // type: boolean
+ // default: false
+ // description: skip TLS verification for registries
// - in: body
// name: options
// description: options for mutating a manifest
@@ -221,81 +302,5 @@ func (s *APIServer) registerManifestHandlers(r *mux.Router) error {
// 500:
// $ref: "#/responses/InternalError"
v4.Handle("/{name:.*}", s.APIHandler(libpod.ManifestDelete)).Methods(http.MethodDelete)
- // swagger:operation POST /libpod/manifests/{name}/push manifests ManifestPushV3Libpod
- // ---
- // summary: Push manifest to registry
- // description: |
- // Push a manifest list or image index to a registry
- //
- // Deprecated: As of 4.0.0 use ManifestPushLibpod instead
- // produces:
- // - application/json
- // parameters:
- // - in: path
- // name: name
- // type: string
- // required: true
- // description: the name or ID of the manifest
- // - in: query
- // name: destination
- // type: string
- // required: true
- // description: the destination for the manifest
- // - in: query
- // name: all
- // description: push all images
- // type: boolean
- // responses:
- // 200:
- // schema:
- // $ref: "#/definitions/IDResponse"
- // 400:
- // $ref: "#/responses/BadParamError"
- // 404:
- // $ref: "#/responses/NoSuchManifest"
- // 500:
- // $ref: "#/responses/InternalError"
- v3.Handle("/{name}/push", s.APIHandler(libpod.ManifestPushV3)).Methods(http.MethodPost)
- // swagger:operation POST /libpod/manifests/{name}/registry/{destination} manifests ManifestPushLibpod
- // ---
- // summary: Push manifest list to registry
- // description: |
- // Push a manifest list or image index to the named registry
- //
- // As of v4.0.0
- // produces:
- // - application/json
- // parameters:
- // - in: path
- // name: name
- // type: string
- // required: true
- // description: the name or ID of the manifest list
- // - in: path
- // name: destination
- // type: string
- // required: true
- // description: the registry for the manifest list
- // - in: query
- // name: all
- // description: push all images
- // type: boolean
- // default: false
- // - in: query
- // name: tlsVerify
- // type: boolean
- // default: false
- // description: skip TLS verification for registries
- // responses:
- // 200:
- // schema:
- // $ref: "#/definitions/IDResponse"
- // 400:
- // $ref: "#/responses/BadParamError"
- // 404:
- // $ref: "#/responses/NoSuchManifest"
- // 500:
- // $ref: "#/responses/InternalError"
- v4.Handle("/{name:.*}/registry/{destination:.*}", s.APIHandler(libpod.ManifestPush)).Methods(http.MethodPost)
return nil
}