Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Cannot create WorkflowTemplate with un-supplied inputs #2869

Merged
merged 67 commits into from Apr 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
64f6403
Update cli_with_server_test.go
sarabala1979 Feb 7, 2020
4a67b77
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 13, 2020
b318144
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 14, 2020
ccc86c7
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 18, 2020
4702130
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 21, 2020
3a11f82
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 21, 2020
44d8b51
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 21, 2020
07a41f9
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 24, 2020
3ac482d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 25, 2020
0934b2a
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 26, 2020
5b4c201
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 27, 2020
0875e7b
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Feb 28, 2020
9da394b
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 6, 2020
dff0204
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 12, 2020
3e2d0cd
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 12, 2020
1873bc1
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 12, 2020
b45c85d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 15, 2020
b3fe528
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 15, 2020
ae62719
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 16, 2020
a49bebe
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 17, 2020
68097c1
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 18, 2020
48ece72
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 18, 2020
d151e8f
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 18, 2020
c4ebd48
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 19, 2020
b6653f6
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 19, 2020
d7b1503
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 19, 2020
d1e72e8
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 20, 2020
caf42aa
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 23, 2020
f2e2f43
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 24, 2020
a71f32d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 25, 2020
46a86a1
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 25, 2020
0ba75d7
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 25, 2020
cd24fff
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 26, 2020
76c6b98
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 26, 2020
4aadd7a
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 30, 2020
484ff30
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 30, 2020
b123157
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 30, 2020
8c62154
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Mar 31, 2020
1777b3f
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 1, 2020
655013f
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 2, 2020
e02a98c
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 2, 2020
f5e3c8f
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 3, 2020
da26c49
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 3, 2020
bfd8602
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 6, 2020
3046680
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 6, 2020
48d3a4b
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 6, 2020
b9f9d1d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 7, 2020
f3098d3
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 7, 2020
a7c82b7
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 7, 2020
38bc2ee
Update cluster-workflow-template-nested-template.yaml
sarabala1979 Apr 8, 2020
b9dcbf0
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 8, 2020
fde23eb
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 8, 2020
45d0236
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 9, 2020
a0d6683
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 9, 2020
a63ec69
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 10, 2020
0145e5d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 13, 2020
28ddbdf
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 15, 2020
2f6c39d
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 19, 2020
8d36b37
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 20, 2020
961adab
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 21, 2020
d738553
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 21, 2020
4acd70e
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 22, 2020
54fce61
Merge branch 'master' of https://github.com/argoproj/argo
sarabala1979 Apr 27, 2020
766677f
Fixed WFT and CWFT validation
sarabala1979 Apr 28, 2020
d195796
Merge remote-tracking branch 'upstream/master' into issue-2857
sarabala1979 Apr 28, 2020
53f7309
Added test
sarabala1979 Apr 28, 2020
a8a5d13
Update validate.go
sarabala1979 Apr 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 12 additions & 3 deletions workflow/validate/validate.go
Expand Up @@ -39,6 +39,9 @@ type ValidateOpts struct {
// IgnoreEntrypoint indicates to skip/ignore the EntryPoint validation on workflow spec.
// Entrypoint is optional for WorkflowTemplate and ClusterWorkflowTemplate
IgnoreEntrypoint bool

// WorkflowTemplateValidation indicates that the current context is validating a WorkflowTemplate or ClusterWorkflowTemplate
WorkflowTemplateValidation bool
}

// templateValidationCtx is the context for validating a workflow spec
Expand Down Expand Up @@ -172,7 +175,13 @@ func ValidateWorkflow(wftmplGetter templateresolution.WorkflowTemplateNamespaced
}

if !opts.IgnoreEntrypoint {
_, err = ctx.validateTemplateHolder(&wfv1.WorkflowStep{Template: wf.Spec.Entrypoint}, tmplCtx, &wf.Spec.Arguments, map[string]interface{}{})
var args wfv1.ArgumentsProvider
args = &wf.Spec.Arguments
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not

Suggested change
args = &wf.Spec.Arguments
args := &wf.Spec.Arguments

Instead of var args wfv1.ArgumentsProvider?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FakeArgument is a separate struct. ArgumentsProvider is a common interface that used to pass either wfv1. Argument or FakeArgument.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, of course!


if opts.WorkflowTemplateValidation {
args = &FakeArguments{}
}
_, err = ctx.validateTemplateHolder(&wfv1.WorkflowStep{Template: wf.Spec.Entrypoint}, tmplCtx, args, map[string]interface{}{})
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -208,13 +217,13 @@ func ValidateWorkflow(wftmplGetter templateresolution.WorkflowTemplateNamespaced
// ValidateWorkflowTemplate accepts a workflow template and performs validation against it.
func ValidateWorkflowTemplate(wftmplGetter templateresolution.WorkflowTemplateNamespacedGetter, cwftmplGetter templateresolution.ClusterWorkflowTemplateGetter, wftmpl *wfv1.WorkflowTemplate) (*wfv1.WorkflowConditions, error) {
wf := common.ConvertWorkflowTemplateToWorkflow(wftmpl)
return ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, ValidateOpts{IgnoreEntrypoint: wf.Spec.Entrypoint == ""})
return ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, ValidateOpts{IgnoreEntrypoint: wf.Spec.Entrypoint == "", WorkflowTemplateValidation: true})
}

// ValidateClusterWorkflowTemplate accepts a cluster workflow template and performs validation against it.
func ValidateClusterWorkflowTemplate(wftmplGetter templateresolution.WorkflowTemplateNamespacedGetter, cwftmplGetter templateresolution.ClusterWorkflowTemplateGetter, cwftmpl *wfv1.ClusterWorkflowTemplate) (*wfv1.WorkflowConditions, error) {
wf := common.ConvertClusterWorkflowTemplateToWorkflow(cwftmpl)
return ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, ValidateOpts{IgnoreEntrypoint: wf.Spec.Entrypoint == ""})
return ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, ValidateOpts{IgnoreEntrypoint: wf.Spec.Entrypoint == "", WorkflowTemplateValidation: true})
}

// ValidateCronWorkflow validates a CronWorkflow
Expand Down
23 changes: 23 additions & 0 deletions workflow/validate/validate_test.go
Expand Up @@ -2385,3 +2385,26 @@ func TestWorfklowGlobalVariables(t *testing.T) {
_, err := validate(globalVariables)
assert.NoError(t, err)
}

var wfTemplateWithEntrypoint = `
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: template-with-entrypoint
spec:
entrypoint: whalesay-template
templates:
- name: whalesay-template
inputs:
parameters:
- name: message
container:
image: docker/whalesay
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
`

func TestWorkflowTemplateWithEntrypoint(t *testing.T) {
err := validateWorkflowTemplate(wfTemplateWithEntrypoint)
assert.NoError(t, err)
}