@@ -139,7 +139,7 @@ func (n *Namespace) NewPod(name string) *v13.Pod {
139139
140140// GetPersistentVolume gets a persistent volume spec for benchmarks.
141141func (n * Namespace ) GetPersistentVolume (name , size string ) * v13.PersistentVolumeClaim {
142- return & v13.PersistentVolumeClaim {
142+ pvc := & v13.PersistentVolumeClaim {
143143 TypeMeta : v1.TypeMeta {
144144 Kind : "PersistentVolumeClaim" ,
145145 APIVersion : apiV1 ,
@@ -150,13 +150,24 @@ func (n *Namespace) GetPersistentVolume(name, size string) *v13.PersistentVolume
150150 },
151151 Spec : v13.PersistentVolumeClaimSpec {
152152 AccessModes : []v13.PersistentVolumeAccessMode {v13 .ReadWriteOnce },
153- Resources : v13.ResourceRequirements {
154- Requests : v13.ResourceList {
155- v13 .ResourceStorage : resource .MustParse (size ),
156- },
157- },
158153 },
159154 }
155+
156+ // Use reflection to set Spec.Resources.Requests in a compatible way for
157+ // both k8s.io/api v0.23 (ResourceRequirements) and v0.32+
158+ // (VolumeResourceRequirements).
159+ vSpec := reflect .ValueOf (& pvc .Spec ).Elem ()
160+ vResources := vSpec .FieldByName ("Resources" )
161+ if vResources .IsValid () {
162+ vRequests := vResources .FieldByName ("Requests" )
163+ if vRequests .IsValid () && vRequests .CanSet () {
164+ reqs := v13.ResourceList {
165+ v13 .ResourceStorage : resource .MustParse (size ),
166+ }
167+ vRequests .Set (reflect .ValueOf (reqs ))
168+ }
169+ }
170+ return pvc
160171}
161172
162173// GetService gets a service spec for benchmarks.
0 commit comments