Skip to content

Commit

Permalink
Fix: make the synced workflow name normative (kubevela#5278)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
barnettZQG committed Jan 30, 2023
1 parent c4c89c9 commit 76cde15
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 20 deletions.
8 changes: 4 additions & 4 deletions pkg/apiserver/domain/repository/envbinding.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkg/apiserver/domain/repository/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/apiserver/domain/service/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
4 changes: 3 additions & 1 deletion pkg/apiserver/domain/service/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
3 changes: 1 addition & 2 deletions pkg/apiserver/event/sync/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
17 changes: 8 additions & 9 deletions pkg/apiserver/event/sync/convert/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion pkg/apiserver/event/sync/cr2ux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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))

Expand Down
3 changes: 2 additions & 1 deletion pkg/apiserver/event/sync/worker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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")
Expand Down

0 comments on commit 76cde15

Please sign in to comment.