From 3acae0472c48c529b72db5bfdc04dc0464a0044f Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 19 Dec 2019 18:24:54 +0200 Subject: [PATCH] Add Contour timeout and retry policies --- pkg/router/contour.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/pkg/router/contour.go b/pkg/router/contour.go index 9b2678ee3..7f8a79c5e 100644 --- a/pkg/router/contour.go +++ b/pkg/router/contour.go @@ -38,6 +38,8 @@ func (cr *ContourRouter) Reconcile(canary *flaggerv1.Canary) error { Prefix: "/", }, }, + TimeoutPolicy: cr.makeTimeoutPolicy(canary), + RetryPolicy: cr.makeRetryPolicy(canary), Services: []contourv1.Service{ { Name: primaryName, @@ -58,7 +60,9 @@ func (cr *ContourRouter) Reconcile(canary *flaggerv1.Canary) error { newSpec = contourv1.HTTPProxySpec{ Routes: []contourv1.Route{ { - Conditions: cr.makeConditions(canary), + Conditions: cr.makeConditions(canary), + TimeoutPolicy: cr.makeTimeoutPolicy(canary), + RetryPolicy: cr.makeRetryPolicy(canary), Services: []contourv1.Service{ { Name: primaryName, @@ -78,6 +82,8 @@ func (cr *ContourRouter) Reconcile(canary *flaggerv1.Canary) error { Prefix: "/", }, }, + TimeoutPolicy: cr.makeTimeoutPolicy(canary), + RetryPolicy: cr.makeRetryPolicy(canary), Services: []contourv1.Service{ { Name: primaryName, @@ -317,3 +323,22 @@ func (cr *ContourRouter) makeConditions(canary *flaggerv1.Canary) []contourv1.Co return list } + +func (cr *ContourRouter) makeTimeoutPolicy(canary *flaggerv1.Canary) *contourv1.TimeoutPolicy { + if canary.Spec.Service.Timeout != "" { + return &contourv1.TimeoutPolicy{ + Response: canary.Spec.Service.Timeout, + } + } + return nil +} + +func (cr *ContourRouter) makeRetryPolicy(canary *flaggerv1.Canary) *contourv1.RetryPolicy { + if canary.Spec.Service.Retries != nil { + return &contourv1.RetryPolicy{ + NumRetries: uint32(canary.Spec.Service.Retries.Attempts), + PerTryTimeout: canary.Spec.Service.Retries.PerTryTimeout, + } + } + return nil +}