[Backport release-1.1] Fix: add owner reference in workflow context cm (#2621)

* Fix: add owner reference in workflow context cm

(cherry picked from commit f5d5fe4463)

* fix ci

(cherry picked from commit b4debba07b)

* delete useless test case

(cherry picked from commit 6fffd6c3d9)

Co-authored-by: FogDong <dongtianxin.tx@alibaba-inc.com>
This commit is contained in:
github-actions[bot]
2021-11-04 14:20:24 +08:00
committed by GitHub
co-authored by FogDong
parent 855cbfe3ec
commit 8de80ebdb2
5 changed files with 22 additions and 37 deletions
+17 -30
View File
@@ -26,8 +26,12 @@ import (
"github.com/pkg/errors"
corev1 "k8s.io/api/core/v1"
kerrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/utils/pointer"
"sigs.k8s.io/controller-runtime/pkg/client"
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
"github.com/oam-dev/kubevela/pkg/cue/model"
"github.com/oam-dev/kubevela/pkg/cue/model/value"
"github.com/oam-dev/kubevela/pkg/oam/util"
@@ -256,35 +260,9 @@ func (comp *ComponentManifest) unmarshal(v string) error {
return nil
}
// NewContext new workflow context.
func NewContext(cli client.Client, ns, rev string) (Context, error) {
var (
ctx = context.Background()
manifestCm corev1.ConfigMap
)
if err := cli.Get(ctx, client.ObjectKey{
Namespace: ns,
Name: rev,
}, &manifestCm); err != nil {
return nil, errors.WithMessagef(err, "Get manifest ConfigMap %s/%s ", ns, rev)
}
wfCtx, err := newContext(cli, ns, rev)
if err != nil {
return nil, err
}
if err := wfCtx.LoadFromConfigMap(manifestCm); err != nil {
return nil, errors.WithMessagef(err, "load from ConfigMap %s/%s", ns, rev)
}
return wfCtx, wfCtx.Commit()
}
// NewEmptyContext new workflow context without initialize data.
func NewEmptyContext(cli client.Client, ns, app string) (Context, error) {
wfCtx, err := newContext(cli, ns, app)
// NewContext new workflow context without initialize data.
func NewContext(cli client.Client, ns, app string, appUID types.UID) (Context, error) {
wfCtx, err := newContext(cli, ns, app, appUID)
if err != nil {
return nil, err
}
@@ -292,13 +270,22 @@ func NewEmptyContext(cli client.Client, ns, app string) (Context, error) {
return wfCtx, wfCtx.Commit()
}
func newContext(cli client.Client, ns, app string) (*WorkflowContext, error) {
func newContext(cli client.Client, ns, app string, appUID types.UID) (*WorkflowContext, error) {
var (
ctx = context.Background()
store corev1.ConfigMap
)
store.Name = generateStoreName(app)
store.Namespace = ns
store.SetOwnerReferences([]metav1.OwnerReference{
{
APIVersion: v1beta1.SchemeGroupVersion.String(),
Kind: v1beta1.ApplicationKind,
Name: app,
UID: appUID,
Controller: pointer.BoolPtr(true),
},
})
if err := cli.Get(ctx, client.ObjectKey{Name: store.Name, Namespace: store.Namespace}, &store); err != nil {
if kerrors.IsNotFound(err) {
if err := cli.Create(ctx, &store); err != nil {
+2 -5
View File
@@ -259,14 +259,11 @@ func TestContext(t *testing.T) {
},
}
wfCtx, err := NewContext(cli, "default", "app-v1")
wfCtx, err := NewContext(cli, "default", "app-v1", "testuid")
assert.NilError(t, err)
err = wfCtx.Commit()
assert.NilError(t, err)
_, err = NewContext(cli, "default", "app-not-found")
assert.Equal(t, err != nil, true)
wfCtx, err = LoadContext(cli, "default", "app-v1")
assert.NilError(t, err)
err = wfCtx.Commit()
@@ -276,7 +273,7 @@ func TestContext(t *testing.T) {
_, err = LoadContext(cli, "default", "app-v1")
assert.Equal(t, err != nil, true)
wfCtx, err = NewEmptyContext(cli, "default", "app-v1")
wfCtx, err = NewContext(cli, "default", "app-v1", "testuid")
assert.NilError(t, err)
assert.Equal(t, len(wfCtx.GetComponents()), 0)
_, err = wfCtx.GetComponent("server")
+1 -1
View File
@@ -106,7 +106,7 @@ func mockContext(t *testing.T) wfContext.Context {
return nil
},
}
wfCtx, err := wfContext.NewEmptyContext(cli, "default", "v1")
wfCtx, err := wfContext.NewContext(cli, "default", "v1", "testuid")
require.NoError(t, err)
return wfCtx
}
+1 -1
View File
@@ -144,7 +144,7 @@ func (w *workflow) makeContext(appName string) (wfCtx wfContext.Context, err err
return
}
wfCtx, err = wfContext.NewEmptyContext(w.cli, w.app.Namespace, appName)
wfCtx, err = wfContext.NewContext(w.cli, w.app.Namespace, appName, w.app.GetUID())
if err != nil {
err = errors.WithMessage(err, "new context")
+1
View File
@@ -363,6 +363,7 @@ var _ = Describe("Test Workflow", func() {
func makeTestCase(steps []oamcore.WorkflowStep) (*oamcore.Application, []wfTypes.TaskRunner) {
app := &oamcore.Application{
ObjectMeta: metav1.ObjectMeta{UID: "test-uid"},
Spec: oamcore.ApplicationSpec{
Workflow: &oamcore.Workflow{
Steps: steps,