From 15d2684ecc5c97036d946c8e8f4578446a56b3e8 Mon Sep 17 00:00:00 2001 From: Andrew Stucki Date: Fri, 17 Feb 2023 16:37:34 -0500 Subject: [PATCH] Normalize all API Gateway references (#16316) --- agent/structs/config_entry_gateways.go | 24 ++++++++++++++++++++---- agent/structs/config_entry_routes.go | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/agent/structs/config_entry_gateways.go b/agent/structs/config_entry_gateways.go index 0d4019896f..c757dce984 100644 --- a/agent/structs/config_entry_gateways.go +++ b/agent/structs/config_entry_gateways.go @@ -754,6 +754,8 @@ func (e *APIGatewayConfigEntry) Normalize() error { if cert.Kind == "" { cert.Kind = InlineCertificate } + cert.EnterpriseMeta.Normalize() + listener.TLS.Certificates[i] = cert } } @@ -972,7 +974,23 @@ func (e *BoundAPIGatewayConfigEntry) IsInitializedForGateway(gateway *APIGateway func (e *BoundAPIGatewayConfigEntry) GetKind() string { return BoundAPIGateway } func (e *BoundAPIGatewayConfigEntry) GetName() string { return e.Name } func (e *BoundAPIGatewayConfigEntry) GetMeta() map[string]string { return e.Meta } -func (e *BoundAPIGatewayConfigEntry) Normalize() error { return nil } +func (e *BoundAPIGatewayConfigEntry) Normalize() error { + for i, listener := range e.Listeners { + for j, route := range listener.Routes { + route.EnterpriseMeta.Normalize() + + listener.Routes[j] = route + } + for j, cert := range listener.Certificates { + cert.EnterpriseMeta.Normalize() + + listener.Certificates[j] = cert + } + + e.Listeners[i] = listener + } + return nil +} func (e *BoundAPIGatewayConfigEntry) Validate() error { allowedCertificateKinds := map[string]bool{ @@ -1109,8 +1127,6 @@ func (l *BoundAPIGatewayListener) UnbindRoute(route ResourceReference) bool { return false } -func (e *BoundAPIGatewayConfigEntry) GetStatus() Status { - return Status{} -} +func (e *BoundAPIGatewayConfigEntry) GetStatus() Status { return Status{} } func (e *BoundAPIGatewayConfigEntry) SetStatus(status Status) {} func (e *BoundAPIGatewayConfigEntry) DefaultStatus() Status { return Status{} } diff --git a/agent/structs/config_entry_routes.go b/agent/structs/config_entry_routes.go index 027c8f7f7e..fa4427776a 100644 --- a/agent/structs/config_entry_routes.go +++ b/agent/structs/config_entry_routes.go @@ -79,6 +79,7 @@ func (e *HTTPRouteConfigEntry) Normalize() error { for i, parent := range e.Parents { if parent.Kind == "" { parent.Kind = APIGateway + parent.EnterpriseMeta.Normalize() e.Parents[i] = parent } } @@ -87,12 +88,22 @@ func (e *HTTPRouteConfigEntry) Normalize() error { for j, match := range rule.Matches { rule.Matches[j] = normalizeHTTPMatch(match) } + + for j, service := range rule.Services { + rule.Services[j] = normalizeHTTPService(service) + } e.Rules[i] = rule } return nil } +func normalizeHTTPService(service HTTPService) HTTPService { + service.EnterpriseMeta.Normalize() + + return service +} + func normalizeHTTPMatch(match HTTPMatch) HTTPMatch { method := string(match.Method) method = strings.ToUpper(method) @@ -494,9 +505,16 @@ func (e *TCPRouteConfigEntry) Normalize() error { for i, parent := range e.Parents { if parent.Kind == "" { parent.Kind = APIGateway + parent.EnterpriseMeta.Normalize() e.Parents[i] = parent } } + + for i, service := range e.Services { + service.EnterpriseMeta.Normalize() + e.Services[i] = service + } + return nil }