From e636d7c48c9012873ddd2fbd04366e1a8a1bd2fe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Nov 2021 13:07:14 +0800 Subject: [PATCH] [Backport release-1.1] Fix: health check appRev label bug (#2822) * Fix: healthscope failed since appRevision is not set && rollout controller amend appRevision to workload since compRev does not have this one (cherry picked from commit dd67fa976e0d76b17f571d606a860c3d8ce5a2d9) * Fix: test (cherry picked from commit 97cf2d1bfd96f5a89630fbb497772bb3b839bb3d) Co-authored-by: Yin Da --- pkg/appfile/parser.go | 3 +++ .../standard.oam.dev/v1alpha1/rollout/handler.go | 15 +++++++++++++-- .../v1alpha1/rollout/handler_suit_test.go | 8 ++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/pkg/appfile/parser.go b/pkg/appfile/parser.go index 79ab91b84..28693374a 100644 --- a/pkg/appfile/parser.go +++ b/pkg/appfile/parser.go @@ -78,6 +78,9 @@ func (p *Parser) GenerateAppFile(ctx context.Context, app *v1beta1.Application) appName := app.Name appfile := p.newAppfile(appName, ns, app) + if app.Status.LatestRevision != nil { + appfile.AppRevisionName = app.Status.LatestRevision.Name + } var wds []*Workload for _, comp := range app.Spec.Components { diff --git a/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler.go b/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler.go index b6bbbc2c0..c32f1c900 100644 --- a/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler.go +++ b/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler.go @@ -221,13 +221,24 @@ func (h *handler) setWorkloadBaseInfo() { h.sourceWorkload.SetNamespace(h.rollout.Namespace) } + var appRev string + if len(h.rollout.GetLabels()) > 0 { + appRev = h.rollout.GetLabels()[oam.LabelAppRevision] + } + h.targetWorkload.SetName(h.compName) - util.AddLabels(h.targetWorkload, map[string]string{oam.LabelAppComponentRevision: h.targetRevName}) + util.AddLabels(h.targetWorkload, map[string]string{ + oam.LabelAppComponentRevision: h.targetRevName, + oam.LabelAppRevision: appRev, + }) util.AddAnnotations(h.targetWorkload, map[string]string{oam.AnnotationSkipGC: "true"}) if h.sourceWorkload != nil { h.sourceWorkload.SetName(h.compName) - util.AddLabels(h.sourceWorkload, map[string]string{oam.LabelAppComponentRevision: h.sourceRevName}) + util.AddLabels(h.sourceWorkload, map[string]string{ + oam.LabelAppComponentRevision: h.sourceRevName, + oam.LabelAppRevision: appRev, + }) } } diff --git a/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler_suit_test.go b/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler_suit_test.go index f9d1a2615..b0db8eaf9 100644 --- a/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler_suit_test.go +++ b/pkg/controller/standard.oam.dev/v1alpha1/rollout/handler_suit_test.go @@ -60,6 +60,7 @@ var _ = Describe("Test rollout related handler func", func() { srcWorkload.SetAPIVersion("apps/v1") srcWorkload.SetKind("Deployment") compName := "comp-test" + appRevName := "app-revision-v2" h := handler{ reconciler: &reconciler{ Client: k8sClient, @@ -67,6 +68,9 @@ var _ = Describe("Test rollout related handler func", func() { rollout: &v1alpha1.Rollout{ ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, + Labels: map[string]string{ + oam.LabelAppRevision: appRevName, + }, }}, targetWorkload: tarWorkload, sourceWorkload: srcWorkload, @@ -82,10 +86,10 @@ var _ = Describe("Test rollout related handler func", func() { Expect(h.targetWorkload.GetNamespace()).Should(BeEquivalentTo(namespace)) Expect(h.sourceWorkload.GetNamespace()).Should(BeEquivalentTo(namespace)) tarLabel := h.targetWorkload.GetLabels() - Expect(len(tarLabel)).Should(BeEquivalentTo(2)) + Expect(tarLabel[oam.LabelAppRevision]).Should(BeEquivalentTo(appRevName)) Expect(tarLabel[oam.LabelAppComponentRevision]).Should(BeEquivalentTo("comp-test-v2")) srcLabel := h.sourceWorkload.GetLabels() - Expect(len(srcLabel)).Should(BeEquivalentTo(2)) + Expect(srcLabel[oam.LabelAppRevision]).Should(BeEquivalentTo(appRevName)) Expect(srcLabel[oam.LabelAppComponentRevision]).Should(BeEquivalentTo("comp-test-v1")) Expect(h.assembleWorkload(ctx)).Should(BeNil())