mirror of https://github.com/k3s-io/k3s
remove duplication of RESTOptionsGetter for kube
parent
470cb9d2c9
commit
a463540d47
|
@ -315,16 +315,19 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
sets.NewString("watch", "proxy"),
|
sets.NewString("watch", "proxy"),
|
||||||
sets.NewString("attach", "exec", "proxy", "log", "portforward"),
|
sets.NewString("attach", "exec", "proxy", "log", "portforward"),
|
||||||
)
|
)
|
||||||
|
genericConfig.RESTOptionsGetter = &kubeapiserver.RESTOptionsFactory{
|
||||||
|
StorageFactory: storageFactory,
|
||||||
|
EnableWatchCache: s.Etcd.EnableWatchCache,
|
||||||
|
EnableGarbageCollection: s.Etcd.EnableGarbageCollection,
|
||||||
|
DeleteCollectionWorkers: s.Etcd.DeleteCollectionWorkers,
|
||||||
|
}
|
||||||
|
|
||||||
config := &master.Config{
|
config := &master.Config{
|
||||||
GenericConfig: genericConfig,
|
GenericConfig: genericConfig,
|
||||||
|
|
||||||
APIResourceConfigSource: storageFactory.APIResourceConfigSource,
|
APIResourceConfigSource: storageFactory.APIResourceConfigSource,
|
||||||
StorageFactory: storageFactory,
|
StorageFactory: storageFactory,
|
||||||
EnableGarbageCollection: s.Etcd.EnableGarbageCollection,
|
|
||||||
EnableWatchCache: s.Etcd.EnableWatchCache,
|
|
||||||
EnableCoreControllers: true,
|
EnableCoreControllers: true,
|
||||||
DeleteCollectionWorkers: s.Etcd.DeleteCollectionWorkers,
|
|
||||||
EventTTL: s.EventTTL,
|
EventTTL: s.EventTTL,
|
||||||
KubeletClientConfig: s.KubeletConfig,
|
KubeletClientConfig: s.KubeletConfig,
|
||||||
EnableUISupport: true,
|
EnableUISupport: true,
|
||||||
|
|
|
@ -47,7 +47,7 @@ const (
|
||||||
|
|
||||||
func newStorageFactory() genericapiserver.StorageFactory {
|
func newStorageFactory() genericapiserver.StorageFactory {
|
||||||
config := storagebackend.Config{
|
config := storagebackend.Config{
|
||||||
Prefix: genericoptions.DefaultEtcdPathPrefix,
|
Prefix: kubeoptions.DefaultEtcdPathPrefix,
|
||||||
ServerList: []string{"http://127.0.0.1:2379"},
|
ServerList: []string{"http://127.0.0.1:2379"},
|
||||||
Copier: api.Scheme,
|
Copier: api.Scheme,
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,6 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apiserver/pkg/admission",
|
"//vendor:k8s.io/apiserver/pkg/admission",
|
||||||
"//vendor:k8s.io/apiserver/pkg/registry/generic",
|
"//vendor:k8s.io/apiserver/pkg/registry/generic",
|
||||||
"//vendor:k8s.io/apiserver/pkg/registry/generic/registry",
|
|
||||||
"//vendor:k8s.io/apiserver/pkg/registry/rest",
|
"//vendor:k8s.io/apiserver/pkg/registry/rest",
|
||||||
"//vendor:k8s.io/apiserver/pkg/server",
|
"//vendor:k8s.io/apiserver/pkg/server",
|
||||||
"//vendor:k8s.io/apiserver/pkg/server/filters",
|
"//vendor:k8s.io/apiserver/pkg/server/filters",
|
||||||
|
|
|
@ -36,8 +36,6 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/apiserver/pkg/admission"
|
"k8s.io/apiserver/pkg/admission"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
|
||||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
"k8s.io/apiserver/pkg/server/filters"
|
"k8s.io/apiserver/pkg/server/filters"
|
||||||
"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
|
"k8s.io/kubernetes/federation/cmd/federation-apiserver/app/options"
|
||||||
|
@ -196,6 +194,12 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
sets.NewString("watch", "proxy"),
|
sets.NewString("watch", "proxy"),
|
||||||
sets.NewString("attach", "exec", "proxy", "log", "portforward"),
|
sets.NewString("attach", "exec", "proxy", "log", "portforward"),
|
||||||
)
|
)
|
||||||
|
genericConfig.RESTOptionsGetter = &kubeapiserver.RESTOptionsFactory{
|
||||||
|
StorageFactory: storageFactory,
|
||||||
|
EnableWatchCache: s.Etcd.EnableWatchCache,
|
||||||
|
EnableGarbageCollection: s.Etcd.EnableGarbageCollection,
|
||||||
|
DeleteCollectionWorkers: s.Etcd.DeleteCollectionWorkers,
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Move this to generic api server (Need to move the command line flag).
|
// TODO: Move this to generic api server (Need to move the command line flag).
|
||||||
if s.Etcd.EnableWatchCache {
|
if s.Etcd.EnableWatchCache {
|
||||||
|
@ -211,51 +215,17 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
routes.UIRedirect{}.Install(m.HandlerContainer)
|
routes.UIRedirect{}.Install(m.HandlerContainer)
|
||||||
routes.Logs{}.Install(m.HandlerContainer)
|
routes.Logs{}.Install(m.HandlerContainer)
|
||||||
|
|
||||||
// TODO: Refactor this code to share it with kube-apiserver rather than duplicating it here.
|
installFederationAPIs(m, genericConfig.RESTOptionsGetter)
|
||||||
restOptionsFactory := &restOptionsFactory{
|
installCoreAPIs(s, m, genericConfig.RESTOptionsGetter)
|
||||||
storageFactory: storageFactory,
|
installExtensionsAPIs(m, genericConfig.RESTOptionsGetter)
|
||||||
enableGarbageCollection: s.Etcd.EnableGarbageCollection,
|
installBatchAPIs(m, genericConfig.RESTOptionsGetter)
|
||||||
deleteCollectionWorkers: s.Etcd.DeleteCollectionWorkers,
|
installAutoscalingAPIs(m, genericConfig.RESTOptionsGetter)
|
||||||
}
|
|
||||||
if s.Etcd.EnableWatchCache {
|
|
||||||
restOptionsFactory.storageDecorator = genericregistry.StorageWithCacher
|
|
||||||
} else {
|
|
||||||
restOptionsFactory.storageDecorator = generic.UndecoratedStorage
|
|
||||||
}
|
|
||||||
genericConfig.RESTOptionsGetter = restOptionsFactory
|
|
||||||
|
|
||||||
installFederationAPIs(m, restOptionsFactory)
|
|
||||||
installCoreAPIs(s, m, restOptionsFactory)
|
|
||||||
installExtensionsAPIs(m, restOptionsFactory)
|
|
||||||
installBatchAPIs(m, restOptionsFactory)
|
|
||||||
installAutoscalingAPIs(m, restOptionsFactory)
|
|
||||||
|
|
||||||
sharedInformers.Start(wait.NeverStop)
|
sharedInformers.Start(wait.NeverStop)
|
||||||
m.PrepareRun().Run(wait.NeverStop)
|
m.PrepareRun().Run(wait.NeverStop)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type restOptionsFactory struct {
|
|
||||||
storageFactory genericapiserver.StorageFactory
|
|
||||||
storageDecorator generic.StorageDecorator
|
|
||||||
deleteCollectionWorkers int
|
|
||||||
enableGarbageCollection bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *restOptionsFactory) GetRESTOptions(resource schema.GroupResource) (generic.RESTOptions, error) {
|
|
||||||
config, err := f.storageFactory.NewConfig(resource)
|
|
||||||
if err != nil {
|
|
||||||
return generic.RESTOptions{}, fmt.Errorf("Unable to find storage config for %v, due to %v", resource, err.Error())
|
|
||||||
}
|
|
||||||
return generic.RESTOptions{
|
|
||||||
StorageConfig: config,
|
|
||||||
Decorator: f.storageDecorator,
|
|
||||||
DeleteCollectionWorkers: f.deleteCollectionWorkers,
|
|
||||||
EnableGarbageCollection: f.enableGarbageCollection,
|
|
||||||
ResourcePrefix: f.storageFactory.ResourcePrefix(resource),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// PostProcessSpec adds removed definitions for backward compatibility
|
// PostProcessSpec adds removed definitions for backward compatibility
|
||||||
func postProcessOpenAPISpecForBackwardCompatibility(s *spec.Swagger) (*spec.Swagger, error) {
|
func postProcessOpenAPISpecForBackwardCompatibility(s *spec.Swagger) (*spec.Swagger, error) {
|
||||||
compatibilityMap := map[string]string{
|
compatibilityMap := map[string]string{
|
||||||
|
|
|
@ -13,12 +13,15 @@ go_library(
|
||||||
srcs = [
|
srcs = [
|
||||||
"default_storage_factory_builder.go",
|
"default_storage_factory_builder.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
|
"rest.go",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
|
"//vendor:k8s.io/apiserver/pkg/registry/generic",
|
||||||
|
"//vendor:k8s.io/apiserver/pkg/registry/generic/registry",
|
||||||
"//vendor:k8s.io/apiserver/pkg/server",
|
"//vendor:k8s.io/apiserver/pkg/server",
|
||||||
"//vendor:k8s.io/apiserver/pkg/storage/storagebackend",
|
"//vendor:k8s.io/apiserver/pkg/storage/storagebackend",
|
||||||
"//vendor:k8s.io/apiserver/pkg/util/flag",
|
"//vendor:k8s.io/apiserver/pkg/util/flag",
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package kubeapiserver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
|
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
||||||
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RESTOptionsFactory is a RESTOptionsGetter for kube apiservers since they do complicated stuff
|
||||||
|
type RESTOptionsFactory struct {
|
||||||
|
DeleteCollectionWorkers int
|
||||||
|
EnableGarbageCollection bool
|
||||||
|
EnableWatchCache bool
|
||||||
|
StorageFactory genericapiserver.StorageFactory
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *RESTOptionsFactory) GetRESTOptions(resource schema.GroupResource) (generic.RESTOptions, error) {
|
||||||
|
storageConfig, err := f.StorageFactory.NewConfig(resource)
|
||||||
|
if err != nil {
|
||||||
|
return generic.RESTOptions{}, fmt.Errorf("Unable to find storage destination for %v, due to %v", resource, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := generic.RESTOptions{
|
||||||
|
StorageConfig: storageConfig,
|
||||||
|
Decorator: generic.UndecoratedStorage,
|
||||||
|
DeleteCollectionWorkers: f.DeleteCollectionWorkers,
|
||||||
|
EnableGarbageCollection: f.EnableGarbageCollection,
|
||||||
|
ResourcePrefix: f.StorageFactory.ResourcePrefix(resource),
|
||||||
|
}
|
||||||
|
if f.EnableWatchCache {
|
||||||
|
ret.Decorator = genericregistry.StorageWithCacher
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret, nil
|
||||||
|
}
|
|
@ -75,13 +75,11 @@ go_library(
|
||||||
"//vendor:github.com/prometheus/client_golang/prometheus",
|
"//vendor:github.com/prometheus/client_golang/prometheus",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/intstr",
|
"//vendor:k8s.io/apimachinery/pkg/util/intstr",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/util/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apiserver/pkg/registry/generic",
|
"//vendor:k8s.io/apiserver/pkg/registry/generic",
|
||||||
"//vendor:k8s.io/apiserver/pkg/registry/generic/registry",
|
|
||||||
"//vendor:k8s.io/apiserver/pkg/server",
|
"//vendor:k8s.io/apiserver/pkg/server",
|
||||||
"//vendor:k8s.io/apiserver/pkg/server/healthz",
|
"//vendor:k8s.io/apiserver/pkg/server/healthz",
|
||||||
],
|
],
|
||||||
|
@ -115,6 +113,7 @@ go_test(
|
||||||
"//pkg/client/clientset_generated/clientset/fake:go_default_library",
|
"//pkg/client/clientset_generated/clientset/fake:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
||||||
"//pkg/generated/openapi:go_default_library",
|
"//pkg/generated/openapi:go_default_library",
|
||||||
|
"//pkg/kubeapiserver:go_default_library",
|
||||||
"//pkg/kubelet/client:go_default_library",
|
"//pkg/kubelet/client:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
"//pkg/version:go_default_library",
|
||||||
"//vendor:github.com/go-openapi/loads",
|
"//vendor:github.com/go-openapi/loads",
|
||||||
|
|
|
@ -25,10 +25,8 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apiserver/pkg/registry/generic"
|
"k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
|
|
||||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
"k8s.io/apiserver/pkg/server/healthz"
|
"k8s.io/apiserver/pkg/server/healthz"
|
||||||
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
|
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
|
||||||
|
@ -82,11 +80,8 @@ type Config struct {
|
||||||
|
|
||||||
APIResourceConfigSource genericapiserver.APIResourceConfigSource
|
APIResourceConfigSource genericapiserver.APIResourceConfigSource
|
||||||
StorageFactory genericapiserver.StorageFactory
|
StorageFactory genericapiserver.StorageFactory
|
||||||
EnableGarbageCollection bool
|
|
||||||
EnableWatchCache bool
|
|
||||||
EnableCoreControllers bool
|
EnableCoreControllers bool
|
||||||
EndpointReconcilerConfig EndpointReconcilerConfig
|
EndpointReconcilerConfig EndpointReconcilerConfig
|
||||||
DeleteCollectionWorkers int
|
|
||||||
EventTTL time.Duration
|
EventTTL time.Duration
|
||||||
KubeletClientConfig kubeletclient.KubeletClientConfig
|
KubeletClientConfig kubeletclient.KubeletClientConfig
|
||||||
|
|
||||||
|
@ -222,18 +217,6 @@ func (c completedConfig) New() (*Master, error) {
|
||||||
GenericAPIServer: s,
|
GenericAPIServer: s,
|
||||||
}
|
}
|
||||||
|
|
||||||
restOptionsFactory := &restOptionsFactory{
|
|
||||||
deleteCollectionWorkers: c.DeleteCollectionWorkers,
|
|
||||||
enableGarbageCollection: c.EnableGarbageCollection,
|
|
||||||
storageFactory: c.StorageFactory,
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.EnableWatchCache {
|
|
||||||
restOptionsFactory.storageDecorator = genericregistry.StorageWithCacher
|
|
||||||
} else {
|
|
||||||
restOptionsFactory.storageDecorator = generic.UndecoratedStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
// install legacy rest storage
|
// install legacy rest storage
|
||||||
if c.APIResourceConfigSource.AnyResourcesForVersionEnabled(apiv1.SchemeGroupVersion) {
|
if c.APIResourceConfigSource.AnyResourcesForVersionEnabled(apiv1.SchemeGroupVersion) {
|
||||||
legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
|
legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
|
||||||
|
@ -245,7 +228,7 @@ func (c completedConfig) New() (*Master, error) {
|
||||||
ServiceNodePortRange: c.ServiceNodePortRange,
|
ServiceNodePortRange: c.ServiceNodePortRange,
|
||||||
LoopbackClientConfig: c.GenericConfig.LoopbackClientConfig,
|
LoopbackClientConfig: c.GenericConfig.LoopbackClientConfig,
|
||||||
}
|
}
|
||||||
m.InstallLegacyAPI(c.Config, restOptionsFactory, legacyRESTStorageProvider)
|
m.InstallLegacyAPI(c.Config, c.Config.GenericConfig.RESTOptionsGetter, legacyRESTStorageProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
restStorageProviders := []RESTStorageProvider{
|
restStorageProviders := []RESTStorageProvider{
|
||||||
|
@ -260,7 +243,7 @@ func (c completedConfig) New() (*Master, error) {
|
||||||
rbacrest.RESTStorageProvider{Authorizer: c.GenericConfig.Authorizer},
|
rbacrest.RESTStorageProvider{Authorizer: c.GenericConfig.Authorizer},
|
||||||
storagerest.RESTStorageProvider{},
|
storagerest.RESTStorageProvider{},
|
||||||
}
|
}
|
||||||
m.InstallAPIs(c.Config.APIResourceConfigSource, restOptionsFactory, restStorageProviders...)
|
m.InstallAPIs(c.Config.APIResourceConfigSource, c.Config.GenericConfig.RESTOptionsGetter, restStorageProviders...)
|
||||||
|
|
||||||
if c.Tunneler != nil {
|
if c.Tunneler != nil {
|
||||||
m.installTunneler(c.Tunneler, corev1client.NewForConfigOrDie(c.GenericConfig.LoopbackClientConfig).Nodes())
|
m.installTunneler(c.Tunneler, corev1client.NewForConfigOrDie(c.GenericConfig.LoopbackClientConfig).Nodes())
|
||||||
|
@ -340,28 +323,6 @@ func (m *Master) InstallAPIs(apiResourceConfigSource genericapiserver.APIResourc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type restOptionsFactory struct {
|
|
||||||
deleteCollectionWorkers int
|
|
||||||
enableGarbageCollection bool
|
|
||||||
storageFactory genericapiserver.StorageFactory
|
|
||||||
storageDecorator generic.StorageDecorator
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *restOptionsFactory) GetRESTOptions(resource schema.GroupResource) (generic.RESTOptions, error) {
|
|
||||||
storageConfig, err := f.storageFactory.NewConfig(resource)
|
|
||||||
if err != nil {
|
|
||||||
return generic.RESTOptions{}, fmt.Errorf("Unable to find storage destination for %v, due to %v", resource, err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
return generic.RESTOptions{
|
|
||||||
StorageConfig: storageConfig,
|
|
||||||
Decorator: f.storageDecorator,
|
|
||||||
DeleteCollectionWorkers: f.deleteCollectionWorkers,
|
|
||||||
EnableGarbageCollection: f.enableGarbageCollection,
|
|
||||||
ResourcePrefix: f.storageFactory.ResourcePrefix(resource),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type nodeAddressProvider struct {
|
type nodeAddressProvider struct {
|
||||||
nodeClient corev1client.NodeInterface
|
nodeClient corev1client.NodeInterface
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ import (
|
||||||
extensionsapiv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensionsapiv1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/apis/rbac"
|
"k8s.io/kubernetes/pkg/apis/rbac"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
|
||||||
|
"k8s.io/kubernetes/pkg/kubeapiserver"
|
||||||
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
|
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
|
||||||
kubeversion "k8s.io/kubernetes/pkg/version"
|
kubeversion "k8s.io/kubernetes/pkg/version"
|
||||||
|
|
||||||
|
@ -87,6 +88,12 @@ func setUp(t *testing.T) (*Master, *etcdtesting.EtcdTestServer, Config, *assert.
|
||||||
config.GenericConfig.RequestContextMapper = genericapirequest.NewRequestContextMapper()
|
config.GenericConfig.RequestContextMapper = genericapirequest.NewRequestContextMapper()
|
||||||
config.GenericConfig.LoopbackClientConfig = &restclient.Config{APIPath: "/api", ContentConfig: restclient.ContentConfig{NegotiatedSerializer: api.Codecs}}
|
config.GenericConfig.LoopbackClientConfig = &restclient.Config{APIPath: "/api", ContentConfig: restclient.ContentConfig{NegotiatedSerializer: api.Codecs}}
|
||||||
config.GenericConfig.EnableMetrics = true
|
config.GenericConfig.EnableMetrics = true
|
||||||
|
config.GenericConfig.RESTOptionsGetter = &kubeapiserver.RESTOptionsFactory{
|
||||||
|
StorageFactory: storageFactory,
|
||||||
|
EnableWatchCache: true,
|
||||||
|
EnableGarbageCollection: true,
|
||||||
|
DeleteCollectionWorkers: 1,
|
||||||
|
}
|
||||||
config.EnableCoreControllers = false
|
config.EnableCoreControllers = false
|
||||||
config.KubeletClientConfig = kubeletclient.KubeletClientConfig{Port: 10250}
|
config.KubeletClientConfig = kubeletclient.KubeletClientConfig{Port: 10250}
|
||||||
config.ProxyTransport = utilnet.SetTransportDefaults(&http.Transport{
|
config.ProxyTransport = utilnet.SetTransportDefaults(&http.Transport{
|
||||||
|
|
|
@ -34,6 +34,7 @@ go_library(
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/replication:go_default_library",
|
"//pkg/controller/replication:go_default_library",
|
||||||
"//pkg/generated/openapi:go_default_library",
|
"//pkg/generated/openapi:go_default_library",
|
||||||
|
"//pkg/kubeapiserver:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubelet/client:go_default_library",
|
"//pkg/kubelet/client:go_default_library",
|
||||||
"//pkg/master:go_default_library",
|
"//pkg/master:go_default_library",
|
||||||
|
|
|
@ -61,6 +61,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
replicationcontroller "k8s.io/kubernetes/pkg/controller/replication"
|
replicationcontroller "k8s.io/kubernetes/pkg/controller/replication"
|
||||||
"k8s.io/kubernetes/pkg/generated/openapi"
|
"k8s.io/kubernetes/pkg/generated/openapi"
|
||||||
|
"k8s.io/kubernetes/pkg/kubeapiserver"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
|
kubeletclient "k8s.io/kubernetes/pkg/kubelet/client"
|
||||||
"k8s.io/kubernetes/pkg/master"
|
"k8s.io/kubernetes/pkg/master"
|
||||||
|
@ -364,13 +365,18 @@ func NewMasterConfig() *master.Config {
|
||||||
genericConfig.Authorizer = authorizerfactory.NewAlwaysAllowAuthorizer()
|
genericConfig.Authorizer = authorizerfactory.NewAlwaysAllowAuthorizer()
|
||||||
genericConfig.AdmissionControl = admit.NewAlwaysAdmit()
|
genericConfig.AdmissionControl = admit.NewAlwaysAdmit()
|
||||||
genericConfig.EnableMetrics = true
|
genericConfig.EnableMetrics = true
|
||||||
|
genericConfig.RESTOptionsGetter = &kubeapiserver.RESTOptionsFactory{
|
||||||
|
StorageFactory: storageFactory,
|
||||||
|
EnableWatchCache: true,
|
||||||
|
EnableGarbageCollection: true,
|
||||||
|
DeleteCollectionWorkers: 1,
|
||||||
|
}
|
||||||
|
|
||||||
return &master.Config{
|
return &master.Config{
|
||||||
GenericConfig: genericConfig,
|
GenericConfig: genericConfig,
|
||||||
APIResourceConfigSource: master.DefaultAPIResourceConfigSource(),
|
APIResourceConfigSource: master.DefaultAPIResourceConfigSource(),
|
||||||
StorageFactory: storageFactory,
|
StorageFactory: storageFactory,
|
||||||
EnableCoreControllers: true,
|
EnableCoreControllers: true,
|
||||||
EnableWatchCache: true,
|
|
||||||
KubeletClientConfig: kubeletclient.KubeletClientConfig{Port: 10250},
|
KubeletClientConfig: kubeletclient.KubeletClientConfig{Port: 10250},
|
||||||
APIServerServicePort: 443,
|
APIServerServicePort: 443,
|
||||||
MasterCount: 1,
|
MasterCount: 1,
|
||||||
|
|
|
@ -122,7 +122,6 @@ func newOwnerRC(name, namespace string) *v1.ReplicationController {
|
||||||
func setup(t *testing.T) (*httptest.Server, *garbagecollector.GarbageCollector, clientset.Interface) {
|
func setup(t *testing.T) (*httptest.Server, *garbagecollector.GarbageCollector, clientset.Interface) {
|
||||||
masterConfig := framework.NewIntegrationTestMasterConfig()
|
masterConfig := framework.NewIntegrationTestMasterConfig()
|
||||||
masterConfig.EnableCoreControllers = false
|
masterConfig.EnableCoreControllers = false
|
||||||
masterConfig.GenericConfig.EnableGarbageCollection = true
|
|
||||||
_, s := framework.RunAMaster(masterConfig)
|
_, s := framework.RunAMaster(masterConfig)
|
||||||
|
|
||||||
clientSet, err := clientset.NewForConfig(&restclient.Config{Host: s.URL})
|
clientSet, err := clientset.NewForConfig(&restclient.Config{Host: s.URL})
|
||||||
|
|
Loading…
Reference in New Issue