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/persistence"
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
)
var stringType = reflect.TypeOf("somestring")
@ -34,7 +35,7 @@ type VariableReplacer interface {
}
// 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 {
return replacer.ExpandVariables(value, "workers", worker.Platform)
}

View File

@ -26,18 +26,19 @@ import (
"github.com/stretchr/testify/assert"
"gitlab.com/blender/flamenco-ng-poc/internal/manager/config"
"gitlab.com/blender/flamenco-ng-poc/internal/manager/persistence"
"gitlab.com/blender/flamenco-ng-poc/pkg/api"
)
func varreplTestTask() persistence.Task {
return persistence.Task{
Commands: []persistence.Command{
{Name: "echo", Parameters: persistence.StringInterfaceMap{
func varreplTestTask() api.AssignedTask {
return api.AssignedTask{
Commands: []api.Command{
{Name: "echo", Parameters: map[string]interface{}{
"message": "Running Blender from {blender} {blender}"}},
{Name: "sleep", Parameters: persistence.StringInterfaceMap{
{Name: "sleep", Parameters: map[string]interface{}{
"{blender}": 3}},
{
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",
"exe": "{blender}",
"otherpath": "{hey}/haha",

View File

@ -272,5 +272,7 @@ func (f *Flamenco) ScheduleTask(e echo.Context) error {
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)
}