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()
service.Spec.Type = v1.ServiceTypeNodePort
var service *v1.Service
baseService := t.BuildServiceSpec()
baseService.Spec.Type = v1.ServiceTypeNodePort
numberOfRetries := 5
ginkgo.By("creating service " + serviceName + " with type NodePort in namespace " + ns)
var err error
for i := 0; i < numberOfRetries; i++ {
port, err := e2eservice.GetUnusedStaticNodePort()
framework.ExpectNoError(err, "Static node port allocator was not able to find a free nodeport.")
service.Spec.Ports[0].NodePort = port
service, err = t.CreateService(service)
baseService.Spec.Ports[0].NodePort = port
service, err = t.CreateService(baseService)
// 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
// hence we use ReserveStaticNodePort.