e2e services: avoid panic on service creation retry

The test was reusing the same variable for the service on each
iteration, the problem is that when the service creation fails, it
clears out the variable and in the next iteration it panics because is
trying to use a field on that same variable.
This commit is contained in:
Antonio Ojea 2025-01-13 08:02:42 +00:00
parent 36d316ebc5
commit 17030f19b6

View File

@ -1680,16 +1680,17 @@ var _ = common.SIGDescribe("Services", func() {
} }
}() }()
service := t.BuildServiceSpec() var service *v1.Service
service.Spec.Type = v1.ServiceTypeNodePort baseService := t.BuildServiceSpec()
baseService.Spec.Type = v1.ServiceTypeNodePort
numberOfRetries := 5 numberOfRetries := 5
ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns) ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns)
var err error var err error
for i := 0; i < numberOfRetries; i++ { for i := 0; i < numberOfRetries; i++ {
port, err := e2eservice.GetUnusedStaticNodePort() port, err := e2eservice.GetUnusedStaticNodePort()
framework.ExpectNoError(err, "Static node port allocator was not able to find a free nodeport.") framework.ExpectNoError(err, "Static node port allocator was not able to find a free nodeport.")
service.Spec.Ports[0].NodePort = port baseService.Spec.Ports[0].NodePort = port
service, err = t.CreateService(service) service, err = t.CreateService(baseService)
// We will later delete this service and then recreate it with same nodeport. We need to ensure that // We will later delete this service and then recreate it with same nodeport. We need to ensure that
// another e2e test doesn't start listening on our old nodeport and conflicts re-creation of service // another e2e test doesn't start listening on our old nodeport and conflicts re-creation of service
// hence we use ReserveStaticNodePort. // hence we use ReserveStaticNodePort.