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 {
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)
}

View File

@ -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"`
}

View File

@ -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)
}

View File

@ -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