From b955dc5dbf1c6e7a6c8208f3cb4241946d25b487 Mon Sep 17 00:00:00 2001 From: Raj Babu Das Date: Sun, 8 Nov 2020 16:40:26 +0530 Subject: [PATCH] Refactoring update workflow function (#2329) Signed-off-by: Raj Babu Das --- .../pkg/graphql/mutations/mutation.go | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/litmus-portal/graphql-server/pkg/graphql/mutations/mutation.go b/litmus-portal/graphql-server/pkg/graphql/mutations/mutation.go index 59b1093ea..2c666f87f 100644 --- a/litmus-portal/graphql-server/pkg/graphql/mutations/mutation.go +++ b/litmus-portal/graphql-server/pkg/graphql/mutations/mutation.go @@ -276,16 +276,35 @@ func DeleteCluster(cluster_id string, r store.StateData) (string, error) { } func UpdateWorkflow(workflow *model.ChaosWorkFlowInput, r store.StateData) (*model.ChaosWorkFlowResponse, error) { - query := bson.D{{"workflow_id", workflow.WorkflowID}} - update := bson.D{{"$set", bson.D{{"workflow_manifest", workflow.WorkflowManifest}, {"cronSyntax", workflow.CronSyntax}, {"workflow_name", workflow.WorkflowName}, {"workflow_description", workflow.WorkflowDescription}, {"isCustomWorkflow", workflow.IsCustomWorkflow}, {"weightages", workflow.Weightages}, {"updated_at", strconv.FormatInt(time.Now().Unix(), 10)}}}} - err := database.UpdateChaosWorkflow(query, update) + var newWeightages []*database.WeightagesInput + copier.Copy(&newWeightages, &workflow.Weightages) + + var workflowManifest map[string]interface{} + err := json.Unmarshal([]byte(workflow.WorkflowManifest), &workflowManifest) + if err != nil { + return nil, err + } + + newWorkflowManifest, err := sjson.Set(workflow.WorkflowManifest, "metadata.labels.workflow_id", workflow.WorkflowID) + if err != nil { + return nil, err + } + + if strings.ToLower(workflowManifest["kind"].(string)) == "cronworkflow" { + newWorkflowManifest, _ = sjson.Set(workflow.WorkflowManifest, "spec.workflowMetadata.labels.workflow_id", workflow.WorkflowID) + } + + query := bson.D{{"workflow_id", workflow.WorkflowID}} + update := bson.D{{"$set", bson.D{{"workflow_manifest", newWorkflowManifest}, {"cronSyntax", workflow.CronSyntax}, {"Workflow_name", workflow.WorkflowName}, {"Workflow_description", workflow.WorkflowDescription}, {"isCustomWorkflow", workflow.IsCustomWorkflow}, {"Weightages", newWeightages}, {"updated_at", strconv.FormatInt(time.Now().Unix(), 10)}}}} + + err = database.UpdateChaosWorkflow(query, update) if err != nil { return nil, err } subscriptions.SendRequestToSubscriber(graphql.SubscriberRequests{ - K8sManifest: workflow.WorkflowManifest, + K8sManifest: newWorkflowManifest, RequestType: "update", ProjectID: workflow.ProjectID, ClusterID: workflow.ClusterID,