Manager: perform variable replacement on scheduled tasks

This commit is contained in:
Sybren A. Stüvel 2022-02-21 19:58:13 +01:00
parent 8cc9956bb0
commit d198e228b7
3 changed files with 12 additions and 8 deletions

View File

@ -25,6 +25,7 @@ import (
"gitlab.com/blender/flamenco-ng-poc/internal/manager/config" "gitlab.com/blender/flamenco-ng-poc/internal/manager/config"
"gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence" "gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence"
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
) )
var stringType = reflect.TypeOf("somestring") var stringType = reflect.TypeOf("somestring")
@ -34,7 +35,7 @@ type VariableReplacer interface {
} }
// replaceTaskVariables performs variable replacement for worker tasks. // replaceTaskVariables performs variable replacement for worker tasks.
func replaceTaskVariables(replacer VariableReplacer, task persistence.Task, worker persistence.Worker) persistence.Task { func replaceTaskVariables(replacer VariableReplacer, task api.AssignedTask, worker persistence.Worker) api.AssignedTask {
repl := func(value string) string { repl := func(value string) string {
return replacer.ExpandVariables(value, "workers", worker.Platform) return replacer.ExpandVariables(value, "workers", worker.Platform)
} }

View File

@ -26,18 +26,19 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"gitlab.com/blender/flamenco-ng-poc/internal/manager/config" "gitlab.com/blender/flamenco-ng-poc/internal/manager/config"
"gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence" "gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence"
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
) )
func varreplTestTask() persistence.Task { func varreplTestTask() api.AssignedTask {
return persistence.Task{ return api.AssignedTask{
Commands: []persistence.Command{ Commands: []api.Command{
{Name: "echo", Parameters: persistence.StringInterfaceMap{ {Name: "echo", Parameters: map[string]interface{}{
"message": "Running Blender from {blender} {blender}"}}, "message": "Running Blender from {blender} {blender}"}},
{Name: "sleep", Parameters: persistence.StringInterfaceMap{ {Name: "sleep", Parameters: map[string]interface{}{
"{blender}": 3}}, "{blender}": 3}},
{ {
Name: "blender_render", Name: "blender_render",
Parameters: persistence.StringInterfaceMap{ Parameters: map[string]interface{}{
"filepath": "{job_storage}/sybren/2017-06-08-181223.625800-sybren-flamenco-test.flamenco/flamenco-test.flamenco.blend", "filepath": "{job_storage}/sybren/2017-06-08-181223.625800-sybren-flamenco-test.flamenco/flamenco-test.flamenco.blend",
"exe": "{blender}", "exe": "{blender}",
"otherpath": "{hey}/haha", "otherpath": "{hey}/haha",

View File

@ -272,5 +272,7 @@ func (f *Flamenco) ScheduleTask(e echo.Context) error {
TaskType: dbTask.Type, TaskType: dbTask.Type,
} }
return e.JSON(http.StatusOK, apiTask) // Perform variable replacement before sending to the Worker.
customisedTask := replaceTaskVariables(f.config, apiTask, *worker)
return e.JSON(http.StatusOK, customisedTask)
} }