mirror of
https://github.com/kubevela/kubevela.git
synced 2026-08-19 04:26:39 +00:00
Fix: make the synced workflow name normative (#5278)
* Fix: make the synced workflow name normative Signed-off-by: barnettZQG <barnett.zqg@gmail.com> * Fix: query the latest workflow Signed-off-by: barnettZQG <barnett.zqg@gmail.com> Signed-off-by: barnettZQG <barnett.zqg@gmail.com>
This commit is contained in:
@@ -120,10 +120,10 @@ func pickEnv(envs []*model.Env, name string) (*model.Env, error) {
|
||||
return nil, bcode.ErrEnvNotExisted
|
||||
}
|
||||
|
||||
func pickEnvWorkflow(envs []*model.Workflow, name string) (*model.Workflow, error) {
|
||||
for _, e := range envs {
|
||||
if e.EnvName == name {
|
||||
return e, nil
|
||||
func pickEnvWorkflow(workflows []*model.Workflow, name string) (*model.Workflow, error) {
|
||||
for _, w := range workflows {
|
||||
if w.EnvName == name {
|
||||
return w, nil
|
||||
}
|
||||
}
|
||||
return nil, bcode.ErrWorkflowNotExist
|
||||
|
||||
@@ -660,7 +660,7 @@ func ListWorkflowForApp(ctx context.Context, ds datastore.DataStore, appPrimaryK
|
||||
var workflow = model.Workflow{
|
||||
AppPrimaryKey: appPrimaryKey,
|
||||
}
|
||||
workflows, err := ds.List(ctx, &workflow, nil)
|
||||
workflows, err := ds.List(ctx, &workflow, &datastore.ListOptions{SortBy: []datastore.SortOption{{Key: "createTime", Order: datastore.SortOrderDescending}}})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1707,7 +1707,7 @@ func (c *applicationServiceImpl) RollbackWithRevision(ctx context.Context, appli
|
||||
rollbackApplication = rollBackApp
|
||||
}
|
||||
|
||||
work, _, err := convert.FromCRWorkflow(ctx, c.KubeClient, application.PrimaryKey(), rollbackApplication)
|
||||
work, _, err := convert.FromCRWorkflow(ctx, c.KubeClient, application.PrimaryKey(), rollbackApplication, revision.EnvName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -290,7 +290,9 @@ func (w *workflowServiceImpl) ListWorkflowRecords(ctx context.Context, workflow
|
||||
AppPrimaryKey: workflow.AppPrimaryKey,
|
||||
WorkflowName: workflow.Name,
|
||||
}
|
||||
records, err := w.Store.List(ctx, &record, &datastore.ListOptions{Page: page, PageSize: pageSize})
|
||||
records, err := w.Store.List(ctx, &record, &datastore.ListOptions{Page: page, PageSize: pageSize, SortBy: []datastore.SortOption{
|
||||
{Key: "createTime", Order: datastore.SortOrderAscending},
|
||||
}})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -117,11 +117,10 @@ func (c *CR2UX) ConvertApp2DatastoreApp(ctx context.Context, targetApp *v1beta1.
|
||||
}
|
||||
|
||||
// 5. convert workflow
|
||||
wf, steps, err := convert.FromCRWorkflow(ctx, cli, appMeta.PrimaryKey(), targetApp)
|
||||
wf, steps, err := convert.FromCRWorkflow(ctx, cli, appMeta.PrimaryKey(), targetApp, dsApp.Env.Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
wf.EnvName = dsApp.Env.Name
|
||||
dsApp.Workflow = &wf
|
||||
|
||||
// 6. convert policy, some policies are references in workflow step, we need to sync all the outside policy to make that work
|
||||
|
||||
@@ -32,6 +32,7 @@ import (
|
||||
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/domain/model"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/infrastructure/datastore"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/utils"
|
||||
"github.com/oam-dev/kubevela/pkg/multicluster"
|
||||
"github.com/oam-dev/kubevela/pkg/oam"
|
||||
"github.com/oam-dev/kubevela/pkg/policy"
|
||||
@@ -86,21 +87,19 @@ func FromCRPolicy(appPrimaryKey string, policyCR v1beta1.AppPolicy, creator stri
|
||||
}
|
||||
|
||||
// FromCRWorkflow converts Application CR Workflow section into velaux data store workflow
|
||||
func FromCRWorkflow(ctx context.Context, cli client.Client, appPrimaryKey string, app *v1beta1.Application) (model.Workflow, []workflowv1alpha1.WorkflowStep, error) {
|
||||
func FromCRWorkflow(ctx context.Context, cli client.Client, appPrimaryKey string, app *v1beta1.Application, envName string) (model.Workflow, []workflowv1alpha1.WorkflowStep, error) {
|
||||
var defaultWorkflow = true
|
||||
name := app.Annotations[oam.AnnotationWorkflowName]
|
||||
if name == "" {
|
||||
name = model.AutoGenWorkflowNamePrefix + appPrimaryKey
|
||||
name = fmt.Sprintf("workflow-%s", envName)
|
||||
}
|
||||
dataWf := model.Workflow{
|
||||
AppPrimaryKey: appPrimaryKey,
|
||||
// every namespace has a synced env
|
||||
EnvName: model.AutoGenEnvNamePrefix + app.Namespace,
|
||||
// every application has a synced workflow
|
||||
Name: name,
|
||||
Alias: model.AutoGenWorkflowNamePrefix + app.Name,
|
||||
Description: model.AutoGenDesc,
|
||||
Default: &defaultWorkflow,
|
||||
EnvName: envName,
|
||||
Name: name,
|
||||
Alias: fmt.Sprintf("%s Workflow", utils.FirstUpper(envName)),
|
||||
Description: model.AutoGenDesc,
|
||||
Default: &defaultWorkflow,
|
||||
}
|
||||
if app.Spec.Workflow == nil {
|
||||
return dataWf, nil, nil
|
||||
|
||||
@@ -115,6 +115,8 @@ var _ = Describe("Test CR convert to ux", func() {
|
||||
app1 := &v1beta1.Application{}
|
||||
Expect(common2.ReadYamlToObject("testdata/test-app1.yaml", app1)).Should(BeNil())
|
||||
app1.Namespace = appNS1
|
||||
envName := model.AutoGenEnvNamePrefix + app1.Namespace
|
||||
|
||||
Expect(cr2ux.AddOrUpdate(context.Background(), app1)).Should(BeNil())
|
||||
comp1 := model.ApplicationComponent{AppPrimaryKey: apName1, Name: "nginx"}
|
||||
Expect(ds.Get(context.Background(), &comp1)).Should(BeNil())
|
||||
@@ -128,7 +130,8 @@ var _ = Describe("Test CR convert to ux", func() {
|
||||
Expect(ds.Get(ctx, &appPlc1)).Should(BeNil())
|
||||
appPlc2 := model.ApplicationPolicy{AppPrimaryKey: app1.Name, Name: "topology-local"}
|
||||
Expect(ds.Get(ctx, &appPlc2)).Should(BeNil())
|
||||
appwf1 := model.Workflow{AppPrimaryKey: app1.Name, Name: model.AutoGenWorkflowNamePrefix + app1.Name}
|
||||
|
||||
appwf1 := model.Workflow{AppPrimaryKey: app1.Name, Name: "workflow-" + envName}
|
||||
Expect(ds.Get(ctx, &appwf1)).Should(BeNil())
|
||||
Expect(len(appwf1.Steps)).Should(BeEquivalentTo(1))
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
|
||||
"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/domain/model"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/domain/repository"
|
||||
"github.com/oam-dev/kubevela/pkg/apiserver/infrastructure/datastore"
|
||||
"github.com/oam-dev/kubevela/pkg/oam/util"
|
||||
common2 "github.com/oam-dev/kubevela/pkg/utils/common"
|
||||
@@ -105,7 +106,7 @@ var _ = Describe("Test Worker CR sync to datastore", func() {
|
||||
Expect(appPlc1.CreateTime.IsZero()).Should(BeFalse())
|
||||
appPlc2 := model.ApplicationPolicy{AppPrimaryKey: app1.Name, Name: "topology-local"}
|
||||
Expect(ds.Get(ctx, &appPlc2)).Should(BeNil())
|
||||
appwf1 := model.Workflow{AppPrimaryKey: app1.Name, Name: model.AutoGenWorkflowNamePrefix + app1.Name}
|
||||
appwf1 := model.Workflow{AppPrimaryKey: app1.Name, Name: repository.ConvertWorkflowName(env.Name)}
|
||||
Expect(ds.Get(ctx, &appwf1)).Should(BeNil())
|
||||
|
||||
By("create test app2 and check the syncing results")
|
||||
|
||||
Reference in New Issue
Block a user