From 7cbdb90890ac89ec15be2b21b5cbdc51e94e42d6 Mon Sep 17 00:00:00 2001 From: mbohlool Date: Thu, 31 Aug 2017 10:24:40 -0700 Subject: [PATCH] Provide whole delegate chain to kube aggregator --- staging/src/k8s.io/apiserver/pkg/server/config.go | 1 + .../k8s.io/apiserver/pkg/server/genericapiserver.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/staging/src/k8s.io/apiserver/pkg/server/config.go b/staging/src/k8s.io/apiserver/pkg/server/config.go index d86aa4643df..e1824421221 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/config.go +++ b/staging/src/k8s.io/apiserver/pkg/server/config.go @@ -405,6 +405,7 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G requestContextMapper: c.RequestContextMapper, Serializer: c.Serializer, AuditBackend: c.AuditBackend, + delegationTarget: delegationTarget, minRequestTimeout: time.Duration(c.MinRequestTimeout) * time.Second, diff --git a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go index 4a86448d9da..9be725d4e26 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go +++ b/staging/src/k8s.io/apiserver/pkg/server/genericapiserver.go @@ -145,6 +145,9 @@ type GenericAPIServer struct { // enableAPIResponseCompression indicates whether API Responses should support compression // if the client requests it via Accept-Encoding enableAPIResponseCompression bool + + // delegationTarget is the next delegate in the chain or nil + delegationTarget DelegationTarget } // DelegationTarget is an interface which allows for composition of API servers with top level handling that works @@ -165,6 +168,9 @@ type DelegationTarget interface { // ListedPaths returns the paths for supporting an index ListedPaths() []string + + // NextDelegate returns the next delegationTarget in the chain of delegations + NextDelegate() DelegationTarget } func (s *GenericAPIServer) UnprotectedHandler() http.Handler { @@ -181,6 +187,10 @@ func (s *GenericAPIServer) ListedPaths() []string { return s.listedPathProvider.ListedPaths() } +func (s *GenericAPIServer) NextDelegate() DelegationTarget { + return s.delegationTarget +} + var EmptyDelegate = emptyDelegate{ requestContextMapper: apirequest.NewRequestContextMapper(), } @@ -204,6 +214,9 @@ func (s emptyDelegate) ListedPaths() []string { func (s emptyDelegate) RequestContextMapper() apirequest.RequestContextMapper { return s.requestContextMapper } +func (s emptyDelegate) NextDelegate() DelegationTarget { + return nil +} // RequestContextMapper is exposed so that third party resource storage can be build in a different location. // TODO refactor third party resource storage