diff --git a/Documentation/ceph-csi-drivers.md b/Documentation/ceph-csi-drivers.md index ccc3ba244d8b8..9c216d00e9175 100644 --- a/Documentation/ceph-csi-drivers.md +++ b/Documentation/ceph-csi-drivers.md @@ -19,6 +19,10 @@ For documentation on consuming the storage: * RBD: See the [Block Storage](ceph-block.md) topic * CephFS: See the [Shared Filesystem](ceph-filesystem.md) topic +## Supported Versions +The supported Ceph CSI version is 3.3.0 or greater with Rook. Refer to ceph csi [releases](https://github.com/ceph/ceph-csi/releases) +for more information. + ## Static Provisioning Both drivers also support the creation of static PV and static PVC from existing RBD image/CephFS volume. Refer to [static PVC](https://github.com/ceph/ceph-csi/blob/devel/docs/static-pvc.md) for more information. diff --git a/pkg/operator/ceph/csi/spec.go b/pkg/operator/ceph/csi/spec.go index 3f1bab1e81193..b01eac2e5c483 100644 --- a/pkg/operator/ceph/csi/spec.go +++ b/pkg/operator/ceph/csi/spec.go @@ -312,14 +312,7 @@ func startDrivers(clientset kubernetes.Interface, rookclientset rookclient.Inter if err != nil { return errors.Wrap(err, "failed to load CSI_PROVISIONER_PRIORITY_CLASSNAME setting") } - - // OMAP generator will be enabled by default - // If AllowUnsupported is set to false and if CSI version is less than - // <3.2.0 disable OMAP generator sidecar - if !v.SupportsOMAPController() { - tp.EnableOMAPGenerator = false - } - + enableOMAPGenerator, err := k8sutil.GetOperatorSetting(clientset, controllerutil.OperatorSettingConfigMapName, "CSI_ENABLE_OMAP_GENERATOR", "false") if err != nil { return errors.Wrap(err, "failed to load CSI_ENABLE_OMAP_GENERATOR setting") diff --git a/pkg/operator/ceph/csi/version.go b/pkg/operator/ceph/csi/version.go index 685a488f23d7e..bcc8166b3a417 100644 --- a/pkg/operator/ceph/csi/version.go +++ b/pkg/operator/ceph/csi/version.go @@ -25,22 +25,16 @@ import ( ) var ( - //minimum supported version is 3.0.0 - minimum = CephCSIVersion{3, 0, 0} + //minimum supported version is 3.3.0 + minimum = CephCSIVersion{3, 3, 0} //supportedCSIVersions are versions that rook supports - releasev310 = CephCSIVersion{3, 1, 0} - releasev320 = CephCSIVersion{3, 2, 0} releasev330 = CephCSIVersion{3, 3, 0} releasev340 = CephCSIVersion{3, 4, 0} supportedCSIVersions = []CephCSIVersion{ minimum, - releasev310, - releasev320, releasev330, releasev340, } - // omap generator is supported in v3.2.0+ - omapSupportedVersions = releasev320 // for parsing the output of `cephcsi` versionCSIPattern = regexp.MustCompile(`v(\d+)\.(\d+)\.(\d+)`) ) @@ -57,33 +51,6 @@ func (v *CephCSIVersion) String() string { v.Major, v.Minor, v.Bugfix) } -// SupportsOMAPController checks if the detected version supports OMAP generator -func (v *CephCSIVersion) SupportsOMAPController() bool { - - // if AllowUnsupported is set also a csi-image greater than the supported ones are allowed - if AllowUnsupported { - return true - } - - if !v.isAtLeast(&minimum) { - return false - } - - if v.Major > omapSupportedVersions.Major { - return true - } - if v.Major == omapSupportedVersions.Major { - if v.Minor > omapSupportedVersions.Minor { - return true - } - if v.Minor == omapSupportedVersions.Minor { - return v.Bugfix >= omapSupportedVersions.Bugfix - } - } - - return false -} - // Supported checks if the detected version is part of the known supported CSI versions func (v *CephCSIVersion) Supported() bool { if !v.isAtLeast(&minimum) { diff --git a/pkg/operator/ceph/csi/version_test.go b/pkg/operator/ceph/csi/version_test.go index f09dacf1a1833..c69ae0c4ce5f0 100644 --- a/pkg/operator/ceph/csi/version_test.go +++ b/pkg/operator/ceph/csi/version_test.go @@ -23,11 +23,7 @@ import ( ) var ( - testMinVersion = CephCSIVersion{2, 0, 0} - testReleaseV210 = CephCSIVersion{2, 1, 0} - testReleaseV300 = CephCSIVersion{3, 0, 0} - testReleaseV320 = CephCSIVersion{3, 2, 0} - testReleaseV321 = CephCSIVersion{3, 2, 1} + testMinVersion = CephCSIVersion{3, 3, 0} testReleaseV330 = CephCSIVersion{3, 3, 0} testReleaseV340 = CephCSIVersion{3, 4, 0} testVersionUnsupported = CephCSIVersion{4, 0, 0} @@ -43,44 +39,8 @@ func TestIsAtLeast(t *testing.T) { ret = testMinVersion.isAtLeast(&testMinVersion) assert.Equal(t, true, ret) - // Test version which is greater (minor) - version = CephCSIVersion{2, 1, 0} - ret = testMinVersion.isAtLeast(&version) - assert.Equal(t, false, ret) - - // Test version which is greater (bugfix) - version = CephCSIVersion{2, 2, 0} - ret = testMinVersion.isAtLeast(&version) - assert.Equal(t, false, ret) - - // Test for v2.1.0 - // Test version which is greater (bugfix) - version = CephCSIVersion{2, 0, 1} - ret = testReleaseV210.isAtLeast(&version) - assert.Equal(t, true, ret) - // Test version which is equal - ret = testReleaseV210.isAtLeast(&testReleaseV210) - assert.Equal(t, true, ret) - - // Test version which is greater (minor) - version = CephCSIVersion{2, 1, 1} - ret = testReleaseV210.isAtLeast(&version) - assert.Equal(t, false, ret) - - // Test version which is greater (bugfix) - version = CephCSIVersion{2, 2, 0} - ret = testReleaseV210.isAtLeast(&version) - assert.Equal(t, false, ret) - - // Test for 3.0.0 - // Test version which is equal - ret = testReleaseV300.isAtLeast(&testReleaseV300) - assert.Equal(t, true, ret) - - // Test for 3.3.0 - // Test version which is lesser - ret = testReleaseV330.isAtLeast(&testReleaseV300) + ret = testReleaseV330.isAtLeast(&testReleaseV330) assert.Equal(t, true, ret) // Test for 3.4.0 @@ -88,50 +48,23 @@ func TestIsAtLeast(t *testing.T) { ret = testReleaseV340.isAtLeast(&testReleaseV330) assert.Equal(t, true, ret) - // Test version which is greater (minor) - version = CephCSIVersion{3, 1, 1} - ret = testReleaseV300.isAtLeast(&version) - assert.Equal(t, false, ret) - - // Test version which is greater (bugfix) - version = CephCSIVersion{3, 2, 0} - ret = testReleaseV300.isAtLeast(&version) - assert.Equal(t, false, ret) } func TestSupported(t *testing.T) { AllowUnsupported = false ret := testMinVersion.Supported() - assert.Equal(t, false, ret) + assert.Equal(t, true, ret) ret = testVersionUnsupported.Supported() assert.Equal(t, false, ret) + ret = testReleaseV330.Supported() + assert.Equal(t, true, ret) + ret = testReleaseV340.Supported() assert.Equal(t, true, ret) } -func TestSupportOMAPController(t *testing.T) { - AllowUnsupported = true - ret := testMinVersion.SupportsOMAPController() - assert.True(t, ret) - - AllowUnsupported = false - ret = testMinVersion.SupportsOMAPController() - assert.False(t, ret) - - ret = testReleaseV300.SupportsOMAPController() - assert.False(t, ret) - - ret = testReleaseV320.SupportsOMAPController() - assert.True(t, ret) - - ret = testReleaseV321.SupportsOMAPController() - assert.True(t, ret) - - ret = testReleaseV330.SupportsOMAPController() - assert.True(t, ret) -} func Test_extractCephCSIVersion(t *testing.T) { expectedVersion := CephCSIVersion{3, 0, 0} csiString := []byte(`Cephcsi Version: v3.0.0