Skip to content

Commit

Permalink
feat: add featuregate
Browse files Browse the repository at this point in the history
  • Loading branch information
vie-serendipity committed Apr 8, 2024
1 parent 3d017c2 commit dcb98d1
Show file tree
Hide file tree
Showing 9 changed files with 877 additions and 24 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ require (
k8s.io/apiextensions-apiserver v0.18.8
k8s.io/apimachinery v0.26.12
k8s.io/client-go v0.26.12
k8s.io/component-base v0.26.12
k8s.io/kubelet v0.26.12
k8s.io/mount-utils v0.21.1
k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
Expand Down Expand Up @@ -111,5 +112,6 @@ replace (
github.com/stretchr/testify => github.com/stretchr/testify v1.3.0
google.golang.org/appengine => google.golang.org/appengine v1.4.0
gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.2.2
k8s.io/component-base => k8s.io/component-base v0.23.16
sigs.k8s.io/yaml => sigs.k8s.io/yaml v1.1.0
)
259 changes: 238 additions & 21 deletions go.sum

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/dbfs"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/disk"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/ens"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/features"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/metric"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/nas"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/om"
Expand Down Expand Up @@ -94,6 +95,7 @@ type globalMetricConfig struct {

// Nas CSI Plugin
func main() {
flag.Var(features.FunctionalMutableFeatureGate, "featuregate", "Enable or disable specific feature gates")
flag.Parse()
serviceType := os.Getenv(utils.ServiceType)

Expand Down
8 changes: 5 additions & 3 deletions pkg/disk/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
snapClientset "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/cloud/metadata"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/common"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/features"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/options"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/utils"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/version"
Expand Down Expand Up @@ -240,9 +241,10 @@ func GlobalConfigSet(m metadata.MetadataProvider) *restclient.Config {

// Global Config Set
GlobalConfigVar = GlobalConfig{
Region: metadata.MustGet(m, metadata.RegionID),
NodeID: nodeID,
ADControllerEnable: csiCfg.GetBool("disk-adcontroller-enable", "DISK_AD_CONTROLLER", false),
Region: metadata.MustGet(m, metadata.RegionID),
NodeID: nodeID,
//ADControllerEnable: csiCfg.GetBool("disk-adcontroller-enable", "DISK_AD_CONTROLLER", false),
ADControllerEnable: features.FunctionalMutableFeatureGate.Enabled(features.DiskADController),
DiskTagEnable: csiCfg.GetBool("disk-tag-by-plugin", "DISK_TAGED_BY_PLUGIN", false),
DiskBdfEnable: csiCfg.GetBool("disk-bdf-enable", "DISK_BDF_ENABLE", false),
MetricEnable: csiCfg.GetBool("disk-metric-by-plugin", "DISK_METRIC_BY_PLUGIN", true),
Expand Down
32 changes: 32 additions & 0 deletions pkg/features/features.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package features

import (
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/component-base/featuregate"
)

const (
DiskADController featuregate.Feature = "DiskADController"
DiskDetachBeforeAttach featuregate.Feature = "DetachBeforeAttach"
DiskDetachBeforeDelete featuregate.Feature = "DetachBeforeDelete"
DBFSMetricByPlugin featuregate.Feature = "DBFSMetricByPlugin"
DBFSADController featuregate.Feature = "DBFSADController"
)

var (
FunctionalMutableFeatureGate = featuregate.NewFeatureGate()
defaultDiskFeatureGate = map[featuregate.Feature]featuregate.FeatureSpec{
DiskADController: {Default: false, PreRelease: featuregate.Alpha},
DiskDetachBeforeAttach: {Default: true, PreRelease: featuregate.Alpha},
DiskDetachBeforeDelete: {Default: true, PreRelease: featuregate.Alpha},
}
defaultDBFSFeatureGate = map[featuregate.Feature]featuregate.FeatureSpec{
DBFSMetricByPlugin: {Default: false, PreRelease: featuregate.Alpha},
DBFSADController: {Default: false, PreRelease: featuregate.Alpha},
}
)

func init() {
runtime.Must(FunctionalMutableFeatureGate.Add(defaultDiskFeatureGate))
runtime.Must(FunctionalMutableFeatureGate.Add(defaultDBFSFeatureGate))
}
202 changes: 202 additions & 0 deletions vendor/k8s.io/component-base/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions vendor/k8s.io/component-base/featuregate/OWNERS

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit dcb98d1

Please sign in to comment.