mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
app-emulation/docker-registry: Include patch to fix json in notifications endpoint
Package-Manager: Portage-2.3.5, Repoman-2.3.2
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Copyright 1999-2017 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
inherit golang-vcs-snapshot systemd user
|
||||
|
||||
KEYWORDS="~amd64"
|
||||
EGO_PN="github.com/docker/distribution/..."
|
||||
EGIT_COMMIT="v${PV}"
|
||||
SRC_URI="https://${EGO_PN%/*}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
|
||||
DESCRIPTION="Docker Registry 2.0"
|
||||
HOMEPAGE="https://github.com/docker/distribution"
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
IUSE=""
|
||||
SVCNAME=registry
|
||||
|
||||
PATCHES=( "${FILESDIR}/${P}-notifications-expvar.patch" )
|
||||
|
||||
pkg_setup() {
|
||||
enewgroup ${SVCNAME}
|
||||
enewuser ${SVCNAME} -1 -1 /dev/null ${SVCNAME}
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
GOPATH="${S}" \
|
||||
go install -v -work -x ${EGO_BUILD_FLAGS} "${EGO_PN}" || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
exeinto /usr/libexec/${PN}
|
||||
doexe bin/*
|
||||
insinto /etc/docker/registry
|
||||
newins src/${EGO_PN%/*}/cmd/registry/config-example.yml config.yml.example
|
||||
newinitd "${FILESDIR}/${SVCNAME}.initd" "${SVCNAME}"
|
||||
newconfd "${FILESDIR}/${SVCNAME}.confd" "${SVCNAME}"
|
||||
systemd_dounit "${FILESDIR}/${SVCNAME}.service"
|
||||
keepdir /var/{lib,log}/${SVCNAME}
|
||||
fowners ${SVCNAME}:${SVCNAME} /var/{lib,log}/${SVCNAME}
|
||||
insinto /etc/logrotate.d
|
||||
newins "${FILESDIR}/${SVCNAME}.logrotated" "${SVCNAME}"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
From 9a58c91051e03b46f1461e371a7bf527c1284612 Mon Sep 17 00:00:00 2001
|
||||
From: Noah Treuhaft <noah.treuhaft@docker.com>
|
||||
Date: Wed, 8 Feb 2017 11:38:44 -0800
|
||||
Subject: [PATCH] notifications: fix expvar for Go 1.7
|
||||
|
||||
Remove EndpointConfig.Transport from the return value of the
|
||||
registry.notifications.endpoints expvar.Func. It results in an empty
|
||||
value for that expvar variable under Go 1.7 because it is a non-nil
|
||||
*http.Transport, which Go 1.7 can no longer encode as JSON.
|
||||
|
||||
Signed-off-by: Noah Treuhaft <noah.treuhaft@docker.com>
|
||||
---
|
||||
notifications/endpoint.go | 2 +-
|
||||
notifications/metrics_test.go | 28 ++++++++++++++++++++++++++++
|
||||
2 files changed, 29 insertions(+), 1 deletion(-)
|
||||
create mode 100644 notifications/metrics_test.go
|
||||
|
||||
diff --git a/src/github.com/docker/distribution/notifications/endpoint.go b/src/github.com/docker/distribution/notifications/endpoint.go
|
||||
index 29a9e27b5..44d0f6d7b 100644
|
||||
--- a/src/github.com/docker/distribution/notifications/endpoint.go
|
||||
+++ b/src/github.com/docker/distribution/notifications/endpoint.go
|
||||
@@ -13,7 +13,7 @@ type EndpointConfig struct {
|
||||
Threshold int
|
||||
Backoff time.Duration
|
||||
IgnoredMediaTypes []string
|
||||
- Transport *http.Transport
|
||||
+ Transport *http.Transport `json:"-"`
|
||||
}
|
||||
|
||||
// defaults set any zero-valued fields to a reasonable default.
|
||||
diff --git a/src/github.com/docker/distribution/notifications/metrics_test.go b/src/github.com/docker/distribution/notifications/metrics_test.go
|
||||
new file mode 100644
|
||||
index 000000000..03a08e2c8
|
||||
--- /dev/null
|
||||
+++ b/notifications/metrics_test.go
|
||||
@@ -0,0 +1,28 @@
|
||||
+package notifications
|
||||
+
|
||||
+import (
|
||||
+ "encoding/json"
|
||||
+ "expvar"
|
||||
+ "testing"
|
||||
+)
|
||||
+
|
||||
+func TestMetricsExpvar(t *testing.T) {
|
||||
+ endpointsVar := expvar.Get("registry").(*expvar.Map).Get("notifications").(*expvar.Map).Get("endpoints")
|
||||
+
|
||||
+ var v interface{}
|
||||
+ if err := json.Unmarshal([]byte(endpointsVar.String()), &v); err != nil {
|
||||
+ t.Fatalf("unexpected error unmarshaling endpoints: %v", err)
|
||||
+ }
|
||||
+ if v != nil {
|
||||
+ t.Fatalf("expected nil, got %#v", v)
|
||||
+ }
|
||||
+
|
||||
+ NewEndpoint("x", "y", EndpointConfig{})
|
||||
+
|
||||
+ if err := json.Unmarshal([]byte(endpointsVar.String()), &v); err != nil {
|
||||
+ t.Fatalf("unexpected error unmarshaling endpoints: %v", err)
|
||||
+ }
|
||||
+ if slice, ok := v.([]interface{}); !ok || len(slice) != 1 {
|
||||
+ t.Logf("expected one-element []interface{}, got %#v", v)
|
||||
+ }
|
||||
+}
|
||||
Reference in New Issue
Block a user