expose apiregistration.k8s.io into OpenAPIV3
This commit is contained in:
parent
b3d94ae74f
commit
ad2b4368e2
@ -440,6 +440,8 @@ func (s *APIAggregator) PrepareRun() (preparedAPIAggregator, error) {
|
||||
openAPIV3Aggregator, err := openapiv3aggregator.BuildAndRegisterAggregator(
|
||||
specDownloaderV3,
|
||||
s.GenericAPIServer.NextDelegate(),
|
||||
s.GenericAPIServer.Handler.GoRestfulContainer,
|
||||
s.openAPIConfig,
|
||||
s.GenericAPIServer.Handler.NonGoRestfulMux)
|
||||
if err != nil {
|
||||
return preparedAPIAggregator{}, err
|
||||
|
@ -25,9 +25,13 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/emicklei/go-restful/v3"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apiserver/pkg/endpoints/metrics"
|
||||
"k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/apiserver/pkg/server/mux"
|
||||
"k8s.io/apiserver/pkg/server/routes"
|
||||
"k8s.io/klog/v2"
|
||||
v1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
|
||||
"k8s.io/kube-openapi/pkg/common"
|
||||
@ -73,12 +77,29 @@ func (s *specProxier) GetAPIServiceNames() []string {
|
||||
}
|
||||
|
||||
// BuildAndRegisterAggregator registered OpenAPI aggregator handler. This function is not thread safe as it only being called on startup.
|
||||
func BuildAndRegisterAggregator(downloader Downloader, delegationTarget server.DelegationTarget, pathHandler common.PathHandlerByGroupVersion) (SpecProxier, error) {
|
||||
func BuildAndRegisterAggregator(downloader Downloader, delegationTarget server.DelegationTarget, aggregatorService *restful.Container, openAPIConfig *common.Config, pathHandler common.PathHandlerByGroupVersion) (SpecProxier, error) {
|
||||
s := &specProxier{
|
||||
apiServiceInfo: map[string]*openAPIV3APIServiceInfo{},
|
||||
downloader: downloader,
|
||||
}
|
||||
|
||||
if aggregatorService != nil && openAPIConfig != nil {
|
||||
// Make native types exposed by aggregator available to the aggregated
|
||||
// OpenAPI (normal handle is disabled by skipOpenAPIInstallation option)
|
||||
aggregatorLocalServiceName := "k8s_internal_local_kube_aggregator_types"
|
||||
v3Mux := mux.NewPathRecorderMux(aggregatorLocalServiceName)
|
||||
_ = routes.OpenAPI{
|
||||
Config: openAPIConfig,
|
||||
}.InstallV3(aggregatorService, v3Mux)
|
||||
|
||||
s.AddUpdateAPIService(v3Mux, &v1.APIService{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: aggregatorLocalServiceName,
|
||||
},
|
||||
})
|
||||
s.UpdateAPIServiceSpec(aggregatorLocalServiceName)
|
||||
}
|
||||
|
||||
i := 1
|
||||
for delegate := delegationTarget; delegate != nil; delegate = delegate.NextDelegate() {
|
||||
handler := delegate.UnprotectedHandler()
|
||||
|
@ -89,7 +89,7 @@ func TestV2APIService(t *testing.T) {
|
||||
downloader := Downloader{}
|
||||
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
||||
var serveHandler http.Handler = pathHandler
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -133,7 +133,7 @@ func TestV3APIService(t *testing.T) {
|
||||
|
||||
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
||||
var serveHandler http.Handler = pathHandler
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -178,7 +178,7 @@ func TestOpenAPIRequestMetrics(t *testing.T) {
|
||||
|
||||
pathHandler := mux.NewPathRecorderMux("aggregator_metrics_test")
|
||||
var serveHandler http.Handler = pathHandler
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user