Skip to content

Commit

Permalink
fix: Priority don't work in workflow spec. Fixes #10374 (#10483)
Browse files Browse the repository at this point in the history
Signed-off-by: shraddhazpy <contact@shraddhafive.in>
  • Loading branch information
shraddhazpy authored and terrytangyuan committed Mar 29, 2023
1 parent 8470ed2 commit ae06f85
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
4 changes: 3 additions & 1 deletion cmd/argo/commands/submit.go
Expand Up @@ -205,7 +205,9 @@ func submitWorkflows(ctx context.Context, serviceClient workflowpkg.WorkflowServ
}
err := util.ApplySubmitOpts(&wf, submitOpts)
errors.CheckError(err)
wf.Spec.Priority = cliOpts.Priority
if cliOpts.Priority != nil {
wf.Spec.Priority = cliOpts.Priority
}
options := &metav1.CreateOptions{}
if submitOpts.DryRun {
options.DryRun = []string{"All"}
Expand Down
53 changes: 53 additions & 0 deletions cmd/argo/commands/submit_test.go
@@ -0,0 +1,53 @@
package commands

import (
"context"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

"github.com/argoproj/argo-workflows/v3/cmd/argo/commands/common"
workflowpkg "github.com/argoproj/argo-workflows/v3/pkg/apiclient/workflow"
workflowmocks "github.com/argoproj/argo-workflows/v3/pkg/apiclient/workflow/mocks"
wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1"
)

func Test_submitWorkflows(t *testing.T) {
t.Run("Submit workflow with priority set in spec", func(t *testing.T) {
c := &workflowmocks.WorkflowServiceClient{}
priority := int32(70)
workflow := wfv1.Workflow{ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "argo"}, Spec: wfv1.WorkflowSpec{Priority: &priority}}

c.On("CreateWorkflow", mock.Anything, mock.Anything).Return(&wfv1.Workflow{}, nil)
submitWorkflows(context.TODO(), c, "argo", []wfv1.Workflow{workflow}, &wfv1.SubmitOpts{}, &common.CliSubmitOpts{})

arg := c.Mock.Calls[0].Arguments[1]
wfC, ok := arg.(*workflowpkg.WorkflowCreateRequest)
if !ok {
assert.Fail(t, "type is not WorkflowCreateRequest")
}
assert.Equal(t, priority, *wfC.Workflow.Spec.Priority)

})

t.Run("Submit workflow with priority set from cli", func(t *testing.T) {
c := &workflowmocks.WorkflowServiceClient{}
priority := int32(70)
workflow := wfv1.Workflow{ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "argo"}, Spec: wfv1.WorkflowSpec{Priority: &priority}}

priorityCLI := int32(100)
cliSubmitOpts := common.CliSubmitOpts{Priority: &priorityCLI}

c.On("CreateWorkflow", mock.Anything, mock.Anything).Return(&wfv1.Workflow{}, nil)
submitWorkflows(context.TODO(), c, "argo", []wfv1.Workflow{workflow}, &wfv1.SubmitOpts{}, &cliSubmitOpts)

arg := c.Mock.Calls[0].Arguments[1]
wfC, ok := arg.(*workflowpkg.WorkflowCreateRequest)
if !ok {
assert.Fail(t, "type is not WorkflowCreateRequest")
}
assert.Equal(t, priorityCLI, *wfC.Workflow.Spec.Priority)
})
}

0 comments on commit ae06f85

Please sign in to comment.