diff --git a/pkg/appfile/parser.go b/pkg/appfile/parser.go index 8a42bc6e3..547d4cf95 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())