Skip to content

Commit

Permalink
Add service metadata update unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
stefanprodan committed Apr 4, 2020
1 parent 3de8e99 commit d34d60f
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 10 deletions.
2 changes: 1 addition & 1 deletion pkg/controller/finalizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func (c *Controller) finalize(old interface{}) error {
}

// Revert the Kubernetes service
router := c.routerFactory.KubernetesRouter(canary.Spec.TargetRef.Kind, labelSelector, map[string]string{}, ports)
router := c.routerFactory.KubernetesRouter(canary.Spec.TargetRef.Kind, labelSelector, ports)
if err := router.Finalize(canary); err != nil {
return fmt.Errorf("failed revert router: %w", err)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/controller/scheduler.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ func (c *Controller) advanceCanary(name string, namespace string) {
}

// init Kubernetes router
kubeRouter := c.routerFactory.KubernetesRouter(cd.Spec.TargetRef.Kind, labelSelector, map[string]string{}, ports)
kubeRouter := c.routerFactory.KubernetesRouter(cd.Spec.TargetRef.Kind, labelSelector, ports)
if err := kubeRouter.Initialize(cd); err != nil {
c.recordEventWarningf(cd, "%v", err)
return
Expand Down
3 changes: 1 addition & 2 deletions pkg/router/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func NewFactory(kubeConfig *restclient.Config, kubeClient kubernetes.Interface,
}

// KubernetesRouter returns a KubernetesRouter interface implementation
func (factory *Factory) KubernetesRouter(kind string, labelSelector string, annotations map[string]string, ports map[string]int32) KubernetesRouter {
func (factory *Factory) KubernetesRouter(kind string, labelSelector string, ports map[string]int32) KubernetesRouter {
switch kind {
case "Service":
return &KubernetesNoopRouter{}
Expand All @@ -45,7 +45,6 @@ func (factory *Factory) KubernetesRouter(kind string, labelSelector string, anno
flaggerClient: factory.flaggerClient,
kubeClient: factory.kubeClient,
labelSelector: labelSelector,
annotations: annotations,
ports: ports,
}
}
Expand Down
8 changes: 2 additions & 6 deletions pkg/router/kubernetes_default.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ type KubernetesDefaultRouter struct {
flaggerClient clientset.Interface
logger *zap.SugaredLogger
labelSelector string
annotations map[string]string
ports map[string]int32
}

Expand Down Expand Up @@ -119,15 +118,12 @@ func (c *KubernetesDefaultRouter) reconcileService(canary *flaggerv1.Canary, nam
if metadata.Labels == nil {
metadata.Labels = make(map[string]string)
}
metadata.Labels[c.labelSelector] = name

if metadata.Annotations == nil {
metadata.Annotations = make(map[string]string)
}

metadata.Labels[c.labelSelector] = name
for k, v := range c.annotations {
metadata.Annotations[k] = v
}

c.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)).
Debugw(fmt.Sprintf("Creating Service %s", name), "metadata", metadata, "service_configuration", canary.Spec.Service)

Expand Down
14 changes: 14 additions & 0 deletions pkg/router/kubernetes_default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -413,4 +413,18 @@ func TestServiceRouter_ReconcileMetadata(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, 0, len(primarySvc.Annotations))
assert.Equal(t, "podinfo-primary", primarySvc.Labels["app"])

mocks.canary.Spec.Service.Apex = &flaggerv1.CustomMetadata{
Labels: map[string]string{"test": "test1"},
Annotations: map[string]string{"test1": "test"},
}

err = router.Reconcile(mocks.canary)
require.NoError(t, err)

apexSvc, err = mocks.kubeClient.CoreV1().Services("default").Get("podinfo", metav1.GetOptions{})
require.NoError(t, err)
assert.Equal(t, "test", apexSvc.Annotations["test1"])
assert.Equal(t, "test1", apexSvc.Labels["test"])
assert.Equal(t, "podinfo", apexSvc.Labels["app"])
}

0 comments on commit d34d60f

Please sign in to comment.