From 63cb8a5ba55c2050836d6605fea815ed0ed9e905 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 20 Jun 2019 14:52:43 +0300 Subject: [PATCH] Lookup the canary provider field during reconciliation Override the global provider if one is specified in the canary spec --- pkg/controller/scheduler.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/controller/scheduler.go b/pkg/controller/scheduler.go index a6f9ddd3..943a9809 100644 --- a/pkg/controller/scheduler.go +++ b/pkg/controller/scheduler.go @@ -90,10 +90,16 @@ func (c *Controller) advanceCanary(name string, namespace string, skipLivenessCh primaryName := fmt.Sprintf("%s-primary", cd.Spec.TargetRef.Name) + // override the global provider if one is specified in the canary spec + provider := c.meshProvider + if cd.Spec.Provider != "" { + provider = cd.Spec.Provider + } + // create primary deployment and hpa if needed // skip primary check for Istio since the deployment will become ready after the ClusterIP are created skipPrimaryCheck := false - if skipLivenessChecks || strings.Contains(c.meshProvider, "istio") { + if skipLivenessChecks || strings.Contains(provider, "istio") { skipPrimaryCheck = true } label, ports, err := c.deployer.Initialize(cd, skipPrimaryCheck) @@ -103,7 +109,7 @@ func (c *Controller) advanceCanary(name string, namespace string, skipLivenessCh } // init routers - meshRouter := c.routerFactory.MeshRouter(c.meshProvider) + meshRouter := c.routerFactory.MeshRouter(provider) // create or update ClusterIP services if err := c.routerFactory.KubernetesRouter(label, ports).Reconcile(cd); err != nil {