task inputs

main
alex 2023-05-14 14:57:07 +02:00
parent 2ebeeb20ad
commit f252c76c46
4 changed files with 64 additions and 43 deletions

View File

@ -84,14 +84,14 @@ const (
) )
type RunGroupTaskArgs struct { type RunGroupTaskArgs struct {
StartType uint8 StartType uint8
GroupTaskId string GroupTaskId string
Category string Category string
GroupId string GroupId string
Step uint8 Step uint8
TaskStepId string TaskStepId string
GlobalInputs string GlobalInputs string
TaskParameters string TaskInputs string
} }
type InputParameters struct { type InputParameters struct {
@ -106,6 +106,7 @@ func RunGroupTask(args RunGroupTaskArgs) {
GroupTasksId: args.GroupTaskId, GroupTasksId: args.GroupTaskId,
Step: args.Step, Step: args.Step,
Status: structs.GroupTasksStatusRunning, Status: structs.GroupTasksStatusRunning,
Inputs: args.TaskInputs,
StartedAt: time.Now(), StartedAt: time.Now(),
} }
@ -146,7 +147,7 @@ func RunGroupTask(args RunGroupTaskArgs) {
// task parameters // task parameters
commandArgs := []string{root + categoryGroup.Id + "/" + categoryGroup.Tasks[args.Step-1].ScriptPath} 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{ updateGroupTask(groupTaskStep.GroupTasksId, structs.GroupTasks{
Status: structs.GroupTasksStatusInputRequired, Status: structs.GroupTasksStatusInputRequired,
}) })
@ -155,15 +156,14 @@ func RunGroupTask(args RunGroupTaskArgs) {
updateGroupTaskSteps(groupTaskStep) updateGroupTaskSteps(groupTaskStep)
return return
} else { } else if len(args.TaskInputs) > 0 {
var taskParameterInputs []InputParameters 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()) log.Error().Msgf("err unmarshalling task parameter inputs %s", err.Error())
} }
for _, taskParameterInput := range taskParameterInputs { for _, taskParameterInput := range taskParameterInputs {
//commandArgs = append(commandArgs, "--"+taskParameterInput.ParameterName)
commandArgs = append(commandArgs, taskParameterInput.Value) 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 // clear task parameters, because otherwise the next task would have the parameters from the previous task
args.TaskParameters = "" args.TaskInputs = ""
RunGroupTask(args) RunGroupTask(args)
} }

View File

@ -34,6 +34,7 @@ type GroupTaskSteps struct {
Step uint8 Step uint8
Status uint8 Status uint8
Log string `gorm:"type:text"` Log string `gorm:"type:text"`
Inputs string `gorm:"type:json"`
StartedAt time.Time StartedAt time.Time
EndedAt time.Time EndedAt time.Time
} }
@ -64,7 +65,7 @@ type Task struct {
OnFinish string `json:"onFinish"` OnFinish string `json:"onFinish"`
UndoPossible bool `json:"undoPossible"` UndoPossible bool `json:"undoPossible"`
ScriptPath string `json:"scriptPath"` ScriptPath string `json:"scriptPath"`
Parameters []TaskParameter `json:"parameters"` Parameters []TaskParameter `json:"parameters"` // same as task inputs
Feedback string `json:"feedback"` Feedback string `json:"feedback"`
} }

View File

@ -1,7 +1,27 @@
package utils 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 { func GetXAuhorizationHeader(c *fiber.Ctx) string {
return c.GetReqHeaders()[HeaderXAuthorization] 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)
}

View File

@ -76,20 +76,22 @@ func RunHub() {
category := receivedMessage.Body["category"].(string) category := receivedMessage.Body["category"].(string)
groupId := receivedMessage.Body["id"].(string) groupId := receivedMessage.Body["id"].(string)
globalInputs := receivedMessage.Body["globalInputs"]
var globalInputsJsonString string /*
var globalInputsJsonString string
if globalInputs != nil { if globalInputs != nil {
jsonString, err := json.Marshal(globalInputs) jsonString, err := json.Marshal(globalInputs)
if err != nil { if err != nil {
log.Error().Msgf("Failed to marshal global inputs %s", err) log.Error().Msgf("Failed to marshal global inputs %s", err)
continue continue
} }
globalInputsJsonString = string(jsonString) globalInputsJsonString = string(jsonString)
} } */
globalInputsJsonString := utils.MarshalJson(receivedMessage.Body["globalInputs"])
groupTaskId := uuid.New().String() groupTaskId := uuid.New().String()
@ -134,29 +136,27 @@ func RunHub() {
}) })
break break
case utils.ReceivedCmdTaskContinueTaskStep: case utils.ReceivedCmdTaskContinueTaskStep:
taskInputs := receivedMessage.Body["taskInputs"] /*
var taskInputsJsonString string if taskInputs != nil {
jsonString, err := json.Marshal(taskInputs)
if taskInputs != nil { if err != nil {
jsonString, err := json.Marshal(taskInputs) log.Error().Msgf("Failed to marshal task inputs %s", err)
continue
}
if err != nil { taskInputsJsonString = string(jsonString)
log.Error().Msgf("Failed to marshal task inputs %s", err) } */
continue
}
taskInputsJsonString = string(jsonString)
}
go grouptasks.RunGroupTask(grouptasks.RunGroupTaskArgs{ go grouptasks.RunGroupTask(grouptasks.RunGroupTaskArgs{
StartType: grouptasks.RunGroupTaskStartTypeTryAgain, StartType: grouptasks.RunGroupTaskStartTypeTryAgain,
GroupTaskId: receivedMessage.Body["groupTaskId"].(string), GroupTaskId: receivedMessage.Body["groupTaskId"].(string),
Category: receivedMessage.Body["category"].(string), Category: receivedMessage.Body["category"].(string),
GroupId: receivedMessage.Body["groupId"].(string), GroupId: receivedMessage.Body["groupId"].(string),
Step: uint8(receivedMessage.Body["step"].(float64)), Step: uint8(receivedMessage.Body["step"].(float64)),
TaskStepId: receivedMessage.Body["taskStepId"].(string), TaskStepId: receivedMessage.Body["taskStepId"].(string),
TaskParameters: taskInputsJsonString, TaskInputs: utils.MarshalJson(receivedMessage.Body["taskInputs"]),
}) })
break break