4646 subvolumegroup = "e2e"
4747 fileSystemName = "myfs"
4848 fileSystemPoolName = "myfs-replicated"
49+
50+ helmCephFSPodsLabel = "ceph-csi-cephfs"
51+
52+ operatorCephFSDeploymentName = "cephfs.csi.ceph.com-ctrlplugin"
53+ operatorCephFSDaemonsetName = "cephfs.csi.ceph.com-nodeplugin"
54+
55+ cephFSDeployment CephFSDeploymentMethod
4956)
5057
58+ type CephFSDeployment struct {
59+ DriverInfo
60+ }
61+
5162func deployCephfsPlugin () {
5263 // delete objects deployed by rook
5364
@@ -165,6 +176,18 @@ func validateSubvolumePath(f *framework.Framework, pvcName, pvcNamespace, fileSy
165176 return nil
166177}
167178
179+ func NewCephFSDeployment (c clientset.Interface ) CephFSDeploymentMethod {
180+ return & CephFSDeployment {
181+ DriverInfo : DriverInfo {
182+ clientSet : c ,
183+ deploymentName : cephFSDeploymentName ,
184+ daemonsetName : cephFSDeamonSetName ,
185+ helmPodLabelName : helmCephFSPodsLabel ,
186+ driverContainers : []string {cephFSContainerName },
187+ },
188+ }
189+ }
190+
168191var _ = Describe (cephfsType , func () {
169192 f := framework .NewDefaultFramework (cephfsType )
170193 f .NamespacePodSecurityEnforceLevel = api .LevelPrivileged
@@ -175,13 +198,20 @@ var _ = Describe(cephfsType, func() {
175198 Skip ("Skipping CephFS E2E" )
176199 }
177200 c = f .ClientSet
178- if deployCephFS {
179- if cephCSINamespace != defaultNs {
180- err := createNamespace (c , cephCSINamespace )
181- if err != nil {
182- framework .Failf ("failed to create namespace %s: %v" , cephCSINamespace , err )
183- }
201+ cephFSDeployment = NewCephFSDeployment (c )
202+ if operatorDeployment {
203+ cephFSDeployment = NewCephFSOperatorDeployment (c )
204+ }
205+
206+ // No need to create the namespace if ceph-csi is deployed via helm or operator.
207+ if cephCSINamespace != defaultNs && ! (helmTest || operatorDeployment ) {
208+ err := createNamespace (c , cephCSINamespace )
209+ if err != nil {
210+ framework .Failf ("failed to create namespace %s: %v" , cephCSINamespace , err )
184211 }
212+ }
213+
214+ if deployCephFS {
185215 deployCephfsPlugin ()
186216 }
187217 err := createConfigMap (cephFSDirPath , f .ClientSet , f )
@@ -208,12 +238,9 @@ var _ = Describe(cephfsType, func() {
208238 }
209239 deployVault (f .ClientSet , deployTimeout )
210240
211- // wait for cluster name update in deployment
212- containers := []string {cephFSContainerName }
213- err = waitForContainersArgsUpdate (c , cephCSINamespace , cephFSDeploymentName ,
214- "clustername" , defaultClusterName , containers , deployTimeout )
241+ err = cephFSDeployment .setClusterName (defaultClusterName )
215242 if err != nil {
216- framework .Failf ("timeout waiting for deployment update %s/%s : %v" , cephCSINamespace , cephFSDeploymentName , err )
243+ framework .Failf ("failed to set cluster name : %v" , err )
217244 }
218245
219246 err = createSubvolumegroup (f , fileSystemName , subvolumegroup )
@@ -226,13 +253,14 @@ var _ = Describe(cephfsType, func() {
226253 if ! testCephFS || upgradeTesting {
227254 Skip ("Skipping CephFS E2E" )
228255 }
256+
229257 if CurrentSpecReport ().Failed () {
230258 // log pods created by helm chart
231- logsCSIPods ("app=ceph-csi-cephfs" , c )
259+ logsCSIPods ("app=" + helmCephFSPodsLabel , c )
232260 // log provisioner
233- logsCSIPods ("app=csi-cephfsplugin-provisioner" , c )
261+ logsCSIPods ("app=" + cephFSDeployment . getDeploymentName () , c )
234262 // log node plugin
235- logsCSIPods ("app=csi-cephfsplugin" , c )
263+ logsCSIPods ("app=" + cephFSDeployment . getDaemonsetName () , c )
236264
237265 // log all details from the namespace where Ceph-CSI is deployed
238266 e2edebug .DumpAllNamespaceInfo (context .TODO (), c , cephCSINamespace )
@@ -266,11 +294,12 @@ var _ = Describe(cephfsType, func() {
266294
267295 if deployCephFS {
268296 deleteCephfsPlugin ()
269- if cephCSINamespace != defaultNs {
270- err = deleteNamespace (c , cephCSINamespace )
271- if err != nil {
272- framework .Failf ("failed to delete namespace %s: %v" , cephCSINamespace , err )
273- }
297+ }
298+ // No need to delete the namespace if ceph-csi is deployed via helm or operator.
299+ if cephCSINamespace != defaultNs && ! (helmTest || operatorDeployment ) {
300+ err = deleteNamespace (c , cephCSINamespace )
301+ if err != nil {
302+ framework .Failf ("failed to delete namespace %s: %v" , cephCSINamespace , err )
274303 }
275304 }
276305 })
@@ -299,16 +328,16 @@ var _ = Describe(cephfsType, func() {
299328 }
300329
301330 By ("checking provisioner deployment is running" , func () {
302- err := waitForDeploymentComplete (f .ClientSet , cephFSDeploymentName , cephCSINamespace , deployTimeout )
331+ err := waitForDeploymentComplete (f .ClientSet , cephFSDeployment . getDeploymentName () , cephCSINamespace , deployTimeout )
303332 if err != nil {
304- framework .Failf ("timeout waiting for deployment %s: %v" , cephFSDeploymentName , err )
333+ framework .Failf ("timeout waiting for deployment %s: %v" , cephFSDeployment . getDeploymentName () , err )
305334 }
306335 })
307336
308337 By ("checking nodeplugin daemonset pods are running" , func () {
309- err := waitForDaemonSets (cephFSDeamonSetName , cephCSINamespace , f .ClientSet , deployTimeout )
338+ err := waitForDaemonSets (cephFSDeployment . getDaemonsetName () , cephCSINamespace , f .ClientSet , deployTimeout )
310339 if err != nil {
311- framework .Failf ("timeout waiting for daemonset %s: %v" , cephFSDeamonSetName , err )
340+ framework .Failf ("timeout waiting for daemonset %s: %v" , cephFSDeployment . getDaemonsetName () , err )
312341 }
313342 })
314343
@@ -338,7 +367,7 @@ var _ = Describe(cephfsType, func() {
338367 }
339368
340369 err = verifySeLinuxMountOption (f , pvcPath , appPath ,
341- cephFSDeamonSetName , cephFSContainerName , cephCSINamespace )
370+ cephFSDeployment . getDaemonsetName () , cephFSContainerName , cephCSINamespace )
342371 if err != nil {
343372 framework .Failf ("failed to verify mount options: %v" , err )
344373 }
@@ -764,7 +793,7 @@ var _ = Describe(cephfsType, func() {
764793 }
765794 }
766795 // Kill ceph-fuse in cephfs-csi node plugin Pods.
767- nodePluginSelector , err := getDaemonSetLabelSelector (f , cephCSINamespace , cephFSDeamonSetName )
796+ nodePluginSelector , err := getDaemonSetLabelSelector (f , cephCSINamespace , cephFSDeployment . getDaemonsetName () )
768797 if err != nil {
769798 framework .Failf ("failed to get node plugin DaemonSet label selector: %v" , err )
770799 }
@@ -2498,20 +2527,11 @@ var _ = Describe(cephfsType, func() {
24982527 framework .Failf ("failed to create configmap: %v" , err )
24992528 }
25002529
2501- // delete csi pods
2502- err = deletePodWithLabel ("app in (ceph-csi-cephfs, csi-cephfsplugin, csi-cephfsplugin-provisioner)" ,
2503- cephCSINamespace , false )
2504- if err != nil {
2505- framework .Failf ("failed to delete pods with labels: %v" , err )
2506- }
2507- // wait for csi pods to come up
2508- err = waitForDaemonSets (cephFSDeamonSetName , cephCSINamespace , f .ClientSet , deployTimeout )
2509- if err != nil {
2510- framework .Failf ("timeout waiting for daemonset pods: %v" , err )
2511- }
2512- err = waitForDeploymentComplete (f .ClientSet , cephFSDeploymentName , cephCSINamespace , deployTimeout )
2530+ // restart csi pods for the configmap to take effect.
2531+ err = recreateCSIPods (f , cephFSDeployment .getPodSelector (),
2532+ cephFSDeployment .getDaemonsetName (), cephFSDeployment .getDeploymentName ())
25132533 if err != nil {
2514- framework .Failf ("timeout waiting for deployment pods: %v" , err )
2534+ framework .Failf ("failed to recreate cephfs csi pods: %v" , err )
25152535 }
25162536 }
25172537
0 commit comments