Unified Command field names

Some parts of Flamenco had a Command consist of "name + settings", and
other parts used "type + parameters" (with the same semantics). This is
now unified to "name + parameters".
This commit is contained in:
Sybren A. Stüvel 2022-02-21 18:03:51 +01:00
parent 6a7545f334
commit ef2bbd2845
12 changed files with 83 additions and 83 deletions

@ -256,8 +256,8 @@ func (f *Flamenco) ScheduleTask(e echo.Context) error {
apiCommands := []api.Command{} apiCommands := []api.Command{}
for _, cmd := range dbTask.Commands { for _, cmd := range dbTask.Commands {
apiCommands = append(apiCommands, api.Command{ apiCommands = append(apiCommands, api.Command{
Name: cmd.Type, Name: cmd.Name,
Settings: cmd.Parameters, Parameters: cmd.Parameters,
}) })
} }
apiTask := api.AssignedTask{ apiTask := api.AssignedTask{

@ -70,7 +70,7 @@ type AuthoredTask struct {
} }
type AuthoredCommand struct { type AuthoredCommand struct {
Type string Name string
Parameters AuthoredCommandParameters Parameters AuthoredCommandParameters
} }
type AuthoredCommandParameters map[string]interface{} type AuthoredCommandParameters map[string]interface{}
@ -96,8 +96,8 @@ func (a *Author) Task(name string, taskType string) (*AuthoredTask, error) {
return &at, nil return &at, nil
} }
func (a *Author) Command(cmdType string, parameters AuthoredCommandParameters) (*AuthoredCommand, error) { func (a *Author) Command(cmdName string, parameters AuthoredCommandParameters) (*AuthoredCommand, error) {
ac := AuthoredCommand{cmdType, parameters} ac := AuthoredCommand{cmdName, parameters}
return &ac, nil return &ac, nil
} }

@ -112,7 +112,7 @@ func TestSimpleBlenderRenderHappy(t *testing.T) {
assert.NotEmpty(t, t0.UUID) assert.NotEmpty(t, t0.UUID)
assert.Equal(t, "render-1-3", t0.Name) assert.Equal(t, "render-1-3", t0.Name)
assert.Equal(t, 1, len(t0.Commands)) assert.Equal(t, 1, len(t0.Commands))
assert.Equal(t, "blender-render", t0.Commands[0].Type) assert.Equal(t, "blender-render", t0.Commands[0].Name)
assert.EqualValues(t, AuthoredCommandParameters{ assert.EqualValues(t, AuthoredCommandParameters{
"exe": "{blender}", "exe": "{blender}",
"blendfile": settings["filepath"].(string), "blendfile": settings["filepath"].(string),
@ -124,7 +124,7 @@ func TestSimpleBlenderRenderHappy(t *testing.T) {
assert.NotEmpty(t, tVideo.UUID) assert.NotEmpty(t, tVideo.UUID)
assert.Equal(t, "create-video", tVideo.Name) assert.Equal(t, "create-video", tVideo.Name)
assert.Equal(t, 1, len(tVideo.Commands)) assert.Equal(t, 1, len(tVideo.Commands))
assert.Equal(t, "create-video", tVideo.Commands[0].Type) assert.Equal(t, "create-video", tVideo.Commands[0].Name)
assert.EqualValues(t, AuthoredCommandParameters{ assert.EqualValues(t, AuthoredCommandParameters{
"input_files": "/render/sprites/farm_output/promo/square_ellie/square_ellie.lighting_light_breakdown2__intermediate-2006-01-02_090405/*.png", "input_files": "/render/sprites/farm_output/promo/square_ellie/square_ellie.lighting_light_breakdown2__intermediate-2006-01-02_090405/*.png",
"output_file": "/render/sprites/farm_output/promo/square_ellie/square_ellie.lighting_light_breakdown2__intermediate-2006-01-02_090405/scene123-1-10.mp4", "output_file": "/render/sprites/farm_output/promo/square_ellie/square_ellie.lighting_light_breakdown2__intermediate-2006-01-02_090405/scene123-1-10.mp4",

@ -73,7 +73,7 @@ type Task struct {
type Commands []Command type Commands []Command
type Command struct { type Command struct {
Type string `json:"type"` Name string `json:"name"`
Parameters StringInterfaceMap `json:"parameters"` Parameters StringInterfaceMap `json:"parameters"`
} }
@ -119,7 +119,7 @@ func (db *DB) StoreAuthoredJob(ctx context.Context, authoredJob job_compilers.Au
UUID: authoredJob.JobID, UUID: authoredJob.JobID,
Name: authoredJob.Name, Name: authoredJob.Name,
JobType: authoredJob.JobType, JobType: authoredJob.JobType,
Status: string(api.JobStatusUnderConstruction), Status: string(authoredJob.Status),
Priority: authoredJob.Priority, Priority: authoredJob.Priority,
Settings: StringInterfaceMap(authoredJob.Settings), Settings: StringInterfaceMap(authoredJob.Settings),
Metadata: StringStringMap(authoredJob.Metadata), Metadata: StringStringMap(authoredJob.Metadata),
@ -134,7 +134,7 @@ func (db *DB) StoreAuthoredJob(ctx context.Context, authoredJob job_compilers.Au
var commands []Command var commands []Command
for _, authoredCommand := range authoredTask.Commands { for _, authoredCommand := range authoredTask.Commands {
commands = append(commands, Command{ commands = append(commands, Command{
Type: authoredCommand.Type, Name: authoredCommand.Name,
Parameters: StringInterfaceMap(authoredCommand.Parameters), Parameters: StringInterfaceMap(authoredCommand.Parameters),
}) })
} }

@ -43,7 +43,7 @@ func TestStoreAuthoredJob(t *testing.T) {
UUID: "db1f5481-4ef5-4084-8571-8460c547ecaa", UUID: "db1f5481-4ef5-4084-8571-8460c547ecaa",
Commands: []job_compilers.AuthoredCommand{ Commands: []job_compilers.AuthoredCommand{
{ {
Type: "blender-render", Name: "blender-render",
Parameters: job_compilers.AuthoredCommandParameters{ Parameters: job_compilers.AuthoredCommandParameters{
"exe": "{blender}", "exe": "{blender}",
"blendfile": "/path/to/file.blend", "blendfile": "/path/to/file.blend",
@ -67,7 +67,7 @@ func TestStoreAuthoredJob(t *testing.T) {
UUID: "4915fb05-72f5-463e-a2f4-7efdb2584a1e", UUID: "4915fb05-72f5-463e-a2f4-7efdb2584a1e",
Commands: []job_compilers.AuthoredCommand{ Commands: []job_compilers.AuthoredCommand{
{ {
Type: "merge-frames-to-video", Name: "merge-frames-to-video",
Parameters: job_compilers.AuthoredCommandParameters{ Parameters: job_compilers.AuthoredCommandParameters{
"images": "/path/to/output/######.png", "images": "/path/to/output/######.png",
"output": "/path/to/output/preview.mkv", "output": "/path/to/output/preview.mkv",

@ -41,10 +41,10 @@ type BlenderSettings struct {
// cmdBlender executes the "blender-render" command. // cmdBlender executes the "blender-render" command.
func (ce *CommandExecutor) cmdBlenderRender(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error { func (ce *CommandExecutor) cmdBlenderRender(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error {
settings := BlenderSettings{ settings := BlenderSettings{
exe: cmd.Settings["exe"].(string), exe: cmd.Parameters["exe"].(string),
argsBefore: cmd.Settings["argsBefore"].([]string), argsBefore: cmd.Parameters["argsBefore"].([]string),
blendfile: cmd.Settings["blendfile"].(string), blendfile: cmd.Parameters["blendfile"].(string),
args: cmd.Settings["args"].([]string), args: cmd.Parameters["args"].([]string),
} }
if settings.exe == "" { if settings.exe == "" {
logger.Warn().Interface("command", cmd).Msg("missing 'exe' setting") logger.Warn().Interface("command", cmd).Msg("missing 'exe' setting")

@ -78,7 +78,7 @@ func NewCommandExecutor(listener CommandListener, timeService TimeService) *Comm
func (ce *CommandExecutor) Run(ctx context.Context, taskID string, cmd api.Command) error { func (ce *CommandExecutor) Run(ctx context.Context, taskID string, cmd api.Command) error {
logger := log.With().Str("task", string(taskID)).Str("command", cmd.Name).Logger() logger := log.With().Str("task", string(taskID)).Str("command", cmd.Name).Logger()
logger.Info().Interface("settings", cmd.Settings).Msg("running command") logger.Info().Interface("parameters", cmd.Parameters).Msg("running command")
runner, ok := ce.registry[cmd.Name] runner, ok := ce.registry[cmd.Name]
if !ok { if !ok {

@ -35,7 +35,7 @@ import (
// cmdEcho executes the "echo" command. // cmdEcho executes the "echo" command.
func (ce *CommandExecutor) cmdEcho(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error { func (ce *CommandExecutor) cmdEcho(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error {
message, ok := cmd.Settings["message"] message, ok := cmd.Parameters["message"]
if !ok { if !ok {
return fmt.Errorf("missing 'message' setting") return fmt.Errorf("missing 'message' setting")
} }
@ -51,7 +51,7 @@ func (ce *CommandExecutor) cmdEcho(ctx context.Context, logger zerolog.Logger, t
// cmdSleep executes the "sleep" command. // cmdSleep executes the "sleep" command.
func (ce *CommandExecutor) cmdSleep(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error { func (ce *CommandExecutor) cmdSleep(ctx context.Context, logger zerolog.Logger, taskID string, cmd api.Command) error {
sleepTime, ok := cmd.Settings["duration_in_seconds"] sleepTime, ok := cmd.Parameters["duration_in_seconds"]
if !ok { if !ok {
return errors.New("missing setting 'duration_in_seconds'") return errors.New("missing setting 'duration_in_seconds'")
} }

@ -43,8 +43,8 @@ func TestCommandEcho(t *testing.T) {
message := "понављај за мном" message := "понављај за мном"
taskID := "90e9d656-e201-4ef0-b6b0-c80684fafa27" taskID := "90e9d656-e201-4ef0-b6b0-c80684fafa27"
cmd := api.Command{ cmd := api.Command{
Name: "echo", Name: "echo",
Settings: map[string]interface{}{"message": message}, Parameters: map[string]interface{}{"message": message},
} }
listener.EXPECT().LogProduced(gomock.Any(), taskID, "echo: \"понављај за мном\"") listener.EXPECT().LogProduced(gomock.Any(), taskID, "echo: \"понављај за мном\"")
@ -64,8 +64,8 @@ func TestCommandSleep(t *testing.T) {
ctx := context.Background() ctx := context.Background()
taskID := "90e9d656-e201-4ef0-b6b0-c80684fafa27" taskID := "90e9d656-e201-4ef0-b6b0-c80684fafa27"
cmd := api.Command{ cmd := api.Command{
Name: "sleep", Name: "sleep",
Settings: map[string]interface{}{"duration_in_seconds": 47}, Parameters: map[string]interface{}{"duration_in_seconds": 47},
} }
listener.EXPECT().LogProduced(gomock.Any(), taskID, "slept 47s") listener.EXPECT().LogProduced(gomock.Any(), taskID, "slept 47s")

@ -344,8 +344,8 @@ components:
description: Command represents a single command to execute by the Worker. description: Command represents a single command to execute by the Worker.
properties: properties:
name: {type: string} name: {type: string}
settings: {type: object} parameters: {type: object}
required: [name, settings] required: [name, parameters]
AvailableJobTypes: AvailableJobTypes:
type: object type: object

@ -18,62 +18,62 @@ import (
// Base64 encoded, gzipped, json marshaled Swagger object // Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{ var swaggerSpec = []string{
"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",
} }
// GetSwagger returns the content of the embedded swagger specification file // GetSwagger returns the content of the embedded swagger specification file

@ -164,8 +164,8 @@ type AvailableJobTypes struct {
// Command represents a single command to execute by the Worker. // Command represents a single command to execute by the Worker.
type Command struct { type Command struct {
Name string `json:"name"` Name string `json:"name"`
Settings map[string]interface{} `json:"settings"` Parameters map[string]interface{} `json:"parameters"`
} }
// Error defines model for Error. // Error defines model for Error.