From 311301438b0366004e238cbcc2ca07d38d8a9369 Mon Sep 17 00:00:00 2001 From: Shuicheng Lin Date: Wed, 25 Sep 2019 20:02:34 +0800 Subject: [PATCH] customize containerd for StarlingX 1. disable btrfs to pass build. 2. docker registry in StarlingX 3.0 branch doesn't support POST method for token and will return 400. Switch to GET method to get token if StatusCode is 400. 3. hardcode version info due to miss git info in tarball. Signed-off-by: Shuicheng Lin --- containerd/Makefile | 3 ++- containerd/remotes/docker/authorizer.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/containerd/Makefile b/containerd/Makefile index 37012e8..7ab6a22 100644 --- a/containerd/Makefile +++ b/containerd/Makefile @@ -20,7 +20,7 @@ ROOTDIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST)))) DESTDIR ?= /usr/local # Used to populate variables in version package. -VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always) +VERSION=v1.3.3 REVISION=$(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi) PACKAGE=github.com/containerd/containerd @@ -95,6 +95,7 @@ endif # Build tags seccomp and apparmor are needed by CRI plugin. GO_BUILDTAGS ?= seccomp apparmor GO_BUILDTAGS += ${DEBUG_TAGS} +GO_BUILDTAGS += no_btrfs GO_TAGS=$(if $(GO_BUILDTAGS),-tags "$(GO_BUILDTAGS)",) GO_LDFLAGS=-ldflags '-X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) $(EXTRA_LDFLAGS)' SHIM_GO_LDFLAGS=-ldflags '-X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) -extldflags "-static" $(EXTRA_LDFLAGS)' diff --git a/containerd/remotes/docker/authorizer.go b/containerd/remotes/docker/authorizer.go index 9652d3a..72a6f3a 100644 --- a/containerd/remotes/docker/authorizer.go +++ b/containerd/remotes/docker/authorizer.go @@ -366,7 +366,8 @@ func (ah *authHandler) fetchTokenWithOAuth(ctx context.Context, to tokenOptions) // Registries without support for POST may return 404 for POST /v2/token. // As of September 2017, GCR is known to return 404. // As of February 2018, JFrog Artifactory is known to return 401. - if (resp.StatusCode == 405 && to.username != "") || resp.StatusCode == 404 || resp.StatusCode == 401 { + // Current Registry in StarlingX returns 400 for POST /v2/token. + if (resp.StatusCode == 405 && to.username != "") || resp.StatusCode == 404 || resp.StatusCode == 401 || resp.StatusCode == 400 { return ah.fetchToken(ctx, to) } else if resp.StatusCode < 200 || resp.StatusCode >= 400 { b, _ := ioutil.ReadAll(io.LimitReader(resp.Body, 64000)) // 64KB -- 2.16.6