diff --git a/controllers/storagecluster/external_resources.go b/controllers/storagecluster/external_resources.go index 295878ffb2..ffc3c008b2 100644 --- a/controllers/storagecluster/external_resources.go +++ b/controllers/storagecluster/external_resources.go @@ -308,7 +308,7 @@ func (r *StorageClusterReconciler) createExternalStorageClusterResources(instanc scc = newCephFilesystemStorageClassConfiguration(instance) enableRookCSICephFS = true } else if d.Name == cephRbdStorageClassName { - scc = newCephBlockPoolStorageClassConfiguration(instance) + scc = newCephBlockPoolStorageClassConfiguration(instance, d.Data["dataPool"]) } else if d.Name == cephRgwStorageClassName { rgwEndpoint := d.Data[externalCephRgwEndpointKey] if err := checkEndpointReachable(rgwEndpoint, 5*time.Second); err != nil { diff --git a/controllers/storagecluster/external_resources_test.go b/controllers/storagecluster/external_resources_test.go index 62f6928ff1..be6eb29167 100644 --- a/controllers/storagecluster/external_resources_test.go +++ b/controllers/storagecluster/external_resources_test.go @@ -44,7 +44,8 @@ var globalTestExternalResources = []ExternalResource{ { Kind: "StorageClass", Data: map[string]string{ - "pool": "device_health_metrics", + "pool": "device_health_metrics", + "dataPool": "ec-data-pool", }, Name: "ceph-rbd", }, diff --git a/controllers/storagecluster/generate.go b/controllers/storagecluster/generate.go index 6d77cdf2e2..4a129fa3ba 100644 --- a/controllers/storagecluster/generate.go +++ b/controllers/storagecluster/generate.go @@ -27,6 +27,10 @@ func generateNameForCephBlockPool(initData *ocsv1.StorageCluster) string { return fmt.Sprintf("%s-cephblockpool", initData.Name) } +func generateNameForEcCephBlockPool(initData *ocsv1.StorageCluster) string { + return fmt.Sprintf("ec-%s-cephblockpool", initData.Name) +} + func generateNameForCephObjectStore(initData *ocsv1.StorageCluster) string { return fmt.Sprintf("%s-%s", initData.Name, "cephobjectstore") } diff --git a/controllers/storagecluster/storageclasses.go b/controllers/storagecluster/storageclasses.go index 1655d9682c..04fdf63e0d 100644 --- a/controllers/storagecluster/storageclasses.go +++ b/controllers/storagecluster/storageclasses.go @@ -194,11 +194,11 @@ func newCephFilesystemStorageClassConfiguration(initData *ocsv1.StorageCluster) } // newCephBlockPoolStorageClassConfiguration generates configuration options for a Ceph Block Pool StorageClass. -func newCephBlockPoolStorageClassConfiguration(initData *ocsv1.StorageCluster) StorageClassConfiguration { +func newCephBlockPoolStorageClassConfiguration(initData *ocsv1.StorageCluster, dataPool string) StorageClassConfiguration { persistentVolumeReclaimDelete := corev1.PersistentVolumeReclaimDelete allowVolumeExpansion := true managementSpec := initData.Spec.ManagedResources.CephBlockPools - return StorageClassConfiguration{ + sc := StorageClassConfiguration{ storageClass: &storagev1.StorageClass{ ObjectMeta: metav1.ObjectMeta{ Name: generateNameForCephBlockPoolSC(initData), @@ -228,6 +228,12 @@ func newCephBlockPoolStorageClassConfiguration(initData *ocsv1.StorageCluster) S disable: managementSpec.DisableStorageClass, isClusterExternal: initData.Spec.ExternalStorage.Enable, } + if dataPool != "" { + sc.storageClass.Parameters = map[string]string{ + "dataPool": generateNameForEcCephBlockPool(initData), + } + } + return sc } // newCephOBCStorageClassConfiguration generates configuration options for a Ceph Object Store StorageClass. @@ -261,7 +267,7 @@ func newCephOBCStorageClassConfiguration(initData *ocsv1.StorageCluster) Storage func (r *StorageClusterReconciler) newStorageClassConfigurations(initData *ocsv1.StorageCluster) ([]StorageClassConfiguration, error) { ret := []StorageClassConfiguration{ newCephFilesystemStorageClassConfiguration(initData), - newCephBlockPoolStorageClassConfiguration(initData), + newCephBlockPoolStorageClassConfiguration(initData, ""), } // OBC storageclass will be returned only in TWO conditions, // a. either 'externalStorage' is enabled