summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml11
-rw-r--r--Makefile7
-rw-r--r--pkg/api/handlers/generic/ping.go27
-rw-r--r--pkg/api/handlers/ping.go30
-rw-r--r--pkg/api/handlers/types.go4
-rw-r--r--pkg/api/server/register_images.go5
-rw-r--r--pkg/api/server/register_ping.go60
-rw-r--r--pkg/api/tags.yaml4
8 files changed, 108 insertions, 40 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index bb2da0812..8f355b3ba 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -93,7 +93,6 @@ gating_task:
CIRRUS_WORKING_DIR: "/usr/src/libpod"
GOPATH: "/go"
GOSRC: "/go/src/github.com/containers/libpod"
- EPOCH_TEST_COMMIT: "${CIRRUS_BASE_SHA}"
# Runs within Cirrus's "community cluster"
container:
@@ -103,6 +102,16 @@ gating_task:
timeout_in: 20m
+ # Custom cloning is required to satisfy lint/validation needs
+ clone_script: |
+ git clone --recursive --branch=$DEST_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
+ git remote update origin
+ if [[ -n "$CIRRUS_PR" ]]; then # running for a PR
+ git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
+ git checkout pull/$CIRRUS_PR
+ fi
+ git reset --hard $CIRRUS_CHANGE_IN_REPO
+
# Don't bother going further if something is down
networking_script: '${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/networking.sh'
diff --git a/Makefile b/Makefile
index f71f7d2b1..6713b8bae 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@ export GOPROXY=https://proxy.golang.org
GO ?= go
DESTDIR ?=
-EPOCH_TEST_COMMIT ?= $(shell git merge-base HEAD $${DEST_BRANCH:-master})
+EPOCH_TEST_COMMIT ?= $(shell git merge-base $${DEST_BRANCH:-master} HEAD)
HEAD ?= HEAD
CHANGELOG_BASE ?= HEAD~
CHANGELOG_TARGET ?= HEAD
@@ -132,6 +132,9 @@ for cmd in sorted(cmds):
endef
export PRINT_HELP_PYSCRIPT
+# Dereference variable $(1), return value if non-empty, otherwise raise an error.
+err_if_empty = $(if $(strip $($(1))),$(strip $($(1))),$(error Required variable $(1) value is undefined, whitespace, or empty))
+
.PHONY: help
help:
@$(PYTHON) -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
@@ -146,6 +149,7 @@ endif
.PHONY: lint
lint: golangci-lint
+ @echo "Linting vs commit '$(call err_if_empty,EPOCH_TEST_COMMIT)'"
ifeq ($(PRE_COMMIT),)
@echo "FATAL: pre-commit was not found, check https://pre-commit.com/ about installing it." >&2
@exit 2
@@ -531,6 +535,7 @@ uninstall:
.PHONY: .gitvalidation
.gitvalidation: .gopathok
+ @echo "Validating vs commit '$(call err_if_empty,EPOCH_TEST_COMMIT)'"
GIT_CHECK_EXCLUDE="./vendor:docs/make.bat" $(GOBIN)/git-validation -run DCO,short-subject,dangling-whitespace -range $(EPOCH_TEST_COMMIT)..$(HEAD)
.PHONY: install.tools
diff --git a/pkg/api/handlers/generic/ping.go b/pkg/api/handlers/generic/ping.go
deleted file mode 100644
index 00afd86bc..000000000
--- a/pkg/api/handlers/generic/ping.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package generic
-
-import (
- "fmt"
- "net/http"
-
- "github.com/containers/libpod/pkg/api/handlers"
-)
-
-func PingGET(w http.ResponseWriter, _ *http.Request) {
- setHeaders(w)
- fmt.Fprintln(w, "OK")
-}
-
-func PingHEAD(w http.ResponseWriter, _ *http.Request) {
- setHeaders(w)
- fmt.Fprintln(w, "")
-}
-
-func setHeaders(w http.ResponseWriter) {
- w.Header().Set("API-Version", handlers.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")
- w.WriteHeader(http.StatusOK)
-}
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")
+}
diff --git a/pkg/api/handlers/types.go b/pkg/api/handlers/types.go
index 9c8562744..34b428852 100644
--- a/pkg/api/handlers/types.go
+++ b/pkg/api/handlers/types.go
@@ -70,10 +70,6 @@ type ContainerStats struct {
docker.ContainerStats
}
-type Ping struct {
- docker.Ping
-}
-
type Version struct {
docker.Version
}
diff --git a/pkg/api/server/register_images.go b/pkg/api/server/register_images.go
index f1cc0574c..18a90dc3d 100644
--- a/pkg/api/server/register_images.go
+++ b/pkg/api/server/register_images.go
@@ -300,8 +300,9 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error {
// swagger:operation POST /commit/ compat commitContainer
// ---
// tags:
- // - commit (compat)
- // summary: Create a new image from a container
+ // - containers (compat)
+ // summary: New Image
+ // description: Create a new image from a container
// parameters:
// - in: query
// name: container
diff --git a/pkg/api/server/register_ping.go b/pkg/api/server/register_ping.go
index 4956f9822..086e674a1 100644
--- a/pkg/api/server/register_ping.go
+++ b/pkg/api/server/register_ping.go
@@ -3,15 +3,65 @@ package server
import (
"net/http"
- "github.com/containers/libpod/pkg/api/handlers/generic"
+ "github.com/containers/libpod/pkg/api/handlers"
"github.com/gorilla/mux"
)
func (s *APIServer) registerPingHandlers(r *mux.Router) error {
- r.Handle("/_ping", APIHandler(s.Context, generic.PingGET)).Methods(http.MethodGet)
- r.Handle("/_ping", APIHandler(s.Context, generic.PingHEAD)).Methods("HEAD")
- // libpod
- r.Handle("/libpod/_ping", APIHandler(s.Context, generic.PingGET)).Methods(http.MethodGet)
+ r.Handle("/_ping", APIHandler(s.Context, handlers.Ping)).Methods(http.MethodGet)
+ r.Handle("/_ping", APIHandler(s.Context, handlers.Ping)).Methods(http.MethodHead)
+
+ // swagger:operation GET /libpod/_ping libpod libpodPingGet
+ // ---
+ // summary: Ping service
+ // description: |
+ // Return protocol information in response headers.
+ // `HEAD /libpod/_ping` is also supported.
+ // `/_ping` is available for compatibility with other engines.
+ // tags:
+ // - system (compat)
+ // - system
+ // produces:
+ // - text/plain
+ // responses:
+ // 200:
+ // description: Success
+ // schema:
+ // description: OK
+ // type: string
+ // example: "OK"
+ // headers:
+ // API-Version:
+ // type: string
+ // description: Max compatibility API Version the server supports
+ // BuildKit-Version:
+ // type: string
+ // description: Default version of docker image builder
+ // Docker-Experimental:
+ // type: boolean
+ // description: If the server is running with experimental mode enabled, always true
+ // Cache-Control:
+ // type: string
+ // description: always no-cache
+ // Pragma:
+ // type: string
+ // description: always no-cache
+ // Libpod-API-Version:
+ // type: string
+ // description: |
+ // Max Podman API Version the server supports.
+ // Available if service is backed by Podman, therefore may be used to
+ // determine if talking to Podman engine or another engine
+ // Libpod-Buildha-Version:
+ // type: string
+ // description: |
+ // Default version of libpod image builder.
+ // Available if service is backed by Podman, therefore may be used to
+ // determine if talking to Podman engine or another engine
+ // 500:
+ // $ref: "#/responses/InternalError"
+ r.Handle("/libpod/_ping", APIHandler(s.Context, handlers.Ping)).Methods(http.MethodGet)
+ r.Handle("/libpod/_ping", APIHandler(s.Context, handlers.Ping)).Methods(http.MethodHead)
return nil
}
diff --git a/pkg/api/tags.yaml b/pkg/api/tags.yaml
index 9966076fb..3bf2bb64f 100644
--- a/pkg/api/tags.yaml
+++ b/pkg/api/tags.yaml
@@ -9,9 +9,13 @@ tags:
description: Actions related to pods
- name: volumes
description: Actions related to volumes
+ - name: system
+ description: Actions related to Podman engine
- name: containers (compat)
description: Actions related to containers for the compatibility endpoints
- name: exec (compat)
description: Actions related to exec for the compatibility endpoints
- name: images (compat)
description: Actions related to images for the compatibility endpoints
+ - name: system (compat)
+ description: Actions related to Podman and compatiblity engines