|
|
@@ -11,7 +11,7 @@ const (
|
|
|
getWorkflowsInNamespaceRelativeUrl = "/api/v1/workflows/{namespace}"
|
|
|
getWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/{name}"
|
|
|
lintWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/lint"
|
|
|
- submitWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/{name}/submit"
|
|
|
+ submitWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/submit"
|
|
|
resubmitWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/{name}/resubmit"
|
|
|
resumeWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/{name}/resume"
|
|
|
retryWorkflowRelativeUrl = "/api/v1/workflows/{namespace}/{name}/retry"
|
|
|
@@ -246,19 +246,75 @@ func (c *Client) LintWorkflow(params LintWorkflowParams) error {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-type SubmitWorkflowParams struct {
|
|
|
- Namespace string
|
|
|
- Name string
|
|
|
+type SubmitWorkflowFromWorkflowTemplateParams struct {
|
|
|
+ Namespace string
|
|
|
+ TemplateName string
|
|
|
+ Parameters []string
|
|
|
}
|
|
|
|
|
|
-func (c *Client) SubmitWorkflow(params SubmitWorkflowParams) error {
|
|
|
- return nil
|
|
|
+func (c *Client) SubmitWorkflowFromWorkflowTemplate(params SubmitWorkflowFromWorkflowTemplateParams) (string, error) {
|
|
|
+ responseMap := make(map[string]any)
|
|
|
+
|
|
|
+ resp, err := c.restyClient.R().
|
|
|
+ SetHeader("Content-Type", "application/json").
|
|
|
+ SetAuthToken(c.token).
|
|
|
+ SetPathParams(map[string]string{
|
|
|
+ "namespace": params.Namespace,
|
|
|
+ }).
|
|
|
+ SetBody(map[string]any{
|
|
|
+ "namespace": params.Namespace,
|
|
|
+ "resourceKind": "WorkflowTemplate",
|
|
|
+ "resourceName": params.TemplateName,
|
|
|
+ "submitOptions": map[string]any{
|
|
|
+ "parameters": params.Parameters,
|
|
|
+ },
|
|
|
+ }).
|
|
|
+ SetResult(&responseMap).
|
|
|
+ SetError(&responseMap).
|
|
|
+ Post(submitWorkflowRelativeUrl)
|
|
|
+ if err != nil {
|
|
|
+ return "", errors.New(err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ switch resp.StatusCode() {
|
|
|
+ case http.StatusOK:
|
|
|
+ metadata, ok := responseMap["metadata"]
|
|
|
+ if !ok {
|
|
|
+ return "", errors.New("metadata为空")
|
|
|
+ }
|
|
|
+
|
|
|
+ metadataMap, ok := metadata.(map[string]any)
|
|
|
+ if !ok {
|
|
|
+ return "", errors.New("metadata不是map")
|
|
|
+ }
|
|
|
+
|
|
|
+ workflowName, ok := metadataMap["name"]
|
|
|
+ if !ok {
|
|
|
+ return "", errors.New("metadata中没有工作流名称")
|
|
|
+ }
|
|
|
+
|
|
|
+ workflowNameStr, ok := workflowName.(string)
|
|
|
+ if !ok {
|
|
|
+ return "", errors.New("工作流名称不是字符串")
|
|
|
+ }
|
|
|
+
|
|
|
+ return workflowNameStr, nil
|
|
|
+ case http.StatusConflict:
|
|
|
+ return "", errors.New("工作流已存在")
|
|
|
+ default:
|
|
|
+ message, ok := responseMap["message"]
|
|
|
+ if !ok {
|
|
|
+ return "", errors.Errorf("%v", resp.Status())
|
|
|
+ }
|
|
|
+
|
|
|
+ return "", errors.Errorf("%v, %v", resp.Status(), message)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
type ResubmitWorkflowParams struct {
|
|
|
- Namespace string
|
|
|
- Name string
|
|
|
- ResubmitParametersJson string
|
|
|
+ Namespace string
|
|
|
+ Name string
|
|
|
+ ResubmitParameters []string
|
|
|
}
|
|
|
|
|
|
func (c *Client) ResubmitWorkflow(params ResubmitWorkflowParams) error {
|
|
|
@@ -277,7 +333,7 @@ func (c *Client) ResumeWorkflow(params ResumeWorkflowParams) error {
|
|
|
type RetryWorkflowParams struct {
|
|
|
Namespace string
|
|
|
Name string
|
|
|
- RetryParametersJson string
|
|
|
+ RetryParameters []string
|
|
|
RetryOnSuccessWorkflowNodeFieldSelector string
|
|
|
}
|
|
|
|
|
|
@@ -286,12 +342,12 @@ func (c *Client) RetryWorkflow(params RetryWorkflowParams) error {
|
|
|
}
|
|
|
|
|
|
type SetWorkflowParams struct {
|
|
|
- Namespace string
|
|
|
- Name string
|
|
|
- NodeFieldSelector string
|
|
|
- Message string
|
|
|
- Phase string
|
|
|
- OutputParametersJson string
|
|
|
+ Namespace string
|
|
|
+ Name string
|
|
|
+ NodeFieldSelector string
|
|
|
+ Message string
|
|
|
+ Phase string
|
|
|
+ OutputParameters []string
|
|
|
}
|
|
|
|
|
|
func (c *Client) SetWorkflow(params SetWorkflowParams) error {
|