mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Add a feature gate for alpha dynamic volume provisioning
Enabled by default to avoid breaking people, since this was turned on in 1.3.
This commit is contained in:
		@@ -34,6 +34,7 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/openstack"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
 | 
			
		||||
	utilconfig "k8s.io/kubernetes/pkg/util/config"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/io"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume/aws_ebs"
 | 
			
		||||
@@ -125,6 +126,8 @@ func ProbeControllerVolumePlugins(cloud cloudprovider.Interface, config componen
 | 
			
		||||
// TODO: remove in Kubernetes 1.5
 | 
			
		||||
func NewAlphaVolumeProvisioner(cloud cloudprovider.Interface, config componentconfig.VolumeConfiguration) (volume.ProvisionableVolumePlugin, error) {
 | 
			
		||||
	switch {
 | 
			
		||||
	case !utilconfig.DefaultFeatureGate.DynamicVolumeProvisioning():
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	case cloud == nil && config.EnableHostPathProvisioning:
 | 
			
		||||
		return getProvisionablePluginFromVolumePlugins(host_path.ProbeVolumePlugins(
 | 
			
		||||
			volume.VolumeConfig{
 | 
			
		||||
 
 | 
			
		||||
@@ -38,18 +38,20 @@ const (
 | 
			
		||||
	// specification of gates. Examples:
 | 
			
		||||
	//   AllAlpha=false,NewFeature=true  will result in newFeature=true
 | 
			
		||||
	//   AllAlpha=true,NewFeature=false  will result in newFeature=false
 | 
			
		||||
	allAlphaGate             = "AllAlpha"
 | 
			
		||||
	externalTrafficLocalOnly = "AllowExtTrafficLocalEndpoints"
 | 
			
		||||
	dynamicKubeletConfig     = "DynamicKubeletConfig"
 | 
			
		||||
	allAlphaGate              = "AllAlpha"
 | 
			
		||||
	externalTrafficLocalOnly  = "AllowExtTrafficLocalEndpoints"
 | 
			
		||||
	dynamicKubeletConfig      = "DynamicKubeletConfig"
 | 
			
		||||
	dynamicVolumeProvisioning = "DynamicVolumeProvisioning"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// Default values for recorded features.  Every new feature gate should be
 | 
			
		||||
	// represented here.
 | 
			
		||||
	knownFeatures = map[string]featureSpec{
 | 
			
		||||
		allAlphaGate:             {false, alpha},
 | 
			
		||||
		externalTrafficLocalOnly: {false, alpha},
 | 
			
		||||
		dynamicKubeletConfig:     {false, alpha},
 | 
			
		||||
		allAlphaGate:              {false, alpha},
 | 
			
		||||
		externalTrafficLocalOnly:  {false, alpha},
 | 
			
		||||
		dynamicKubeletConfig:      {false, alpha},
 | 
			
		||||
		dynamicVolumeProvisioning: {true, alpha},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Special handling for a few gates.
 | 
			
		||||
@@ -93,6 +95,10 @@ type FeatureGate interface {
 | 
			
		||||
	// alpha: v1.4
 | 
			
		||||
	ExternalTrafficLocalOnly() bool
 | 
			
		||||
 | 
			
		||||
	// owner: @saad-ali
 | 
			
		||||
	// alpha: v1.3
 | 
			
		||||
	DynamicVolumeProvisioning() bool
 | 
			
		||||
 | 
			
		||||
	// TODO: Define accessors for each non-API alpha feature.
 | 
			
		||||
	DynamicKubeletConfig() bool
 | 
			
		||||
}
 | 
			
		||||
@@ -173,6 +179,11 @@ func (f *featureGate) DynamicKubeletConfig() bool {
 | 
			
		||||
	return f.lookup(dynamicKubeletConfig)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DynamicVolumeProvisioning returns value for dynamicVolumeProvisioning
 | 
			
		||||
func (f *featureGate) DynamicVolumeProvisioning() bool {
 | 
			
		||||
	return f.lookup(dynamicVolumeProvisioning)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (f *featureGate) lookup(key string) bool {
 | 
			
		||||
	defaultValue := f.known[key].enabled
 | 
			
		||||
	if f.enabled != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user