service update event should be triggered when appProtocol in port is changed.

Signed-off-by: MartinForReal <fanshangxiang@gmail.com>
This commit is contained in:
MartinForReal 2022-09-29 11:56:03 +00:00
parent 4516c7972d
commit f68345b2f0
2 changed files with 73 additions and 0 deletions

View File

@ -640,6 +640,10 @@ func portEqualForLB(x, y *v1.ServicePort) bool {
return false return false
} }
if !reflect.DeepEqual(x.AppProtocol, y.AppProtocol) {
return false
}
return true return true
} }

View File

@ -1391,6 +1391,75 @@ func TestNeedsUpdate(t *testing.T) {
}, },
expectedNeedsUpdate: true, expectedNeedsUpdate: true,
}, },
{
testName: "If appProtocol is the same",
updateFn: func() {
oldSvc = &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "tcp-service",
Namespace: "default",
},
Spec: v1.ServiceSpec{
Ports: []v1.ServicePort{{
Port: 80,
Protocol: v1.ProtocolTCP,
TargetPort: intstr.Parse("22"),
}},
Type: v1.ServiceTypeLoadBalancer,
},
}
newSvc = oldSvc.DeepCopy()
},
expectedNeedsUpdate: false,
},
{
testName: "If appProtocol is set when previously unset",
updateFn: func() {
oldSvc = &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "tcp-service",
Namespace: "default",
},
Spec: v1.ServiceSpec{
Ports: []v1.ServicePort{{
Port: 80,
Protocol: v1.ProtocolTCP,
TargetPort: intstr.Parse("22"),
}},
Type: v1.ServiceTypeLoadBalancer,
},
}
newSvc = oldSvc.DeepCopy()
protocol := "http"
newSvc.Spec.Ports[0].AppProtocol = &protocol
},
expectedNeedsUpdate: true,
},
{
testName: "If appProtocol is set to a different value",
updateFn: func() {
protocol := "http"
oldSvc = &v1.Service{
ObjectMeta: metav1.ObjectMeta{
Name: "tcp-service",
Namespace: "default",
},
Spec: v1.ServiceSpec{
Ports: []v1.ServicePort{{
Port: 80,
Protocol: v1.ProtocolTCP,
TargetPort: intstr.Parse("22"),
AppProtocol: &protocol,
}},
Type: v1.ServiceTypeLoadBalancer,
},
}
newSvc = oldSvc.DeepCopy()
newProtocol := "tcp"
newSvc.Spec.Ports[0].AppProtocol = &newProtocol
},
expectedNeedsUpdate: true,
},
} }
controller, _, _ := newController() controller, _, _ := newController()