Skip to content

Commit 0f6b93e

Browse files
iPraveenPariharmergify[bot]
authored andcommitted
e2e: handle ceph-csi-operator deployment changes
This commits adds e2e/operator.go containing utility methods specific to the operator. Signed-off-by: Praveen M <m.praveen@ibm.com>
1 parent 954f365 commit 0f6b93e

File tree

13 files changed

+490
-183
lines changed

13 files changed

+490
-183
lines changed

e2e/cephfs.go

Lines changed: 58 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,19 @@ var (
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+
5162
func 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+
168191
var _ = 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

e2e/cephfs_helper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func unmountCephFSVolume(f *framework.Framework, appName, pvcName string) error
161161
stdErr, err := execCommandInDaemonsetPod(
162162
f,
163163
cmd,
164-
cephFSDeamonSetName,
164+
cephFSDeployment.getDaemonsetName(),
165165
pod.Spec.NodeName,
166166
cephFSContainerName,
167167
cephCSINamespace)
@@ -396,7 +396,7 @@ func validateEncryptedCephfs(f *framework.Framework, pvName, appName string) err
396396
pod.UID,
397397
pvName)
398398

399-
selector, err := getDaemonSetLabelSelector(f, cephCSINamespace, cephFSDeamonSetName)
399+
selector, err := getDaemonSetLabelSelector(f, cephCSINamespace, cephFSDeployment.getDaemonsetName())
400400
if err != nil {
401401
return fmt.Errorf("failed to get labels: %w", err)
402402
}

e2e/e2e_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func init() {
5252
flag.StringVar(&fileSystemName, "filesystem", "myfs", "CephFS filesystem to use")
5353
flag.StringVar(&clusterID, "clusterid", "", "Ceph cluster ID to use (defaults to `ceph fsid` detection)")
5454
flag.StringVar(&nfsDriverName, "nfs-driver", "nfs.csi.ceph.com", "name of the driver for NFS-volumes")
55+
flag.BoolVar(&operatorDeployment, "operator-deployment", false, "test running on deployment via operator")
5556
setDefaultKubeconfig()
5657

5758
// Register framework flags, then handle flags
@@ -91,4 +92,8 @@ func handleFlags() {
9192
testNFS = testCephFS
9293
deployNFS = deployCephFS
9394
}
95+
96+
if operatorDeployment {
97+
cephCSINamespace = "ceph-csi-operator-system"
98+
}
9499
}

e2e/migration.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ func generateClusterIDConfigMapForMigration(f *framework.Framework, c kubernetes
6363
return fmt.Errorf("failed to create configmap: %w", err)
6464
}
6565
// restart csi pods for the configmap to take effect.
66-
err = recreateCSIPods(f, rbdPodLabels, rbdDaemonsetName, rbdDeploymentName)
66+
err = recreateCSIPods(f,
67+
rbdDeployment.getPodSelector(), rbdDeployment.getDaemonsetName(), rbdDeployment.getDeploymentName())
6768
if err != nil {
6869
return fmt.Errorf("failed to recreate rbd csi pods: %w", err)
6970
}

0 commit comments

Comments
 (0)