(ctx context.Context, req *workflowpkg.WorkflowSubmitRequest)
| 799 | } |
| 800 | |
| 801 | func (s *workflowServer) SubmitWorkflow(ctx context.Context, req *workflowpkg.WorkflowSubmitRequest) (*wfv1.Workflow, error) { |
| 802 | wfClient := auth.GetWfClient(ctx) |
| 803 | var wf *wfv1.Workflow |
| 804 | switch req.ResourceKind { |
| 805 | case workflow.CronWorkflowKind, workflow.CronWorkflowSingular, workflow.CronWorkflowPlural, workflow.CronWorkflowShortName: |
| 806 | cronWf, err := wfClient.ArgoprojV1alpha1().CronWorkflows(req.Namespace).Get(ctx, req.ResourceName, metav1.GetOptions{}) |
| 807 | if err != nil { |
| 808 | return nil, sutils.ToStatusError(err, codes.Internal) |
| 809 | } |
| 810 | wf = common.ConvertCronWorkflowToWorkflow(cronWf) |
| 811 | case workflow.WorkflowTemplateKind, workflow.WorkflowTemplateSingular, workflow.WorkflowTemplatePlural, workflow.WorkflowTemplateShortName: |
| 812 | wf = common.NewWorkflowFromWorkflowTemplate(req.ResourceName, false) |
| 813 | case workflow.ClusterWorkflowTemplateKind, workflow.ClusterWorkflowTemplateSingular, workflow.ClusterWorkflowTemplatePlural, workflow.ClusterWorkflowTemplateShortName: |
| 814 | wf = common.NewWorkflowFromWorkflowTemplate(req.ResourceName, true) |
| 815 | default: |
| 816 | err := errors.Errorf(errors.CodeBadRequest, "Resource kind '%s' is not supported for submitting", req.ResourceKind) |
| 817 | err = sutils.ToStatusError(err, codes.InvalidArgument) |
| 818 | return nil, err |
| 819 | } |
| 820 | |
| 821 | s.instanceIDService.Label(wf) |
| 822 | creator.LabelCreator(ctx, wf) |
| 823 | err := util.ApplySubmitOpts(wf, req.SubmitOptions) |
| 824 | if err != nil { |
| 825 | return nil, sutils.ToStatusError(err, codes.Internal) |
| 826 | } |
| 827 | |
| 828 | wftmplGetter := s.wftmplStore.Getter(ctx, req.Namespace) |
| 829 | cwftmplGetter := s.cwftmplStore.Getter(ctx) |
| 830 | |
| 831 | err = validate.ValidateWorkflow(ctx, wftmplGetter, cwftmplGetter, wf, s.wfDefaults, validate.ValidateOpts{Submit: true}) |
| 832 | if err != nil { |
| 833 | return nil, sutils.ToStatusError(err, codes.InvalidArgument) |
| 834 | } |
| 835 | |
| 836 | // if we are doing a normal dryRun, just return the workflow un-altered |
| 837 | if req.SubmitOptions != nil && req.SubmitOptions.DryRun { |
| 838 | return wf, nil |
| 839 | } |
| 840 | if req.SubmitOptions != nil && req.SubmitOptions.ServerDryRun { |
| 841 | // For a server dry run we require a namespace |
| 842 | if wf.Namespace == "" { |
| 843 | wf.Namespace = req.Namespace |
| 844 | } |
| 845 | workflow, err := util.CreateServerDryRun(ctx, wf, wfClient) |
| 846 | if err != nil { |
| 847 | return nil, sutils.ToStatusError(err, codes.InvalidArgument) |
| 848 | } |
| 849 | return workflow, nil |
| 850 | } |
| 851 | |
| 852 | wf, err = wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) |
| 853 | if err != nil { |
| 854 | return nil, sutils.ToStatusError(err, codes.InvalidArgument) |
| 855 | } |
| 856 | return wf, nil |
| 857 | } |
nothing calls this directly
no test coverage detected