core/v1: drop Service spec.internalTrafficPolicy on read when type is ExternalName

Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
This commit is contained in:
Andrew Sy Kim 2022-01-04 12:30:11 -05:00
parent 5d2702b0fd
commit 438b90fbc4
2 changed files with 27 additions and 3 deletions

View File

@ -242,6 +242,17 @@ func (r *REST) defaultOnReadService(service *api.Service) {
// Set ipFamilies and ipFamilyPolicy if needed.
r.defaultOnReadIPFamilies(service)
// We unintentionally defaulted internalTrafficPolicy when it's not needed
// for the ExternalName type. It's too late to change the field in storage,
// but we can drop the field when read.
defaultOnReadInternalTrafficPolicy(service)
}
func defaultOnReadInternalTrafficPolicy(service *api.Service) {
if service.Spec.Type == api.ServiceTypeExternalName {
service.Spec.InternalTrafficPolicy = nil
}
}
func (r *REST) defaultOnReadIPFamilies(service *api.Service) {

View File

@ -597,9 +597,12 @@ func TestServiceDefaultOnRead(t *testing.T) {
svctest.SetIPFamilyPolicy(api.IPFamilyPolicySingleStack),
svctest.SetIPFamilies(api.IPv4Protocol)),
}, {
name: "external name",
input: makeServiceList(svctest.SetTypeExternalName),
expect: makeServiceList(svctest.SetTypeExternalName),
name: "external name",
input: makeServiceList(svctest.SetTypeExternalName),
expect: makeServiceList(svctest.SetTypeExternalName, func(svc *api.Service) {
// we now drop internalTrafficPolicy on read when Type=ExternalName
svc.Spec.InternalTrafficPolicy = nil
}),
}, {
name: "dual v4v6",
input: svctest.MakeService("foo", svctest.SetClusterIPs("10.0.0.1", "2000::1")),
@ -679,6 +682,9 @@ func TestServiceDefaultOnRead(t *testing.T) {
if want, got := exp.Spec.IPFamilies, svc.Spec.IPFamilies; !reflect.DeepEqual(want, got) {
t.Errorf("ipFamilies: expected %v, got %v", want, got)
}
if want, got := fmtInternalTrafficPolicy(exp.Spec.InternalTrafficPolicy), fmtInternalTrafficPolicy(svc.Spec.InternalTrafficPolicy); want != got {
t.Errorf("internalTrafficPolicy: expected %v, got %v", want, got)
}
})
}
}
@ -1243,6 +1249,13 @@ func fmtIPFamilyPolicy(pol *api.IPFamilyPolicyType) string {
return string(*pol)
}
func fmtInternalTrafficPolicy(pol *api.ServiceInternalTrafficPolicyType) string {
if pol == nil {
return "<nil>"
}
return string(*pol)
}
func fmtIPFamilies(fams []api.IPFamily) string {
if fams == nil {
return "[]"