Skip to content

Commit 9ef4868

Browse files
committed
move service name creation out of function
1 parent b52b90d commit 9ef4868

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

internal/mode/static/state/graph/backend_refs.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@ import (
66
"slices"
77

88
v1 "k8s.io/api/core/v1"
9-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
109
"k8s.io/apimachinery/pkg/types"
1110
"k8s.io/apimachinery/pkg/util/validation/field"
12-
"sigs.k8s.io/controller-runtime/pkg/client"
1311
gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
1412
"sigs.k8s.io/gateway-api/apis/v1alpha3"
1513

@@ -151,20 +149,25 @@ func createBackendRef(
151149
return backendRef, &cond
152150
}
153151

154-
svc, svcPort, err := getServiceAndPortFromRef(ref.BackendRef, sourceNamespace, services, refPath)
152+
ns := sourceNamespace
153+
if ref.BackendRef.Namespace != nil {
154+
ns = string(*ref.Namespace)
155+
}
156+
svcNsName := types.NamespacedName{Name: string(ref.BackendRef.Name), Namespace: ns}
157+
svcIPFamily, svcPort, err := getServiceAndPortFromRef(ref.BackendRef, sourceNamespace, services, refPath)
155158
if err != nil {
156159
backendRef = BackendRef{
157-
Weight: weight,
158-
Valid: false,
160+
Weight: weight,
161+
Valid: false,
162+
SvcNsName: svcNsName,
163+
ServicePort: v1.ServicePort{},
159164
}
160165

161166
cond := staticConds.NewRouteBackendRefRefBackendNotFound(err.Error())
162167
return backendRef, &cond
163168
}
164169

165-
svcNsName := client.ObjectKeyFromObject(svc)
166-
167-
if err := verifyIPFamily(npCfg, svc.Spec.IPFamilies); err != nil {
170+
if err := verifyIPFamily(npCfg, svcIPFamily); err != nil {
168171
backendRef = BackendRef{
169172
SvcNsName: svcNsName,
170173
ServicePort: svcPort,
@@ -299,7 +302,7 @@ func getServiceAndPortFromRef(
299302
routeNamespace string,
300303
services map[types.NamespacedName]*v1.Service,
301304
refPath *field.Path,
302-
) (*v1.Service, v1.ServicePort, error) {
305+
) ([]v1.IPFamily, v1.ServicePort, error) {
303306
ns := routeNamespace
304307
if ref.Namespace != nil {
305308
ns = string(*ref.Namespace)
@@ -308,18 +311,16 @@ func getServiceAndPortFromRef(
308311
svcNsName := types.NamespacedName{Name: string(ref.Name), Namespace: ns}
309312
svc, ok := services[svcNsName]
310313
if !ok {
311-
return &v1.Service{ObjectMeta: metav1.ObjectMeta{Namespace: ns, Name: string(ref.Name)}},
312-
v1.ServicePort{},
313-
field.NotFound(refPath.Child("name"), ref.Name)
314+
return []v1.IPFamily{}, v1.ServicePort{}, field.NotFound(refPath.Child("name"), ref.Name)
314315
}
315316

316317
// safe to dereference port here because we already validated that the port is not nil in validateBackendRef.
317318
svcPort, err := getServicePort(svc, int32(*ref.Port))
318319
if err != nil {
319-
return &v1.Service{ObjectMeta: metav1.ObjectMeta{Namespace: ns, Name: string(ref.Name)}}, v1.ServicePort{}, err
320+
return []v1.IPFamily{}, v1.ServicePort{}, err
320321
}
321322

322-
return svc, svcPort, nil
323+
return svc.Spec.IPFamilies, svcPort, nil
323324
}
324325

325326
func verifyIPFamily(npCfg *NginxProxy, svcIPFamily []v1.IPFamily) error {

internal/mode/static/state/graph/backend_refs_test.go

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -271,10 +271,6 @@ func TestGetServiceAndPortFromRef(t *testing.T) {
271271
IPFamilies: []v1.IPFamily{v1.IPv4Protocol},
272272
},
273273
}
274-
svc1NsName := types.NamespacedName{
275-
Namespace: "test",
276-
Name: "service1",
277-
}
278274

279275
svc2 := &v1.Service{
280276
ObjectMeta: metav1.ObjectMeta{
@@ -284,49 +280,48 @@ func TestGetServiceAndPortFromRef(t *testing.T) {
284280
}
285281

286282
tests := []struct {
287-
expSvc *v1.Service
288-
ref gatewayv1.BackendRef
289-
expServiceNsName types.NamespacedName
290-
name string
291-
expServicePort v1.ServicePort
292-
expErr bool
283+
expSvc *v1.Service
284+
ref gatewayv1.BackendRef
285+
expSvcIPFamily []v1.IPFamily
286+
name string
287+
expServicePort v1.ServicePort
288+
expErr bool
293289
}{
294290
{
295-
name: "normal case",
296-
ref: getNormalRef(),
297-
expServiceNsName: svc1NsName,
298-
expServicePort: v1.ServicePort{Port: 80},
299-
expSvc: svc1,
291+
name: "normal case",
292+
ref: getNormalRef(),
293+
expServicePort: v1.ServicePort{Port: 80},
294+
expSvcIPFamily: []v1.IPFamily{v1.IPv4Protocol},
300295
},
301296
{
302297
name: "service does not exist",
303298
ref: getModifiedRef(func(backend gatewayv1.BackendRef) gatewayv1.BackendRef {
304299
backend.Name = "does-not-exist"
305300
return backend
306301
}),
307-
expErr: true,
308-
expServiceNsName: types.NamespacedName{Name: "does-not-exist", Namespace: "test"},
309-
expServicePort: v1.ServicePort{},
302+
expErr: true,
303+
expServicePort: v1.ServicePort{},
310304
expSvc: &v1.Service{
311305
ObjectMeta: metav1.ObjectMeta{
312306
Name: "does-not-exist", Namespace: "test",
313307
},
314308
},
309+
expSvcIPFamily: []v1.IPFamily{},
315310
},
316311
{
317312
name: "no matching port for service and port",
318313
ref: getModifiedRef(func(backend gatewayv1.BackendRef) gatewayv1.BackendRef {
319314
backend.Port = helpers.GetPointer[gatewayv1.PortNumber](504)
320315
return backend
321316
}),
322-
expErr: true,
323-
expServiceNsName: svc1NsName,
324-
expServicePort: v1.ServicePort{},
317+
expErr: true,
318+
expServicePort: v1.ServicePort{},
325319
expSvc: &v1.Service{
326320
ObjectMeta: metav1.ObjectMeta{
327321
Name: "service1", Namespace: "test",
328322
},
329323
},
324+
expSvcIPFamily: []v1.IPFamily{},
330325
},
331326
}
332327

@@ -341,11 +336,11 @@ func TestGetServiceAndPortFromRef(t *testing.T) {
341336
t.Run(test.name, func(t *testing.T) {
342337
g := NewWithT(t)
343338

344-
svc, servicePort, err := getServiceAndPortFromRef(test.ref, "test", services, refPath)
339+
svcIPFamily, servicePort, err := getServiceAndPortFromRef(test.ref, "test", services, refPath)
345340

346341
g.Expect(err != nil).To(Equal(test.expErr))
347342
g.Expect(servicePort).To(Equal(test.expServicePort))
348-
g.Expect(svc).To(Equal(test.expSvc))
343+
g.Expect(svcIPFamily).To(Equal(test.expSvcIPFamily))
349344
})
350345
}
351346
}
@@ -953,6 +948,10 @@ func TestCreateBackend(t *testing.T) {
953948
expectedBackend: BackendRef{
954949
Weight: 5,
955950
Valid: false,
951+
SvcNsName: types.NamespacedName{
952+
Namespace: "test",
953+
Name: "not-exist",
954+
},
956955
},
957956
expectedServicePortReference: "",
958957
expectedCondition: helpers.GetPointer(

0 commit comments

Comments
 (0)