mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-23 22:46:53 +00:00
[Backport release-1.1] Fix: add owner reference in workflow context cm (#2621)
* Fix: add owner reference in workflow context cm (cherry picked from commitf5d5fe4463) * fix ci (cherry picked from commitb4debba07b) * delete useless test case (cherry picked from commit6fffd6c3d9) Co-authored-by: FogDong <dongtianxin.tx@alibaba-inc.com>
This commit is contained in:
co-authored by
FogDong
parent
855cbfe3ec
commit
8de80ebdb2
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user