Add dropDisabledStatusFields

This commit is contained in:
Shiming Zhang 2023-03-03 16:51:07 +08:00
parent e061143de7
commit dacb689002
2 changed files with 118 additions and 0 deletions

View File

@ -544,6 +544,18 @@ func dropDisabledPodStatusFields(podStatus, oldPodStatus *api.PodStatus, podSpec
if !utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) && !dynamicResourceAllocationInUse(oldPodSpec) {
podStatus.ResourceClaimStatuses = nil
}
// drop HostIPs to empty (disable PodHostIPs).
if !utilfeature.DefaultFeatureGate.Enabled(features.PodHostIPs) && !hostIPsInUse(oldPodStatus) {
podStatus.HostIPs = nil
}
}
func hostIPsInUse(podStatus *api.PodStatus) bool {
if podStatus == nil {
return false
}
return len(podStatus.HostIPs) > 0
}
// dropDisabledDynamicResourceAllocationFields removes pod claim references from

View File

@ -1165,6 +1165,112 @@ func TestDropDisabledTopologySpreadConstraintsFields(t *testing.T) {
}
}
func TestDropDisabledPodStatusFields(t *testing.T) {
podWithHostIPs := func() *api.PodStatus {
return &api.PodStatus{
HostIPs: makeHostIPs("10.0.0.1", "fd00:10::1"),
}
}
podWithoutHostIPs := func() *api.PodStatus {
return &api.PodStatus{
HostIPs: nil,
}
}
tests := []struct {
name string
podStatus *api.PodStatus
oldPodStatus *api.PodStatus
wantPodStatus *api.PodStatus
featureEnabled bool
}{
{
name: "gate off, old=without, new=without",
oldPodStatus: podWithoutHostIPs(),
podStatus: podWithoutHostIPs(),
featureEnabled: false,
wantPodStatus: podWithoutHostIPs(),
},
{
name: "gate off, old=without, new=with",
oldPodStatus: podWithoutHostIPs(),
podStatus: podWithHostIPs(),
featureEnabled: false,
wantPodStatus: podWithoutHostIPs(),
},
{
name: "gate off, old=with, new=without",
oldPodStatus: podWithHostIPs(),
podStatus: podWithoutHostIPs(),
featureEnabled: false,
wantPodStatus: podWithoutHostIPs(),
},
{
name: "gate off, old=with, new=with",
oldPodStatus: podWithHostIPs(),
podStatus: podWithHostIPs(),
featureEnabled: false,
wantPodStatus: podWithHostIPs(),
},
{
name: "gate on, old=without, new=without",
oldPodStatus: podWithoutHostIPs(),
podStatus: podWithoutHostIPs(),
featureEnabled: true,
wantPodStatus: podWithoutHostIPs(),
},
{
name: "gate on, old=without, new=with",
oldPodStatus: podWithoutHostIPs(),
podStatus: podWithHostIPs(),
featureEnabled: true,
wantPodStatus: podWithHostIPs(),
},
{
name: "gate on, old=with, new=without",
oldPodStatus: podWithHostIPs(),
podStatus: podWithoutHostIPs(),
featureEnabled: true,
wantPodStatus: podWithoutHostIPs(),
},
{
name: "gate on, old=with, new=with",
oldPodStatus: podWithHostIPs(),
podStatus: podWithHostIPs(),
featureEnabled: true,
wantPodStatus: podWithHostIPs(),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PodHostIPs, tt.featureEnabled)()
dropDisabledPodStatusFields(tt.podStatus, tt.oldPodStatus, &api.PodSpec{}, &api.PodSpec{})
if !reflect.DeepEqual(tt.podStatus, tt.wantPodStatus) {
t.Errorf("dropDisabledStatusFields() = %v, want %v", tt.podStatus, tt.wantPodStatus)
}
})
}
}
func makeHostIPs(ips ...string) []api.HostIP {
ret := []api.HostIP{}
for _, ip := range ips {
ret = append(ret, api.HostIP{IP: ip})
}
return ret
}
func TestDropNodeInclusionPolicyFields(t *testing.T) {
ignore := api.NodeInclusionPolicyIgnore
honor := api.NodeInclusionPolicyHonor