mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	SPLIT: kube-apiserver/corerest: split constructor
This commit is contained in:
		@@ -575,19 +575,21 @@ func labelAPIServerHeartbeatFunc(identity string) lease.ProcessLeaseFunc {
 | 
				
			|||||||
// InstallLegacyAPI will install the legacy APIs for the restStorageProviders if they are enabled.
 | 
					// InstallLegacyAPI will install the legacy APIs for the restStorageProviders if they are enabled.
 | 
				
			||||||
func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generic.RESTOptionsGetter) error {
 | 
					func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generic.RESTOptionsGetter) error {
 | 
				
			||||||
	legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
 | 
						legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
 | 
				
			||||||
		StorageFactory:              c.ExtraConfig.StorageFactory,
 | 
							GenericLegacyRESTStorageProvider: corerest.GenericLegacyRESTStorageProvider{
 | 
				
			||||||
		ProxyTransport:              c.ExtraConfig.ProxyTransport,
 | 
								StorageFactory:              c.ExtraConfig.StorageFactory,
 | 
				
			||||||
		KubeletClientConfig:         c.ExtraConfig.KubeletClientConfig,
 | 
								EventTTL:                    c.ExtraConfig.EventTTL,
 | 
				
			||||||
		EventTTL:                    c.ExtraConfig.EventTTL,
 | 
								LoopbackClientConfig:        c.GenericConfig.LoopbackClientConfig,
 | 
				
			||||||
		ServiceIPRange:              c.ExtraConfig.ServiceIPRange,
 | 
								ServiceAccountIssuer:        c.ExtraConfig.ServiceAccountIssuer,
 | 
				
			||||||
		SecondaryServiceIPRange:     c.ExtraConfig.SecondaryServiceIPRange,
 | 
								ExtendExpiration:            c.ExtraConfig.ExtendExpiration,
 | 
				
			||||||
		ServiceNodePortRange:        c.ExtraConfig.ServiceNodePortRange,
 | 
								ServiceAccountMaxExpiration: c.ExtraConfig.ServiceAccountMaxExpiration,
 | 
				
			||||||
		LoopbackClientConfig:        c.GenericConfig.LoopbackClientConfig,
 | 
								APIAudiences:                c.GenericConfig.Authentication.APIAudiences,
 | 
				
			||||||
		ServiceAccountIssuer:        c.ExtraConfig.ServiceAccountIssuer,
 | 
								Informers:                   c.ExtraConfig.VersionedInformers,
 | 
				
			||||||
		ExtendExpiration:            c.ExtraConfig.ExtendExpiration,
 | 
							},
 | 
				
			||||||
		ServiceAccountMaxExpiration: c.ExtraConfig.ServiceAccountMaxExpiration,
 | 
							ProxyTransport:          c.ExtraConfig.ProxyTransport,
 | 
				
			||||||
		APIAudiences:                c.GenericConfig.Authentication.APIAudiences,
 | 
							KubeletClientConfig:     c.ExtraConfig.KubeletClientConfig,
 | 
				
			||||||
		Informers:                   c.ExtraConfig.VersionedInformers,
 | 
							ServiceIPRange:          c.ExtraConfig.ServiceIPRange,
 | 
				
			||||||
 | 
							SecondaryServiceIPRange: c.ExtraConfig.SecondaryServiceIPRange,
 | 
				
			||||||
 | 
							ServiceNodePortRange:    c.ExtraConfig.ServiceNodePortRange,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	legacyRESTStorage, apiGroupInfo, err := legacyRESTStorageProvider.NewLegacyRESTStorage(c.ExtraConfig.APIResourceConfigSource, restOptionsGetter)
 | 
						legacyRESTStorage, apiGroupInfo, err := legacyRESTStorageProvider.NewLegacyRESTStorage(c.ExtraConfig.APIResourceConfigSource, restOptionsGetter)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -153,14 +153,16 @@ func TestLegacyRestStorageStrategies(t *testing.T) {
 | 
				
			|||||||
	defer etcdserver.Terminate(t)
 | 
						defer etcdserver.Terminate(t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	storageProvider := corerest.LegacyRESTStorageProvider{
 | 
						storageProvider := corerest.LegacyRESTStorageProvider{
 | 
				
			||||||
		StorageFactory:       apiserverCfg.ExtraConfig.StorageFactory,
 | 
							GenericLegacyRESTStorageProvider: corerest.GenericLegacyRESTStorageProvider{
 | 
				
			||||||
 | 
								StorageFactory:       apiserverCfg.ExtraConfig.StorageFactory,
 | 
				
			||||||
 | 
								EventTTL:             apiserverCfg.ExtraConfig.EventTTL,
 | 
				
			||||||
 | 
								LoopbackClientConfig: apiserverCfg.GenericConfig.LoopbackClientConfig,
 | 
				
			||||||
 | 
								Informers:            apiserverCfg.ExtraConfig.VersionedInformers,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
		ProxyTransport:       apiserverCfg.ExtraConfig.ProxyTransport,
 | 
							ProxyTransport:       apiserverCfg.ExtraConfig.ProxyTransport,
 | 
				
			||||||
		KubeletClientConfig:  apiserverCfg.ExtraConfig.KubeletClientConfig,
 | 
							KubeletClientConfig:  apiserverCfg.ExtraConfig.KubeletClientConfig,
 | 
				
			||||||
		EventTTL:             apiserverCfg.ExtraConfig.EventTTL,
 | 
					 | 
				
			||||||
		ServiceIPRange:       apiserverCfg.ExtraConfig.ServiceIPRange,
 | 
							ServiceIPRange:       apiserverCfg.ExtraConfig.ServiceIPRange,
 | 
				
			||||||
		ServiceNodePortRange: apiserverCfg.ExtraConfig.ServiceNodePortRange,
 | 
							ServiceNodePortRange: apiserverCfg.ExtraConfig.ServiceNodePortRange,
 | 
				
			||||||
		LoopbackClientConfig: apiserverCfg.GenericConfig.LoopbackClientConfig,
 | 
					 | 
				
			||||||
		Informers:            apiserverCfg.ExtraConfig.VersionedInformers,
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, apiGroupInfo, err := storageProvider.NewLegacyRESTStorage(serverstorage.NewResourceConfig(), apiserverCfg.GenericConfig.RESTOptionsGetter)
 | 
						_, apiGroupInfo, err := storageProvider.NewLegacyRESTStorage(serverstorage.NewResourceConfig(), apiserverCfg.GenericConfig.RESTOptionsGetter)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,20 +67,12 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/serviceaccount"
 | 
						"k8s.io/kubernetes/pkg/serviceaccount"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LegacyRESTStorageProvider provides information needed to build RESTStorage for core, but
 | 
					// GenericLegacyRESTStorageProvider provides information needed to build RESTStorage
 | 
				
			||||||
// does NOT implement the "normal" RESTStorageProvider (yet!)
 | 
					// for generic resources in core, but does NOT implement the "normal"
 | 
				
			||||||
type LegacyRESTStorageProvider struct {
 | 
					// RESTStorageProvider (yet!)
 | 
				
			||||||
 | 
					type GenericLegacyRESTStorageProvider struct {
 | 
				
			||||||
	StorageFactory serverstorage.StorageFactory
 | 
						StorageFactory serverstorage.StorageFactory
 | 
				
			||||||
	// Used for custom proxy dialing, and proxy TLS options
 | 
						EventTTL       time.Duration
 | 
				
			||||||
	ProxyTransport      http.RoundTripper
 | 
					 | 
				
			||||||
	KubeletClientConfig kubeletclient.KubeletClientConfig
 | 
					 | 
				
			||||||
	EventTTL            time.Duration
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// ServiceIPRange is used to build cluster IPs for discovery.
 | 
					 | 
				
			||||||
	ServiceIPRange net.IPNet
 | 
					 | 
				
			||||||
	// allocates ips for secondary service cidr in dual  stack clusters
 | 
					 | 
				
			||||||
	SecondaryServiceIPRange net.IPNet
 | 
					 | 
				
			||||||
	ServiceNodePortRange    utilnet.PortRange
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ServiceAccountIssuer        serviceaccount.TokenGenerator
 | 
						ServiceAccountIssuer        serviceaccount.TokenGenerator
 | 
				
			||||||
	ServiceAccountMaxExpiration time.Duration
 | 
						ServiceAccountMaxExpiration time.Duration
 | 
				
			||||||
@@ -92,16 +84,24 @@ type LegacyRESTStorageProvider struct {
 | 
				
			|||||||
	Informers            informers.SharedInformerFactory
 | 
						Informers            informers.SharedInformerFactory
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// LegacyRESTStorage returns stateful information about particular instances of REST storage to
 | 
					// LegacyRESTStorageProvider provides information needed to build RESTStorage for core, but
 | 
				
			||||||
// master.go for wiring controllers.
 | 
					// does NOT implement the "normal" RESTStorageProvider (yet!)
 | 
				
			||||||
// TODO remove this by running the controller as a poststarthook
 | 
					type LegacyRESTStorageProvider struct {
 | 
				
			||||||
type LegacyRESTStorage struct {
 | 
						GenericLegacyRESTStorageProvider
 | 
				
			||||||
	ServiceClusterIPAllocator          rangeallocation.RangeRegistry
 | 
					
 | 
				
			||||||
	SecondaryServiceClusterIPAllocator rangeallocation.RangeRegistry
 | 
						// Used for custom proxy dialing, and proxy TLS options
 | 
				
			||||||
	ServiceNodePortAllocator           rangeallocation.RangeRegistry
 | 
						ProxyTransport      http.RoundTripper
 | 
				
			||||||
 | 
						KubeletClientConfig kubeletclient.KubeletClientConfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ServiceIPRange is used to build cluster IPs for discovery.
 | 
				
			||||||
 | 
						ServiceIPRange net.IPNet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// allocates ips for secondary service cidr in dual  stack clusters
 | 
				
			||||||
 | 
						SecondaryServiceIPRange net.IPNet
 | 
				
			||||||
 | 
						ServiceNodePortRange    utilnet.PortRange
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (kubernetesservice.RangeRegistries, genericapiserver.APIGroupInfo, error) {
 | 
					func (c GenericLegacyRESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
 | 
				
			||||||
	apiGroupInfo := genericapiserver.APIGroupInfo{
 | 
						apiGroupInfo := genericapiserver.APIGroupInfo{
 | 
				
			||||||
		PrioritizedVersions:          legacyscheme.Scheme.PrioritizedVersionsForGroup(""),
 | 
							PrioritizedVersions:          legacyscheme.Scheme.PrioritizedVersionsForGroup(""),
 | 
				
			||||||
		VersionedResourcesStorageMap: map[string]map[string]rest.Storage{},
 | 
							VersionedResourcesStorageMap: map[string]map[string]rest.Storage{},
 | 
				
			||||||
@@ -110,34 +110,98 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		NegotiatedSerializer:         legacyscheme.Codecs,
 | 
							NegotiatedSerializer:         legacyscheme.Codecs,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						eventStorage, err := eventstore.NewREST(restOptionsGetter, uint64(c.EventTTL.Seconds()))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resourceQuotaStorage, resourceQuotaStatusStorage, err := resourcequotastore.NewREST(restOptionsGetter)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						secretStorage, err := secretstore.NewREST(restOptionsGetter)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						configMapStorage, err := configmapstore.NewREST(restOptionsGetter)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage, err := namespacestore.NewREST(restOptionsGetter)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var serviceAccountStorage *serviceaccountstore.REST
 | 
				
			||||||
 | 
						if c.ServiceAccountIssuer != nil {
 | 
				
			||||||
 | 
							serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, nil, secretStorage.Store, c.ExtendExpiration)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, nil, nil, 0, nil, nil, false)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						storage := map[string]rest.Storage{}
 | 
				
			||||||
 | 
						if resource := "events"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = eventStorage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if resource := "resourcequotas"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = resourceQuotaStorage
 | 
				
			||||||
 | 
							storage[resource+"/status"] = resourceQuotaStatusStorage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if resource := "namespaces"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = namespaceStorage
 | 
				
			||||||
 | 
							storage[resource+"/status"] = namespaceStatusStorage
 | 
				
			||||||
 | 
							storage[resource+"/finalize"] = namespaceFinalizeStorage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if resource := "secrets"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = secretStorage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if resource := "serviceaccounts"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = serviceAccountStorage
 | 
				
			||||||
 | 
							if serviceAccountStorage.Token != nil {
 | 
				
			||||||
 | 
								storage[resource+"/token"] = serviceAccountStorage.Token
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if resource := "configmaps"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							storage[resource] = configMapStorage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(storage) > 0 {
 | 
				
			||||||
 | 
							apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return apiGroupInfo, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (kubernetesservice.RangeRegistries, genericapiserver.APIGroupInfo, error) {
 | 
				
			||||||
 | 
						apiGroupInfo, err := c.GenericLegacyRESTStorageProvider.NewRESTStorage(apiResourceConfigSource, restOptionsGetter)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podDisruptionClient, err := policyclient.NewForConfig(c.LoopbackClientConfig)
 | 
						podDisruptionClient, err := policyclient.NewForConfig(c.LoopbackClientConfig)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	restStorage := kubernetesservice.RangeRegistries{}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podTemplateStorage, err := podtemplatestore.NewREST(restOptionsGetter)
 | 
						podTemplateStorage, err := podtemplatestore.NewREST(restOptionsGetter)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	eventStorage, err := eventstore.NewREST(restOptionsGetter, uint64(c.EventTTL.Seconds()))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	limitRangeStorage, err := limitrangestore.NewREST(restOptionsGetter)
 | 
						limitRangeStorage, err := limitrangestore.NewREST(restOptionsGetter)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	resourceQuotaStorage, resourceQuotaStatusStorage, err := resourcequotastore.NewREST(restOptionsGetter)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	secretStorage, err := secretstore.NewREST(restOptionsGetter)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	persistentVolumeStorage, persistentVolumeStatusStorage, err := pvstore.NewREST(restOptionsGetter)
 | 
						persistentVolumeStorage, persistentVolumeStatusStorage, err := pvstore.NewREST(restOptionsGetter)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
@@ -146,15 +210,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	configMapStorage, err := configmapstore.NewREST(restOptionsGetter)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage, err := namespacestore.NewREST(restOptionsGetter)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	endpointsStorage, err := endpointsstore.NewREST(restOptionsGetter)
 | 
						endpointsStorage, err := endpointsstore.NewREST(restOptionsGetter)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -176,15 +231,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var serviceAccountStorage *serviceaccountstore.REST
 | 
						var rangeRegistries kubernetesservice.RangeRegistries
 | 
				
			||||||
	if c.ServiceAccountIssuer != nil {
 | 
					 | 
				
			||||||
		serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, podStorage.Pod.Store, secretStorage.Store, c.ExtendExpiration)
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, nil, nil, 0, nil, nil, false)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var serviceClusterIPRegistry rangeallocation.RangeRegistry
 | 
						var serviceClusterIPRegistry rangeallocation.RangeRegistry
 | 
				
			||||||
	serviceClusterIPRange := c.ServiceIPRange
 | 
						serviceClusterIPRange := c.ServiceIPRange
 | 
				
			||||||
@@ -225,7 +272,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceClusterIPAllocator.EnableMetrics()
 | 
						serviceClusterIPAllocator.EnableMetrics()
 | 
				
			||||||
	restStorage.ServiceClusterIPRegistry = serviceClusterIPRegistry
 | 
						rangeRegistries.ServiceClusterIPRegistry = serviceClusterIPRegistry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// allocator for secondary service ip range
 | 
						// allocator for secondary service ip range
 | 
				
			||||||
	if c.SecondaryServiceIPRange.IP != nil {
 | 
						if c.SecondaryServiceIPRange.IP != nil {
 | 
				
			||||||
@@ -256,7 +303,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		secondaryServiceClusterIPAllocator.EnableMetrics()
 | 
							secondaryServiceClusterIPAllocator.EnableMetrics()
 | 
				
			||||||
		restStorage.SecondaryServiceClusterIPRegistry = secondaryServiceClusterIPRegistry
 | 
							rangeRegistries.SecondaryServiceClusterIPRegistry = secondaryServiceClusterIPRegistry
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var serviceNodePortRegistry rangeallocation.RangeRegistry
 | 
						var serviceNodePortRegistry rangeallocation.RangeRegistry
 | 
				
			||||||
@@ -274,12 +321,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, fmt.Errorf("cannot create cluster port allocator: %v", err)
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, fmt.Errorf("cannot create cluster port allocator: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	serviceNodePortAllocator.EnableMetrics()
 | 
						serviceNodePortAllocator.EnableMetrics()
 | 
				
			||||||
	restStorage.ServiceNodePortRegistry = serviceNodePortRegistry
 | 
						rangeRegistries.ServiceNodePortRegistry = serviceNodePortRegistry
 | 
				
			||||||
 | 
					 | 
				
			||||||
	controllerStorage, err := controllerstore.NewStorage(restOptionsGetter)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceIPAllocators := map[api.IPFamily]ipallocator.Interface{
 | 
						serviceIPAllocators := map[api.IPFamily]ipallocator.Interface{
 | 
				
			||||||
		serviceClusterIPAllocator.IPFamily(): serviceClusterIPAllocator,
 | 
							serviceClusterIPAllocator.IPFamily(): serviceClusterIPAllocator,
 | 
				
			||||||
@@ -300,7 +342,20 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
							return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	storage := map[string]rest.Storage{}
 | 
						storage := apiGroupInfo.VersionedResourcesStorageMap["v1"]
 | 
				
			||||||
 | 
						if storage == nil {
 | 
				
			||||||
 | 
							storage = map[string]rest.Storage{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// potentially override the generic serviceaccount storage with one that supports pods
 | 
				
			||||||
 | 
						var serviceAccountStorage *serviceaccountstore.REST
 | 
				
			||||||
 | 
						if c.ServiceAccountIssuer != nil {
 | 
				
			||||||
 | 
							serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, podStorage.Pod.Store, storage["secrets"].(rest.Getter), c.ExtendExpiration)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "pods"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "pods"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = podStorage.Pod
 | 
							storage[resource] = podStorage.Pod
 | 
				
			||||||
		storage[resource+"/attach"] = podStorage.Attach
 | 
							storage[resource+"/attach"] = podStorage.Attach
 | 
				
			||||||
@@ -314,7 +369,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
			storage[resource+"/eviction"] = podStorage.Eviction
 | 
								storage[resource+"/eviction"] = podStorage.Eviction
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		storage[resource+"/ephemeralcontainers"] = podStorage.EphemeralContainers
 | 
							storage[resource+"/ephemeralcontainers"] = podStorage.EphemeralContainers
 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if resource := "bindings"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "bindings"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = podStorage.LegacyBinding
 | 
							storage[resource] = podStorage.LegacyBinding
 | 
				
			||||||
@@ -325,6 +379,11 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "replicationcontrollers"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "replicationcontrollers"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							controllerStorage, err := controllerstore.NewStorage(restOptionsGetter)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		storage[resource] = controllerStorage.Controller
 | 
							storage[resource] = controllerStorage.Controller
 | 
				
			||||||
		storage[resource+"/status"] = controllerStorage.Status
 | 
							storage[resource+"/status"] = controllerStorage.Status
 | 
				
			||||||
		if legacyscheme.Scheme.IsVersionRegistered(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
 | 
							if legacyscheme.Scheme.IsVersionRegistered(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
 | 
				
			||||||
@@ -332,6 +391,20 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// potentially override generic storage for service account (with pod support)
 | 
				
			||||||
 | 
						if resource := "serviceaccounts"; serviceAccountStorage != nil && apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
 | 
							// don't leak go routines
 | 
				
			||||||
 | 
							storage[resource].Destroy()
 | 
				
			||||||
 | 
							if storage[resource+"/token"] != nil {
 | 
				
			||||||
 | 
								storage[resource+"/token"].Destroy()
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							storage[resource] = serviceAccountStorage
 | 
				
			||||||
 | 
							if serviceAccountStorage.Token != nil {
 | 
				
			||||||
 | 
								storage[resource+"/token"] = serviceAccountStorage.Token
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "services"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "services"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = serviceRESTStorage
 | 
							storage[resource] = serviceRESTStorage
 | 
				
			||||||
		storage[resource+"/proxy"] = serviceRESTProxy
 | 
							storage[resource+"/proxy"] = serviceRESTProxy
 | 
				
			||||||
@@ -348,36 +421,10 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		storage[resource+"/status"] = nodeStorage.Status
 | 
							storage[resource+"/status"] = nodeStorage.Status
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "events"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = eventStorage
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "limitranges"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "limitranges"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = limitRangeStorage
 | 
							storage[resource] = limitRangeStorage
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "resourcequotas"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = resourceQuotaStorage
 | 
					 | 
				
			||||||
		storage[resource+"/status"] = resourceQuotaStatusStorage
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "namespaces"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = namespaceStorage
 | 
					 | 
				
			||||||
		storage[resource+"/status"] = namespaceStatusStorage
 | 
					 | 
				
			||||||
		storage[resource+"/finalize"] = namespaceFinalizeStorage
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "secrets"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = secretStorage
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "serviceaccounts"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = serviceAccountStorage
 | 
					 | 
				
			||||||
		if serviceAccountStorage.Token != nil {
 | 
					 | 
				
			||||||
			storage[resource+"/token"] = serviceAccountStorage.Token
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "persistentvolumes"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "persistentvolumes"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = persistentVolumeStorage
 | 
							storage[resource] = persistentVolumeStorage
 | 
				
			||||||
		storage[resource+"/status"] = persistentVolumeStatusStorage
 | 
							storage[resource+"/status"] = persistentVolumeStatusStorage
 | 
				
			||||||
@@ -388,10 +435,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		storage[resource+"/status"] = persistentVolumeClaimStatusStorage
 | 
							storage[resource+"/status"] = persistentVolumeClaimStatusStorage
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if resource := "configmaps"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
					 | 
				
			||||||
		storage[resource] = configMapStorage
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if resource := "componentstatuses"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
						if resource := "componentstatuses"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
 | 
				
			||||||
		storage[resource] = componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate)
 | 
							storage[resource] = componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -400,7 +443,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
 | 
				
			|||||||
		apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
 | 
							apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return restStorage, apiGroupInfo, nil
 | 
						return rangeRegistries, apiGroupInfo, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (p LegacyRESTStorageProvider) GroupName() string {
 | 
					func (p LegacyRESTStorageProvider) GroupName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user