Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion pkg/common/unittestcommon/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ var mapVolumePathToID map[string]map[string]string
func GetFakeContainerOrchestratorInterface(orchestratorType int) (commonco.COCommonInterface, error) {
if orchestratorType == common.Kubernetes {
defaultFSS := map[string]string{
"file-volume": "true",
"block-volume-snapshot": "true",
"tkgs-ha": "true",
"list-volumes": "true",
Expand Down
2 changes: 0 additions & 2 deletions pkg/csi/service/common/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -412,8 +412,6 @@ const (
// CSISVFeatureStateReplication is feature flag for SV feature state
// replication feature.
CSISVFeatureStateReplication = "csi-sv-feature-states-replication"
// FileVolume is feature flag name for file volume support in WCP.
FileVolume = "file-volume"
// TriggerCSIFullSyync is feature flag to trigger full sync.
TriggerCsiFullSync = "trigger-csi-fullsync"
// CSIVolumeManagerIdempotency is the feature flag for idempotency handling
Expand Down
4 changes: 0 additions & 4 deletions pkg/csi/service/wcp/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -1736,10 +1736,6 @@ func (c *controller) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequ
}

if !isBlockRequest {
if !commonco.ContainerOrchestratorUtility.IsFSSEnabled(ctx, common.FileVolume) {
return nil, csifault.CSIUnimplementedFault, logger.LogNewErrorCode(log, codes.Unimplemented,
"file volume feature is disabled on the cluster")
}
// Block file volume provisioning if FSS Workload_Domain_Isolation_Supported is enabled but
// 'fileVolumeActivated' field is set to false in vSphere config secret.
if isWorkloadDomainIsolationEnabled &&
Expand Down
14 changes: 2 additions & 12 deletions pkg/csi/service/wcpguest/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@ func (c *controller) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequ
return nil, csifault.CSIInternalFault, status.Error(codes.DeadlineExceeded, msg)
}
attributes := make(map[string]string)
if commonco.ContainerOrchestratorUtility.IsFSSEnabled(ctx, common.FileVolume) && isFileVolumeRequest {
if isFileVolumeRequest {
attributes[common.AttributeDiskType] = common.DiskTypeFileVolume
} else {
attributes[common.AttributeDiskType] = common.DiskTypeBlockVolume
Expand Down Expand Up @@ -725,12 +725,6 @@ func (c *controller) ControllerPublishVolume(ctx context.Context, req *csi.Contr
// File volumes support
if isFileVolumeRequest {
volumeType = prometheus.PrometheusFileVolumeType
// Check the feature state for file volume support
if !commonco.ContainerOrchestratorUtility.IsFSSEnabled(ctx, common.FileVolume) {
// Feature is disabled on the cluster
return nil, csifault.CSIInternalFault,
status.Error(codes.InvalidArgument, "File volume not supported.")
}
return controllerPublishForFileVolume(ctx, req, c)
}
volumeType = prometheus.PrometheusBlockVolumeType
Expand Down Expand Up @@ -1081,11 +1075,7 @@ func (c *controller) ControllerUnpublishVolume(ctx context.Context, req *csi.Con
}
if isFileVolume {
volumeType = prometheus.PrometheusFileVolumeType
if commonco.ContainerOrchestratorUtility.IsFSSEnabled(ctx, common.FileVolume) {
return controllerUnpublishForFileVolume(ctx, req, c)
}
// Feature is disabled on the cluster
return nil, csifault.CSIInvalidArgumentFault, status.Error(codes.InvalidArgument, "File volume not supported.")
return controllerUnpublishForFileVolume(ctx, req, c)
}
volumeType = prometheus.PrometheusBlockVolumeType
return controllerUnpublishForBlockVolume(ctx, req, c)
Expand Down
3 changes: 1 addition & 2 deletions pkg/csi/service/wcpguest/controller_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,7 @@ func validateGuestClusterCreateVolumeRequest(ctx context.Context, req *csi.Creat
}

// Fail file volume creation if file volume feature gate is disabled
if !commonco.ContainerOrchestratorUtility.IsFSSEnabled(ctx, common.FileVolume) &&
common.IsFileVolumeRequest(ctx, req.GetVolumeCapabilities()) {
if common.IsFileVolumeRequest(ctx, req.GetVolumeCapabilities()) {
return logger.LogNewErrorCode(log, codes.InvalidArgument, "File volume provisioning is not supported.")
}
return common.ValidateCreateVolumeRequest(ctx, req)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ import (
"sigs.k8s.io/vsphere-csi-driver/v3/pkg/csi/service/logger"
"sigs.k8s.io/vsphere-csi-driver/v3/pkg/internalapis/cnsoperator/cnsfilevolumeclient"
k8s "sigs.k8s.io/vsphere-csi-driver/v3/pkg/kubernetes"
"sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer"
cnsoperatortypes "sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer/cnsoperator/types"
"sigs.k8s.io/vsphere-csi-driver/v3/pkg/syncer/cnsoperator/util"
)
Expand Down Expand Up @@ -99,17 +98,7 @@ func Add(mgr manager.Manager, clusterFlavor cnstypes.CnsClusterFlavor,
}
}
volumePermissionLockMap = &sync.Map{}
// Initialize the k8s orchestrator interface.
coCommonInterface, err := commonco.GetContainerOrchestratorInterface(ctx, common.Kubernetes,
cnstypes.CnsClusterFlavorWorkload, &syncer.COInitParams)
if err != nil {
log.Errorf("failed to create CO agnostic interface. Err: %v", err)
return err
}
if !coCommonInterface.IsFSSEnabled(ctx, common.FileVolume) {
log.Infof("Not initializing the CnsFileAccessConfig Controller as File volume feature is disabled on the cluster")
return nil
}

// Initializes kubernetes client.
k8sclient, err := k8s.NewClient(ctx)
if err != nil {
Expand Down
34 changes: 16 additions & 18 deletions pkg/syncer/cnsoperator/manager/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,24 +259,22 @@ func InitCnsOperator(ctx context.Context, clusterFlavor cnstypes.CnsClusterFlavo
}

if !stretchedSupervisor || syncer.IsWorkloadDomainIsolationSupported {
if cnsOperator.coCommonInterface.IsFSSEnabled(ctx, common.FileVolume) {
// Create CnsFileAccessConfig CRD from manifest if file volume feature
// is enabled.
err = k8s.CreateCustomResourceDefinitionFromManifest(ctx, cnsoperatorconfig.EmbedCnsFileAccessConfigCRFile,
cnsoperatorconfig.EmbedCnsFileAccessConfigCRFileName)
if err != nil {
log.Errorf("Failed to create %q CRD. Err: %+v", cnsoperatorv1alpha1.CnsFileAccessConfigPlural, err)
return err
}
// Create FileVolumeClients CRD from manifest if file volume feature
// is enabled.
err = k8s.CreateCustomResourceDefinitionFromManifest(ctx,
internalapiscnsoperatorconfig.EmbedCnsFileVolumeClientFile,
internalapiscnsoperatorconfig.EmbedCnsFileVolumeClientFileName)
if err != nil {
log.Errorf("Failed to create %q CRD. Err: %+v", internalapis.CnsFileVolumeClientPlural, err)
return err
}
// Create CnsFileAccessConfig CRD from manifest if file volume feature
// is enabled.
err = k8s.CreateCustomResourceDefinitionFromManifest(ctx, cnsoperatorconfig.EmbedCnsFileAccessConfigCRFile,
cnsoperatorconfig.EmbedCnsFileAccessConfigCRFileName)
if err != nil {
log.Errorf("Failed to create %q CRD. Err: %+v", cnsoperatorv1alpha1.CnsFileAccessConfigPlural, err)
return err
}
// Create FileVolumeClients CRD from manifest if file volume feature
// is enabled.
err = k8s.CreateCustomResourceDefinitionFromManifest(ctx,
internalapiscnsoperatorconfig.EmbedCnsFileVolumeClientFile,
internalapiscnsoperatorconfig.EmbedCnsFileVolumeClientFileName)
if err != nil {
log.Errorf("Failed to create %q CRD. Err: %+v", internalapis.CnsFileVolumeClientPlural, err)
return err
}
}
} else if clusterFlavor == cnstypes.CnsClusterFlavorVanilla {
Expand Down
20 changes: 10 additions & 10 deletions tests/e2e/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module sigs.k8s.io/vsphere-csi-driver/v3/tests/e2e

go 1.25.5
go 1.26.1

require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
Expand All @@ -24,12 +24,12 @@ require (
k8s.io/kubernetes v1.35.0
k8s.io/pod-security-admission v0.34.0
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
sigs.k8s.io/controller-runtime v0.19.7
sigs.k8s.io/controller-runtime v0.23.3
sigs.k8s.io/vsphere-csi-driver/v3 v3.0.0-00010101000000-000000000000
)

require (
cel.dev/expr v0.24.0 // indirect
cel.dev/expr v0.25.1 // indirect
cyphar.com/go-pathrs v0.2.1 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect
Expand Down Expand Up @@ -134,7 +134,7 @@ require (
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
go.opentelemetry.io/otel/metric v1.40.0 // indirect
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
go.opentelemetry.io/otel/sdk v1.39.0 // indirect
go.opentelemetry.io/otel/trace v1.40.0 // indirect
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
Expand All @@ -144,16 +144,16 @@ require (
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
golang.org/x/mod v0.31.0 // indirect
golang.org/x/net v0.48.0 // indirect
golang.org/x/oauth2 v0.32.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.39.0 // indirect
golang.org/x/term v0.38.0 // indirect
golang.org/x/text v0.32.0 // indirect
golang.org/x/time v0.9.0 // indirect
golang.org/x/tools v0.40.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 // indirect
google.golang.org/grpc v1.77.0 // indirect
google.golang.org/grpc v1.79.3 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
Expand Down Expand Up @@ -184,7 +184,7 @@ require (
sigs.k8s.io/kustomize/api v0.20.1 // indirect
sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 // indirect
sigs.k8s.io/yaml v1.6.0 // indirect
)

Expand All @@ -207,6 +207,8 @@ replace (
k8s.io/cri-client => k8s.io/cri-client v0.35.0
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.35.0
k8s.io/dynamic-resource-allocation => k8s.io/dynamic-resource-allocation v0.35.0
k8s.io/endpointslice => k8s.io/endpointslice v0.28.1
k8s.io/externaljwt => k8s.io/externaljwt v0.31.0
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.35.0
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.35.0
k8s.io/kube-proxy => k8s.io/kube-proxy v0.35.0
Expand All @@ -224,6 +226,4 @@ replace (
k8s.io/sample-controller => k8s.io/sample-controller v0.35.0
sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.19.1
sigs.k8s.io/vsphere-csi-driver/v3 => ../../
k8s.io/endpointslice => k8s.io/endpointslice v0.28.1
k8s.io/externaljwt => k8s.io/externaljwt v0.31.0
)
6 changes: 6 additions & 0 deletions tests/e2e/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
cyphar.com/go-pathrs v0.2.1 h1:9nx1vOgwVvX1mNBWDu93+vaceedpbsDqo+XuBGL40b8=
cyphar.com/go-pathrs v0.2.1/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
Expand Down Expand Up @@ -339,6 +340,7 @@ go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c
go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E=
go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg=
go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE=
go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM=
go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA=
go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
Expand Down Expand Up @@ -380,6 +382,7 @@ golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY=
golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand Down Expand Up @@ -426,10 +429,12 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4=
google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down Expand Up @@ -516,5 +521,6 @@ sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=