Skip to content

Commit

Permalink
Add a feature gate for alpha dynamic volume provisioning
Browse files Browse the repository at this point in the history
Enabled by default to avoid breaking people, since this was
turned on in 1.3.
  • Loading branch information
j3ffml committed Aug 24, 2016
1 parent 49ff2e8 commit 991b07e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
3 changes: 3 additions & 0 deletions cmd/kube-controller-manager/app/plugins.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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{
Expand Down
23 changes: 17 additions & 6 deletions pkg/util/config/feature_gate.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit 991b07e

Please sign in to comment.