@@ -22,6 +22,7 @@ import (
22
22
23
23
v1 "k8s.io/api/core/v1"
24
24
resourceapi "k8s.io/api/resource/v1alpha3"
25
+ storagev1 "k8s.io/api/storage/v1"
25
26
"k8s.io/apimachinery/pkg/api/resource"
26
27
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
28
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -913,6 +914,23 @@ func (p *PersistentVolumeWrapper) NodeAffinityIn(key string, vals []string) *Per
913
914
return p
914
915
}
915
916
917
+ // Labels sets all {k,v} pair provided by `labels` to the pv.
918
+ func (p * PersistentVolumeWrapper ) Labels (labels map [string ]string ) * PersistentVolumeWrapper {
919
+ for k , v := range labels {
920
+ p .Label (k , v )
921
+ }
922
+ return p
923
+ }
924
+
925
+ // Label sets a {k,v} pair to the pv.
926
+ func (p * PersistentVolumeWrapper ) Label (k , v string ) * PersistentVolumeWrapper {
927
+ if p .PersistentVolume .ObjectMeta .Labels == nil {
928
+ p .PersistentVolume .ObjectMeta .Labels = make (map [string ]string )
929
+ }
930
+ p .PersistentVolume .ObjectMeta .Labels [k ] = v
931
+ return p
932
+ }
933
+
916
934
// ResourceClaimWrapper wraps a ResourceClaim inside.
917
935
type ResourceClaimWrapper struct { resourceapi.ResourceClaim }
918
936
@@ -1133,3 +1151,34 @@ func (wrapper *ResourceSliceWrapper) Device(name string, attrs map[resourceapi.Q
1133
1151
wrapper .Spec .Devices = append (wrapper .Spec .Devices , resourceapi.Device {Name : name , Basic : & resourceapi.BasicDevice {Attributes : attrs }})
1134
1152
return wrapper
1135
1153
}
1154
+
1155
+ // StorageClassWrapper wraps a StorageClass inside.
1156
+ type StorageClassWrapper struct { storagev1.StorageClass }
1157
+
1158
+ // MakeStorageClass creates a StorageClass wrapper.
1159
+ func MakeStorageClass () * StorageClassWrapper {
1160
+ return & StorageClassWrapper {}
1161
+ }
1162
+
1163
+ // Obj returns the inner StorageClass.
1164
+ func (s * StorageClassWrapper ) Obj () * storagev1.StorageClass {
1165
+ return & s .StorageClass
1166
+ }
1167
+
1168
+ // Name sets `n` as the name of the inner StorageClass.
1169
+ func (s * StorageClassWrapper ) Name (n string ) * StorageClassWrapper {
1170
+ s .SetName (n )
1171
+ return s
1172
+ }
1173
+
1174
+ // VolumeBindingMode sets mode as the mode of the inner StorageClass.
1175
+ func (s * StorageClassWrapper ) VolumeBindingMode (mode storagev1.VolumeBindingMode ) * StorageClassWrapper {
1176
+ s .StorageClass .VolumeBindingMode = & mode
1177
+ return s
1178
+ }
1179
+
1180
+ // Provisoner sets p as the provisioner of the inner StorageClass.
1181
+ func (s * StorageClassWrapper ) Provisioner (p string ) * StorageClassWrapper {
1182
+ s .StorageClass .Provisioner = p
1183
+ return s
1184
+ }
0 commit comments