@@ -25,6 +25,7 @@ import (
25
25
v1 "k8s.io/api/core/v1"
26
26
storagev1 "k8s.io/api/storage/v1"
27
27
"k8s.io/apimachinery/pkg/api/resource"
28
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
29
utilerrors "k8s.io/apimachinery/pkg/util/errors"
29
30
clientset "k8s.io/client-go/kubernetes"
30
31
"k8s.io/kubernetes/test/e2e/framework"
@@ -149,7 +150,7 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow] [Feature:Expa
149
150
150
151
var pod * v1.Pod
151
152
ginkgo .By ("Creating pod" )
152
- pod , err = e2epod . CreateNginxPod (c , ns , nodeKeyValueLabel , pvcClaims )
153
+ pod , err = createNginxPod (c , ns , nodeKeyValueLabel , pvcClaims )
153
154
framework .ExpectNoError (err , "Failed to create pod %v" , err )
154
155
defer e2epod .DeletePodWithWait (c , pod )
155
156
@@ -181,3 +182,64 @@ var _ = utils.SIGDescribe("Mounted flexvolume volume expand [Slow] [Feature:Expa
181
182
framework .ExpectEqual (len (pvcConditions ), 0 , "pvc should not have conditions" )
182
183
})
183
184
})
185
+
186
+ // createNginxPod creates an nginx pod.
187
+ func createNginxPod (client clientset.Interface , namespace string , nodeSelector map [string ]string , pvclaims []* v1.PersistentVolumeClaim ) (* v1.Pod , error ) {
188
+ pod := makeNginxPod (namespace , nodeSelector , pvclaims )
189
+ pod , err := client .CoreV1 ().Pods (namespace ).Create (pod )
190
+ if err != nil {
191
+ return nil , fmt .Errorf ("pod Create API error: %v" , err )
192
+ }
193
+ // Waiting for pod to be running
194
+ err = e2epod .WaitForPodNameRunningInNamespace (client , pod .Name , namespace )
195
+ if err != nil {
196
+ return pod , fmt .Errorf ("pod %q is not Running: %v" , pod .Name , err )
197
+ }
198
+ // get fresh pod info
199
+ pod , err = client .CoreV1 ().Pods (namespace ).Get (pod .Name , metav1.GetOptions {})
200
+ if err != nil {
201
+ return pod , fmt .Errorf ("pod Get API error: %v" , err )
202
+ }
203
+ return pod , nil
204
+ }
205
+
206
+ // makeNginxPod returns a pod definition based on the namespace using nginx image
207
+ func makeNginxPod (ns string , nodeSelector map [string ]string , pvclaims []* v1.PersistentVolumeClaim ) * v1.Pod {
208
+ podSpec := & v1.Pod {
209
+ TypeMeta : metav1.TypeMeta {
210
+ Kind : "Pod" ,
211
+ APIVersion : "v1" ,
212
+ },
213
+ ObjectMeta : metav1.ObjectMeta {
214
+ GenerateName : "pvc-tester-" ,
215
+ Namespace : ns ,
216
+ },
217
+ Spec : v1.PodSpec {
218
+ Containers : []v1.Container {
219
+ {
220
+ Name : "write-pod" ,
221
+ Image : "nginx" ,
222
+ Ports : []v1.ContainerPort {
223
+ {
224
+ Name : "http-server" ,
225
+ ContainerPort : 80 ,
226
+ },
227
+ },
228
+ },
229
+ },
230
+ },
231
+ }
232
+ var volumeMounts = make ([]v1.VolumeMount , len (pvclaims ))
233
+ var volumes = make ([]v1.Volume , len (pvclaims ))
234
+ for index , pvclaim := range pvclaims {
235
+ volumename := fmt .Sprintf ("volume%v" , index + 1 )
236
+ volumeMounts [index ] = v1.VolumeMount {Name : volumename , MountPath : "/mnt/" + volumename }
237
+ volumes [index ] = v1.Volume {Name : volumename , VolumeSource : v1.VolumeSource {PersistentVolumeClaim : & v1.PersistentVolumeClaimVolumeSource {ClaimName : pvclaim .Name , ReadOnly : false }}}
238
+ }
239
+ podSpec .Spec .Containers [0 ].VolumeMounts = volumeMounts
240
+ podSpec .Spec .Volumes = volumes
241
+ if nodeSelector != nil {
242
+ podSpec .Spec .NodeSelector = nodeSelector
243
+ }
244
+ return podSpec
245
+ }
0 commit comments