@@ -34,6 +34,7 @@ import (
34
34
"github.com/vmware/govmomi/object"
35
35
"github.com/vmware/govmomi/vim25/types"
36
36
corev1 "k8s.io/api/core/v1"
37
+
37
38
apierrors "k8s.io/apimachinery/pkg/api/errors"
38
39
"k8s.io/apimachinery/pkg/api/resource"
39
40
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -76,15 +77,29 @@ var _ = ginkgo.Describe("raw block volume support", func() {
76
77
snapc * snapclient.Clientset
77
78
restConfig * restclient.Config
78
79
guestClusterRestConfig * restclient.Config
80
+ adminClient clientset.Interface
79
81
)
80
82
81
83
ginkgo .BeforeEach (func () {
82
84
ctx , cancel := context .WithCancel (context .Background ())
83
85
defer cancel ()
84
86
namespace = getNamespaceToRunTests (f )
85
87
client = f .ClientSet
88
+ var err error
86
89
bootstrap ()
87
- nodeList , err := fnodes .GetReadySchedulableNodes (ctx , f .ClientSet )
90
+
91
+ var nodeList * corev1.NodeList
92
+ runningAsDevopsUser := GetBoolEnvVarOrDefault ("IS_DEVOPS_USER" , false )
93
+ adminClient , client = initializeClusterClientsByUserRoles (client )
94
+ if guestCluster && runningAsDevopsUser {
95
+
96
+ saName := namespace + "sa"
97
+ client , err = createScopedClient (ctx , client , namespace , saName )
98
+ gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
99
+
100
+ }
101
+ nodeList , err = fnodes .GetReadySchedulableNodes (ctx , f .ClientSet )
102
+
88
103
framework .ExpectNoError (err , "Unable to find ready and schedulable Node" )
89
104
if ! (len (nodeList .Items ) > 0 ) {
90
105
framework .Failf ("Unable to find ready and schedulable Node" )
@@ -101,9 +116,10 @@ var _ = ginkgo.Describe("raw block volume support", func() {
101
116
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
102
117
}
103
118
104
- sc , err := client .StorageV1 ().StorageClasses ().Get (ctx , defaultNginxStorageClassName , metav1.GetOptions {})
119
+ sc , err := adminClient .StorageV1 ().StorageClasses ().Get (ctx , defaultNginxStorageClassName , metav1.GetOptions {})
120
+ framework .Logf ("err: %v" , err )
105
121
if err == nil && sc != nil {
106
- gomega .Expect (client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name ,
122
+ gomega .Expect (adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name ,
107
123
* metav1 .NewDeleteOptions (0 ))).NotTo (gomega .HaveOccurred ())
108
124
}
109
125
scParameters = make (map [string ]string )
@@ -198,10 +214,10 @@ var _ = ginkgo.Describe("raw block volume support", func() {
198
214
199
215
ginkgo .By ("Creating StorageClass for Statefulset" )
200
216
scSpec := getVSphereStorageClassSpec (storageClassName , scParameters , nil , "" , "" , false )
201
- sc , err := client .StorageV1 ().StorageClasses ().Create (ctx , scSpec , metav1.CreateOptions {})
217
+ sc , err := adminClient .StorageV1 ().StorageClasses ().Create (ctx , scSpec , metav1.CreateOptions {})
202
218
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
203
219
defer func () {
204
- err := client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
220
+ err := adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
205
221
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
206
222
}()
207
223
@@ -232,7 +248,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
232
248
replicas := * (statefulset .Spec .Replicas )
233
249
defer func () {
234
250
ginkgo .By (fmt .Sprintf ("Deleting all statefulsets in namespace: %v" , namespace ))
235
- fss . DeleteAllStatefulSets (ctx , client , namespace )
251
+ deleteAllStsAndPodsPVCsInNamespace (ctx , client , namespace )
236
252
}()
237
253
238
254
// Waiting for pods status to be Ready
@@ -414,7 +430,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
414
430
sc , err := createStorageClass (client , scParameters , nil , "" , "" , false , "" )
415
431
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
416
432
defer func () {
417
- err := client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
433
+ err := adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
418
434
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
419
435
}()
420
436
@@ -425,7 +441,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
425
441
gomega .Expect (err ).NotTo (gomega .HaveOccurred (), fmt .Sprintf ("Failed to create pvc with err: %v" , err ))
426
442
427
443
ginkgo .By (fmt .Sprintf ("Waiting for claim %s to be in bound phase" , pvc .Name ))
428
- pvs , err := fpv . WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc },
444
+ pvs , err := WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc },
429
445
framework .ClaimProvisionTimeout )
430
446
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
431
447
gomega .Expect (pvs ).NotTo (gomega .BeEmpty ())
@@ -440,7 +456,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
440
456
defer func () {
441
457
err := fpv .DeletePersistentVolumeClaim (ctx , client , pvc .Name , namespace )
442
458
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
443
- err = fpv .WaitForPersistentVolumeDeleted (ctx , client , pv .Name , poll , pollTimeoutShort )
459
+ err = fpv .WaitForPersistentVolumeDeleted (ctx , adminClient , pv .Name , poll , pollTimeoutShort )
444
460
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
445
461
err = e2eVSphere .waitForCNSVolumeToBeDeleted (volumeID )
446
462
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
@@ -590,12 +606,12 @@ var _ = ginkgo.Describe("raw block volume support", func() {
590
606
ginkgo .By ("Creating raw block PV" )
591
607
pv = getPersistentVolumeSpec (fcdID , corev1 .PersistentVolumeReclaimDelete , staticPVLabels , "" )
592
608
pv .Spec .VolumeMode = & rawBlockVolumeMode
593
- pv , err = client .CoreV1 ().PersistentVolumes ().Create (ctx , pv , metav1.CreateOptions {})
609
+ pv , err = adminClient .CoreV1 ().PersistentVolumes ().Create (ctx , pv , metav1.CreateOptions {})
594
610
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
595
611
err = e2eVSphere .waitForCNSVolumeToBeCreated (pv .Spec .CSI .VolumeHandle )
596
612
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
597
613
defer func () {
598
- err := fpv .DeletePersistentVolume (ctx , client , pv .Name )
614
+ err := fpv .DeletePersistentVolume (ctx , adminClient , pv .Name )
599
615
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
600
616
}()
601
617
@@ -610,7 +626,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
610
626
defer func () {
611
627
err := fpv .DeletePersistentVolumeClaim (ctx , client , pvc .Name , namespace )
612
628
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
613
- err = fpv .WaitForPersistentVolumeDeleted (ctx , client , pv .Name , poll , pollTimeoutShort )
629
+ err = fpv .WaitForPersistentVolumeDeleted (ctx , adminClient , pv .Name , poll , pollTimeoutShort )
614
630
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
615
631
err = e2eVSphere .waitForCNSVolumeToBeDeleted (pv .Spec .CSI .VolumeHandle )
616
632
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
@@ -712,7 +728,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
712
728
sc , err := createStorageClass (client , scParameters , nil , "" , "" , true , "" )
713
729
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
714
730
defer func () {
715
- err := client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
731
+ err := adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
716
732
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
717
733
}()
718
734
@@ -723,7 +739,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
723
739
gomega .Expect (err ).NotTo (gomega .HaveOccurred (), fmt .Sprintf ("Failed to create pvc with err: %v" , err ))
724
740
725
741
ginkgo .By (fmt .Sprintf ("Waiting for claim %s to be in bound phase" , pvc .Name ))
726
- pvs , err := fpv . WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc },
742
+ pvs , err := WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc },
727
743
framework .ClaimProvisionTimeout )
728
744
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
729
745
gomega .Expect (pvs ).NotTo (gomega .BeEmpty ())
@@ -738,7 +754,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
738
754
defer func () {
739
755
err := fpv .DeletePersistentVolumeClaim (ctx , client , pvc .Name , namespace )
740
756
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
741
- err = fpv .WaitForPersistentVolumeDeleted (ctx , client , pv .Name , poll , pollTimeoutShort )
757
+ err = fpv .WaitForPersistentVolumeDeleted (ctx , adminClient , pv .Name , poll , pollTimeoutShort )
742
758
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
743
759
err = e2eVSphere .waitForCNSVolumeToBeDeleted (volumeID )
744
760
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
@@ -884,7 +900,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
884
900
sc , err := createStorageClass (client , scParameters , nil , "" , "" , true , "" )
885
901
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
886
902
defer func () {
887
- err := client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
903
+ err := adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
888
904
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
889
905
}()
890
906
@@ -898,7 +914,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
898
914
var pvclaims []* corev1.PersistentVolumeClaim
899
915
pvclaims = append (pvclaims , pvc )
900
916
ginkgo .By ("Waiting for all claims to be in bound state" )
901
- pvs , err := fpv . WaitForPVClaimBoundPhase (ctx , client , pvclaims , framework .ClaimProvisionTimeout )
917
+ pvs , err := WaitForPVClaimBoundPhase (ctx , client , pvclaims , framework .ClaimProvisionTimeout )
902
918
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
903
919
pv := pvs [0 ]
904
920
volumeID := pv .Spec .CSI .VolumeHandle
@@ -910,7 +926,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
910
926
defer func () {
911
927
err := fpv .DeletePersistentVolumeClaim (ctx , client , pvc .Name , namespace )
912
928
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
913
- err = fpv .WaitForPersistentVolumeDeleted (ctx , client , pv .Name , poll , pollTimeoutShort )
929
+ err = fpv .WaitForPersistentVolumeDeleted (ctx , adminClient , pv .Name , poll , pollTimeoutShort )
914
930
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
915
931
err = e2eVSphere .waitForCNSVolumeToBeDeleted (volumeID )
916
932
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
@@ -996,7 +1012,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
996
1012
}
997
1013
998
1014
ginkgo .By ("Waiting for controller volume resize to finish" )
999
- err = waitForPvResizeForGivenPvc (pvc , client , totalResizeWaitPeriod )
1015
+ err = waitForPvResizeForGivenPvc (pvc , adminClient , totalResizeWaitPeriod )
1000
1016
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
1001
1017
1002
1018
if guestCluster {
@@ -1116,7 +1132,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
1116
1132
sc , err := createStorageClass (client , scParameters , nil , "" , "" , false , "" )
1117
1133
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
1118
1134
defer func () {
1119
- err := client .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
1135
+ err := adminClient .StorageV1 ().StorageClasses ().Delete (ctx , sc .Name , * metav1 .NewDeleteOptions (0 ))
1120
1136
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
1121
1137
}()
1122
1138
@@ -1127,7 +1143,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
1127
1143
gomega .Expect (err ).NotTo (gomega .HaveOccurred (), fmt .Sprintf ("Failed to create pvc with err: %v" , err ))
1128
1144
1129
1145
ginkgo .By ("Expect source volume claim to provision volume successfully" )
1130
- pvs , err := fpv . WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc1 },
1146
+ pvs , err := WaitForPVClaimBoundPhase (ctx , client , []* corev1.PersistentVolumeClaim {pvc1 },
1131
1147
framework .ClaimProvisionTimeout )
1132
1148
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
1133
1149
volumeID := pvs [0 ].Spec .CSI .VolumeHandle
@@ -1238,7 +1254,7 @@ var _ = ginkgo.Describe("raw block volume support", func() {
1238
1254
restoredPvc , err := fpv .CreatePVC (ctx , client , namespace , restorePvcSpec )
1239
1255
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
1240
1256
1241
- restoredPvs , err := fpv . WaitForPVClaimBoundPhase (ctx , client ,
1257
+ restoredPvs , err := WaitForPVClaimBoundPhase (ctx , client ,
1242
1258
[]* corev1.PersistentVolumeClaim {restoredPvc },
1243
1259
framework .ClaimProvisionTimeout )
1244
1260
gomega .Expect (err ).NotTo (gomega .HaveOccurred ())
0 commit comments