Skip to content

Commit 31a3ebb

Browse files
committed
Refactor validation function
1 parent 516e89b commit 31a3ebb

File tree

2 files changed

+39
-28
lines changed

2 files changed

+39
-28
lines changed

internal/controller/state/graph/backend_refs.go

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,8 @@ func createBackendRef(
207207
}
208208

209209
if svcPort.AppProtocol != nil {
210-
valid = validateRouteBackendRefAppProtocol(route.RouteType, *svcPort.AppProtocol, backendTLSPolicy)
211-
if !valid {
210+
err = validateRouteBackendRefAppProtocol(route.RouteType, *svcPort.AppProtocol, backendTLSPolicy)
211+
if err != nil {
212212
backendRef := BackendRef{
213213
SvcNsName: svcNsName,
214214
BackendTLSPolicy: backendTLSPolicy,
@@ -219,17 +219,7 @@ func createBackendRef(
219219
InvalidForGateways: invalidForGateways,
220220
}
221221

222-
err := fmt.Errorf(
223-
"route type %s does not support service port appProtocol %s",
224-
route.RouteType,
225-
*svcPort.AppProtocol,
226-
).Error()
227-
228-
if route.RouteType == RouteTypeHTTP && *svcPort.AppProtocol == AppProtocolTypeWSS && backendTLSPolicy == nil {
229-
err += "; missing corresponding BackendTLSPolicy"
230-
}
231-
232-
return backendRef, append(conds, conditions.NewRouteBackendRefUnsupportedProtocol(err))
222+
return backendRef, append(conds, conditions.NewRouteBackendRefUnsupportedProtocol(err.Error()))
233223
}
234224
}
235225

@@ -447,22 +437,50 @@ func validateBackendRef(
447437
return true, conditions.Condition{}
448438
}
449439

440+
// validateRouteBackendRefAppProtocol checks if a given RouteType supports sending traffic to a service AppProtocol.
441+
// Returns nil if true or AppProtocol is not a Kubernetes Standard Application Protocol.
450442
func validateRouteBackendRefAppProtocol(
451443
routeType RouteType,
452444
appProtocol string,
453445
backendTLSPolicy *BackendTLSPolicy,
454-
) (valid bool) {
446+
) error {
447+
err := fmt.Errorf(
448+
"route type %s does not support service port appProtocol %s",
449+
routeType,
450+
appProtocol,
451+
)
452+
455453
// Currently we only support recognition of the Kubernetes Standard Application Protocols defined in KEP-3726.
456454
switch appProtocol {
457455
case AppProtocolTypeH2C:
458-
return routeType == RouteTypeHTTP || routeType == RouteTypeGRPC
456+
if routeType == RouteTypeHTTP || routeType == RouteTypeGRPC {
457+
return nil
458+
}
459+
460+
return err
459461
case AppProtocolTypeWS:
460-
return routeType == RouteTypeHTTP
462+
if routeType == RouteTypeHTTP {
463+
return nil
464+
}
465+
466+
return err
461467
case AppProtocolTypeWSS:
462-
return (routeType == RouteTypeHTTP && backendTLSPolicy != nil) || routeType == RouteTypeTLS
468+
if routeType == RouteTypeHTTP {
469+
if backendTLSPolicy != nil {
470+
return nil
471+
}
472+
473+
return fmt.Errorf("%w; missing corresponding BackendTLSPolicy", err)
474+
}
475+
476+
if routeType == RouteTypeTLS {
477+
return nil
478+
}
479+
480+
return err
463481
}
464482

465-
return true
483+
return nil
466484
}
467485

468486
func validateWeight(weight int32) error {

internal/controller/state/graph/tlsroute.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package graph
22

33
import (
4-
"fmt"
5-
64
apiv1 "k8s.io/api/core/v1"
75
"k8s.io/apimachinery/pkg/types"
86
"k8s.io/apimachinery/pkg/util/validation/field"
@@ -122,16 +120,11 @@ func validateBackendRefTLSRoute(
122120
}
123121

124122
if svcPort.AppProtocol != nil {
125-
valid := validateRouteBackendRefAppProtocol(RouteTypeTLS, *svcPort.AppProtocol, nil)
126-
if !valid {
123+
err = validateRouteBackendRefAppProtocol(RouteTypeTLS, *svcPort.AppProtocol, nil)
124+
if err != nil {
127125
backendRef.Valid = false
128126

129-
return backendRef, []conditions.Condition{conditions.NewRouteBackendRefUnsupportedProtocol(
130-
fmt.Errorf(
131-
"route type %s does not support service port appProtocol %s",
132-
RouteTypeTLS,
133-
*svcPort.AppProtocol,
134-
).Error())}
127+
return backendRef, []conditions.Condition{conditions.NewRouteBackendRefUnsupportedProtocol(err.Error())}
135128
}
136129
}
137130

0 commit comments

Comments
 (0)