@@ -1019,6 +1019,62 @@ func TestCoreResourceEnqueue(t *testing.T) {
1019
1019
wantRequeuedPods : sets .New ("pod2" ),
1020
1020
enableSchedulingQueueHint : []bool {true },
1021
1021
},
1022
+ {
1023
+ name : "Pod rejected with node by the VolumeZone plugin is not requeued when the PV is updated but the topology is same" ,
1024
+ initialNodes : []* v1.Node {st .MakeNode ().Name ("fake-node" ).Label ("node" , "fake-node" ).Label (v1 .LabelTopologyZone , "us-west1-a" ).Obj ()},
1025
+ initialPVs : []* v1.PersistentVolume {
1026
+ st .MakePersistentVolume ().
1027
+ Name ("pv1" ).
1028
+ Labels (map [string ]string {v1 .LabelTopologyZone : "us-west1-a" }).
1029
+ AccessModes ([]v1.PersistentVolumeAccessMode {v1 .ReadOnlyMany }).
1030
+ Capacity (v1.ResourceList {v1 .ResourceStorage : resource .MustParse ("1Mi" )}).
1031
+ HostPathVolumeSource (& v1.HostPathVolumeSource {Path : "/tmp" , Type : & volType }).
1032
+ Obj (),
1033
+ st .MakePersistentVolume ().
1034
+ Name ("pv2" ).
1035
+ Labels (map [string ]string {v1 .LabelTopologyZone : "us-east1" }).
1036
+ AccessModes ([]v1.PersistentVolumeAccessMode {v1 .ReadOnlyMany }).
1037
+ Capacity (v1.ResourceList {v1 .ResourceStorage : resource .MustParse ("1Mi" )}).
1038
+ HostPathVolumeSource (& v1.HostPathVolumeSource {Path : "/tmp" , Type : & volType }).
1039
+ Obj (),
1040
+ },
1041
+ initialPVCs : []* v1.PersistentVolumeClaim {
1042
+ st .MakePersistentVolumeClaim ().
1043
+ Name ("pvc1" ).
1044
+ Annotation (volume .AnnBindCompleted , "true" ).
1045
+ VolumeName ("pv1" ).
1046
+ AccessModes ([]v1.PersistentVolumeAccessMode {v1 .ReadWriteOncePod }).
1047
+ Resources (v1.VolumeResourceRequirements {Requests : v1.ResourceList {v1 .ResourceStorage : resource .MustParse ("1Mi" )}}).
1048
+ Obj (),
1049
+ st .MakePersistentVolumeClaim ().
1050
+ Name ("pvc2" ).
1051
+ Annotation (volume .AnnBindCompleted , "true" ).
1052
+ VolumeName ("pv2" ).
1053
+ AccessModes ([]v1.PersistentVolumeAccessMode {v1 .ReadWriteOncePod }).
1054
+ Resources (v1.VolumeResourceRequirements {Requests : v1.ResourceList {v1 .ResourceStorage : resource .MustParse ("1Mi" )}}).
1055
+ Obj (),
1056
+ },
1057
+ initialPods : []* v1.Pod {
1058
+ st .MakePod ().Name ("pod1" ).Container ("image" ).PVC ("pvc1" ).Node ("fake-node" ).Obj (),
1059
+ },
1060
+ pods : []* v1.Pod {
1061
+ st .MakePod ().Name ("pod2" ).Container ("image" ).PVC ("pvc2" ).Obj (),
1062
+ },
1063
+ triggerFn : func (testCtx * testutils.TestContext ) error {
1064
+ pv2 := st .MakePersistentVolume ().Name ("pv2" ).
1065
+ Labels (map [string ]string {v1 .LabelTopologyZone : "us-east1" , "unrelated" : "unrelated" }).
1066
+ AccessModes ([]v1.PersistentVolumeAccessMode {v1 .ReadOnlyMany }).
1067
+ Capacity (v1.ResourceList {v1 .ResourceStorage : resource .MustParse ("1Mi" )}).
1068
+ HostPathVolumeSource (& v1.HostPathVolumeSource {Path : "/tmp" , Type : & volType }).
1069
+ Obj ()
1070
+ if _ , err := testCtx .ClientSet .CoreV1 ().PersistentVolumes ().Update (testCtx .Ctx , pv2 , metav1.UpdateOptions {}); err != nil {
1071
+ return fmt .Errorf ("failed to update pv2: %w" , err )
1072
+ }
1073
+ return nil
1074
+ },
1075
+ wantRequeuedPods : sets.Set [string ]{},
1076
+ enableSchedulingQueueHint : []bool {true },
1077
+ },
1022
1078
}
1023
1079
1024
1080
for _ , tt := range tests {
0 commit comments