From f252c76c46871e0bc2c280bc359dcb0bb4368c07 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 14 May 2023 14:57:07 +0200 Subject: [PATCH] task inputs --- grouptasks/grouptasks.go | 26 ++++++++-------- modules/structs/grouptasks.go | 3 +- modules/utils/utils.go | 22 +++++++++++++- socketserver/hub.go | 56 +++++++++++++++++------------------ 4 files changed, 64 insertions(+), 43 deletions(-) diff --git a/grouptasks/grouptasks.go b/grouptasks/grouptasks.go index 3229080..97f1903 100644 --- a/grouptasks/grouptasks.go +++ b/grouptasks/grouptasks.go @@ -84,14 +84,14 @@ const ( ) type RunGroupTaskArgs struct { - StartType uint8 - GroupTaskId string - Category string - GroupId string - Step uint8 - TaskStepId string - GlobalInputs string - TaskParameters string + StartType uint8 + GroupTaskId string + Category string + GroupId string + Step uint8 + TaskStepId string + GlobalInputs string + TaskInputs string } type InputParameters struct { @@ -106,6 +106,7 @@ func RunGroupTask(args RunGroupTaskArgs) { GroupTasksId: args.GroupTaskId, Step: args.Step, Status: structs.GroupTasksStatusRunning, + Inputs: args.TaskInputs, StartedAt: time.Now(), } @@ -146,7 +147,7 @@ func RunGroupTask(args RunGroupTaskArgs) { // task parameters commandArgs := []string{root + categoryGroup.Id + "/" + categoryGroup.Tasks[args.Step-1].ScriptPath} - if len(categoryGroup.Tasks[args.Step-1].Parameters) != 0 && len(args.TaskParameters) == 0 { + if len(categoryGroup.Tasks[args.Step-1].Parameters) != 0 && len(args.TaskInputs) == 0 { updateGroupTask(groupTaskStep.GroupTasksId, structs.GroupTasks{ Status: structs.GroupTasksStatusInputRequired, }) @@ -155,15 +156,14 @@ func RunGroupTask(args RunGroupTaskArgs) { updateGroupTaskSteps(groupTaskStep) return - } else { + } else if len(args.TaskInputs) > 0 { var taskParameterInputs []InputParameters - if err := json.Unmarshal([]byte(args.TaskParameters), &taskParameterInputs); err != nil { + if err := json.Unmarshal([]byte(args.TaskInputs), &taskParameterInputs); err != nil { log.Error().Msgf("err unmarshalling task parameter inputs %s", err.Error()) } for _, taskParameterInput := range taskParameterInputs { - //commandArgs = append(commandArgs, "--"+taskParameterInput.ParameterName) commandArgs = append(commandArgs, taskParameterInput.Value) } } @@ -208,7 +208,7 @@ func RunGroupTask(args RunGroupTaskArgs) { }) // clear task parameters, because otherwise the next task would have the parameters from the previous task - args.TaskParameters = "" + args.TaskInputs = "" RunGroupTask(args) } diff --git a/modules/structs/grouptasks.go b/modules/structs/grouptasks.go index ea17e7c..226fa03 100644 --- a/modules/structs/grouptasks.go +++ b/modules/structs/grouptasks.go @@ -34,6 +34,7 @@ type GroupTaskSteps struct { Step uint8 Status uint8 Log string `gorm:"type:text"` + Inputs string `gorm:"type:json"` StartedAt time.Time EndedAt time.Time } @@ -64,7 +65,7 @@ type Task struct { OnFinish string `json:"onFinish"` UndoPossible bool `json:"undoPossible"` ScriptPath string `json:"scriptPath"` - Parameters []TaskParameter `json:"parameters"` + Parameters []TaskParameter `json:"parameters"` // same as task inputs Feedback string `json:"feedback"` } diff --git a/modules/utils/utils.go b/modules/utils/utils.go index 5bce609..1075e02 100644 --- a/modules/utils/utils.go +++ b/modules/utils/utils.go @@ -1,7 +1,27 @@ package utils -import "github.com/gofiber/fiber/v2" +import ( + "encoding/json" + + "github.com/gofiber/fiber/v2" + "github.com/rs/zerolog/log" +) func GetXAuhorizationHeader(c *fiber.Ctx) string { return c.GetReqHeaders()[HeaderXAuthorization] } + +func MarshalJson(v any) string { + log.Debug().Msgf("MarshalJson input %s", v) + + json, err := json.Marshal(v) + + if err != nil { + log.Error().Msgf("Failed to marshal json %s", err) + return "" + } + + log.Debug().Msgf("Marshal json %s", json) + + return string(json) +} diff --git a/socketserver/hub.go b/socketserver/hub.go index ccfd3e8..1ec6445 100644 --- a/socketserver/hub.go +++ b/socketserver/hub.go @@ -76,20 +76,22 @@ func RunHub() { category := receivedMessage.Body["category"].(string) groupId := receivedMessage.Body["id"].(string) - globalInputs := receivedMessage.Body["globalInputs"] - var globalInputsJsonString string + /* + var globalInputsJsonString string - if globalInputs != nil { - jsonString, err := json.Marshal(globalInputs) + if globalInputs != nil { + jsonString, err := json.Marshal(globalInputs) - if err != nil { - log.Error().Msgf("Failed to marshal global inputs %s", err) - continue - } + if err != nil { + log.Error().Msgf("Failed to marshal global inputs %s", err) + continue + } - globalInputsJsonString = string(jsonString) - } + globalInputsJsonString = string(jsonString) + } */ + + globalInputsJsonString := utils.MarshalJson(receivedMessage.Body["globalInputs"]) groupTaskId := uuid.New().String() @@ -134,29 +136,27 @@ func RunHub() { }) break case utils.ReceivedCmdTaskContinueTaskStep: - taskInputs := receivedMessage.Body["taskInputs"] + /* - var taskInputsJsonString string + if taskInputs != nil { + jsonString, err := json.Marshal(taskInputs) - if taskInputs != nil { - jsonString, err := json.Marshal(taskInputs) + if err != nil { + log.Error().Msgf("Failed to marshal task inputs %s", err) + continue + } - if err != nil { - log.Error().Msgf("Failed to marshal task inputs %s", err) - continue - } - - taskInputsJsonString = string(jsonString) - } + taskInputsJsonString = string(jsonString) + } */ go grouptasks.RunGroupTask(grouptasks.RunGroupTaskArgs{ - StartType: grouptasks.RunGroupTaskStartTypeTryAgain, - GroupTaskId: receivedMessage.Body["groupTaskId"].(string), - Category: receivedMessage.Body["category"].(string), - GroupId: receivedMessage.Body["groupId"].(string), - Step: uint8(receivedMessage.Body["step"].(float64)), - TaskStepId: receivedMessage.Body["taskStepId"].(string), - TaskParameters: taskInputsJsonString, + StartType: grouptasks.RunGroupTaskStartTypeTryAgain, + GroupTaskId: receivedMessage.Body["groupTaskId"].(string), + Category: receivedMessage.Body["category"].(string), + GroupId: receivedMessage.Body["groupId"].(string), + Step: uint8(receivedMessage.Body["step"].(float64)), + TaskStepId: receivedMessage.Body["taskStepId"].(string), + TaskInputs: utils.MarshalJson(receivedMessage.Body["taskInputs"]), }) break