Skip to content

Commit 0af84af

Browse files
committed
fix: store default user message
Signed-off-by: Yvonnick Esnault <yvonnick.esnault@corp.ovh.com>
1 parent 110623c commit 0af84af

File tree

10 files changed

+71
-42
lines changed

10 files changed

+71
-42
lines changed

engine/api/workflow/execute_node_job_run.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,10 @@ func PrepareSpawnInfos(infos []sdk.SpawnInfo) []sdk.SpawnInfo {
236236
prepared := []sdk.SpawnInfo{}
237237
for _, info := range infos {
238238
prepared = append(prepared, sdk.SpawnInfo{
239-
APITime: now,
240-
RemoteTime: info.RemoteTime,
241-
Message: info.Message,
239+
APITime: now,
240+
RemoteTime: info.RemoteTime,
241+
Message: info.Message,
242+
UserMessage: info.Message.DefaultUserMessage(),
242243
})
243244
}
244245
return prepared

engine/api/workflow/execute_node_run.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -529,16 +529,19 @@ jobLoop:
529529
}
530530
msg.Args = []interface{}{sdk.Cause(e).Error()}
531531
wjob.SpawnInfos = append(wjob.SpawnInfos, sdk.SpawnInfo{
532-
APITime: time.Now(),
533-
Message: msg,
534-
RemoteTime: time.Now(),
532+
APITime: time.Now(),
533+
Message: msg,
534+
RemoteTime: time.Now(),
535+
UserMessage: msg.DefaultUserMessage(),
535536
})
536537
}
537538
} else {
539+
sp := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobInQueue.ID}
538540
wjob.SpawnInfos = []sdk.SpawnInfo{{
539-
APITime: time.Now(),
540-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobInQueue.ID},
541-
RemoteTime: time.Now(),
541+
APITime: time.Now(),
542+
Message: sp,
543+
RemoteTime: time.Now(),
544+
UserMessage: sp.DefaultUserMessage(),
542545
}}
543546
}
544547

engine/api/workflow/process.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,11 @@ func checkCondition(ctx context.Context, wr *sdk.WorkflowRun, conditions sdk.Wor
7777
func AddWorkflowRunInfo(run *sdk.WorkflowRun, infos ...sdk.SpawnMsg) {
7878
for _, i := range infos {
7979
run.Infos = append(run.Infos, sdk.WorkflowRunInfo{
80-
APITime: time.Now(),
81-
Message: i,
82-
Type: i.Type,
83-
SubNumber: run.LastSubNumber,
80+
APITime: time.Now(),
81+
Message: i,
82+
Type: i.Type,
83+
SubNumber: run.LastSubNumber,
84+
UserMessage: i.DefaultUserMessage(),
8485
})
8586
}
8687
}

engine/api/workflow/run_workflow_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -589,14 +589,14 @@ queueRun:
589589
t.FailNow()
590590
}
591591

592+
sp := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoHatcheryStarts.ID}
592593
//AddSpawnInfosNodeJobRun
593594
err := workflow.AddSpawnInfosNodeJobRun(db, j.WorkflowNodeRunID, j.ID, []sdk.SpawnInfo{
594595
{
595-
APITime: time.Now(),
596-
RemoteTime: time.Now(),
597-
Message: sdk.SpawnMsg{
598-
ID: sdk.MsgSpawnInfoHatcheryStarts.ID,
599-
},
596+
APITime: time.Now(),
597+
RemoteTime: time.Now(),
598+
Message: sp,
599+
UserMessage: sp.DefaultUserMessage(),
600600
},
601601
})
602602
assert.NoError(t, err)
@@ -605,15 +605,15 @@ queueRun:
605605
t.FailNow()
606606
}
607607

608+
sp = sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobTaken.ID}
608609
//TakeNodeJobRun
609610
takenJobID := j.ID
610611
takenJob, _, _ := workflow.TakeNodeJobRun(context.TODO(), db, cache, *proj, takenJobID, "model", "worker", "1", []sdk.SpawnInfo{
611612
{
612-
APITime: time.Now(),
613-
RemoteTime: time.Now(),
614-
Message: sdk.SpawnMsg{
615-
ID: sdk.MsgSpawnInfoJobTaken.ID,
616-
},
613+
APITime: time.Now(),
614+
RemoteTime: time.Now(),
615+
Message: sp,
616+
UserMessage: sp.DefaultUserMessage(),
617617
},
618618
}, "hatchery_name")
619619

engine/api/workflow_queue.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,18 @@ func takeJob(ctx context.Context, dbFunc func() *gorp.DbMap, store cache.Store,
123123
defer tx.Rollback() // nolint
124124

125125
//Prepare spawn infos
126+
m1 := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobTaken.ID, Args: []interface{}{fmt.Sprintf("%d", id), wk.Name}}
127+
m2 := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobTakenWorkerVersion.ID, Args: []interface{}{wk.Name, wk.Version, wk.OS, wk.Arch}}
126128
infos := []sdk.SpawnInfo{
127129
{
128-
RemoteTime: getRemoteTime(ctx),
129-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobTaken.ID, Args: []interface{}{fmt.Sprintf("%d", id), wk.Name}},
130+
RemoteTime: getRemoteTime(ctx),
131+
Message: m1,
132+
UserMessage: m1.DefaultUserMessage(),
130133
},
131134
{
132-
RemoteTime: getRemoteTime(ctx),
133-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoJobTakenWorkerVersion.ID, Args: []interface{}{wk.Name, wk.Version, wk.OS, wk.Arch}},
135+
RemoteTime: getRemoteTime(ctx),
136+
Message: m2,
137+
UserMessage: m2.DefaultUserMessage(),
134138
},
135139
}
136140

@@ -444,9 +448,11 @@ func postJobResult(ctx context.Context, dbFunc func(context.Context) *gorp.DbMap
444448
observability.Tag(observability.TagWorkflowNodeRun, job.WorkflowNodeRunID),
445449
observability.Tag(observability.TagJob, job.Job.Action.Name))
446450

451+
msg := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerEnd.ID, Args: []interface{}{wr.Name, res.Duration}}
447452
infos := []sdk.SpawnInfo{{
448-
RemoteTime: res.RemoteTime,
449-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerEnd.ID, Args: []interface{}{wr.Name, res.Duration}},
453+
RemoteTime: res.RemoteTime,
454+
Message: msg,
455+
UserMessage: msg.DefaultUserMessage(),
450456
}}
451457

452458
if err := workflow.AddSpawnInfosNodeJobRun(tx, job.WorkflowNodeRunID, job.ID, workflow.PrepareSpawnInfos(infos)); err != nil {

engine/api/workflow_run.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,10 @@ func stopWorkflowRun(ctx context.Context, dbFunc func() *gorp.DbMap, store cache
410410
spwnMsg := sdk.SpawnMsg{ID: sdk.MsgWorkflowNodeStop.ID, Args: []interface{}{ident.GetUsername()}, Type: sdk.MsgWorkflowNodeStop.Type}
411411

412412
stopInfos := sdk.SpawnInfo{
413-
APITime: time.Now(),
414-
RemoteTime: time.Now(),
415-
Message: spwnMsg,
413+
APITime: time.Now(),
414+
RemoteTime: time.Now(),
415+
Message: spwnMsg,
416+
UserMessage: spwnMsg.DefaultUserMessage(),
416417
}
417418

418419
workflow.AddWorkflowRunInfo(run, spwnMsg)
@@ -685,10 +686,12 @@ func (api *API) stopWorkflowNodeRunHandler() service.Handler {
685686
return sdk.WrapError(err, "unable to load workflow node run with id %d for workflow %s and run with number %d", workflowNodeRunID, workflowName, workflowRun.Number)
686687
}
687688

689+
sp := sdk.SpawnMsg{ID: sdk.MsgWorkflowNodeStop.ID, Args: []interface{}{getAPIConsumer(ctx).GetUsername()}}
688690
report, err := workflow.StopWorkflowNodeRun(ctx, api.mustDB, api.Cache, *p, *workflowRun, *workflowNodeRun, sdk.SpawnInfo{
689-
APITime: time.Now(),
690-
RemoteTime: time.Now(),
691-
Message: sdk.SpawnMsg{ID: sdk.MsgWorkflowNodeStop.ID, Args: []interface{}{getAPIConsumer(ctx).GetUsername()}},
691+
APITime: time.Now(),
692+
RemoteTime: time.Now(),
693+
Message: sp,
694+
UserMessage: sp.DefaultUserMessage(),
692695
})
693696
if err != nil {
694697
return sdk.WrapError(err, "unable to stop workflow node run")

engine/worker/internal/start.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,11 @@ func processBookedWJob(ctx context.Context, w *CurrentWorker, wjobs chan<- sdk.W
152152
for _, r := range errRequirements {
153153
details += fmt.Sprintf(" %s(%s)", r.Value, r.Type)
154154
}
155+
sp := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerForJobError.ID, Args: []interface{}{w.Name(), details}}
155156
infos := []sdk.SpawnInfo{{
156-
RemoteTime: time.Now(),
157-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerForJobError.ID, Args: []interface{}{w.Name(), details}},
157+
RemoteTime: time.Now(),
158+
Message: sp,
159+
UserMessage: sp.DefaultUserMessage(),
158160
}}
159161
if err := w.Client().QueueJobSendSpawnInfo(ctx, wjob.ID, infos); err != nil {
160162
return sdk.WrapError(err, "Cannot record QueueJobSendSpawnInfo for job (err spawn): %d", wjob.ID)
@@ -166,9 +168,11 @@ func processBookedWJob(ctx context.Context, w *CurrentWorker, wjobs chan<- sdk.W
166168
if !pluginsOK {
167169
var details = errPlugins.Error()
168170

171+
sp := sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerForJobError.ID, Args: []interface{}{w.Name(), details}}
169172
infos := []sdk.SpawnInfo{{
170-
RemoteTime: time.Now(),
171-
Message: sdk.SpawnMsg{ID: sdk.MsgSpawnInfoWorkerForJobError.ID, Args: []interface{}{w.Name(), details}},
173+
RemoteTime: time.Now(),
174+
Message: sp,
175+
UserMessage: sp.DefaultUserMessage(),
172176
}}
173177
if err := w.Client().QueueJobSendSpawnInfo(ctx, wjob.ID, infos); err != nil {
174178
return sdk.WrapError(err, "Cannot record QueueJobSendSpawnInfo for job (err spawn): %d", wjob.ID)

engine/worker/internal/take.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,11 @@ func (w *CurrentWorker) Take(ctx context.Context, job sdk.WorkflowNodeJobRun) er
118118

119119
// Send the reason as a spawninfo
120120
if res.Status != sdk.StatusSuccess && res.Reason != "" {
121+
sp := sdk.SpawnMsg{ID: sdk.MsgWorkflowError.ID, Args: []interface{}{res.Reason}}
121122
infos := []sdk.SpawnInfo{{
122-
RemoteTime: time.Now(),
123-
Message: sdk.SpawnMsg{ID: sdk.MsgWorkflowError.ID, Args: []interface{}{res.Reason}},
123+
RemoteTime: time.Now(),
124+
Message: sp,
125+
UserMessage: sp.DefaultUserMessage(),
124126
}}
125127
if err := w.Client().QueueJobSendSpawnInfo(ctx, job.ID, infos); err != nil {
126128
log.Error(ctx, "processJob> Unable to send spawn info: %v", err)

sdk/build.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package sdk
22

33
import (
4+
"fmt"
45
"time"
56
)
67

@@ -20,6 +21,14 @@ type SpawnMsg struct {
2021
Type string `json:"type" db:"-"`
2122
}
2223

24+
func (s SpawnMsg) DefaultUserMessage() string {
25+
if _, ok := Messages[s.ID]; ok {
26+
m := Messages[s.ID]
27+
return fmt.Sprintf(m.Format[EN], s.Args...)
28+
}
29+
return ""
30+
}
31+
2332
// ExecutedJob represents a running job
2433
type ExecutedJob struct {
2534
Job

sdk/hatchery/hatchery.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ func SendSpawnInfo(ctx context.Context, h Interface, jobID int64, spawnMsg sdk.S
431431
if h.CDSClient() == nil || jobID == 0 {
432432
return
433433
}
434-
infos := []sdk.SpawnInfo{{RemoteTime: time.Now(), Message: spawnMsg}}
434+
infos := []sdk.SpawnInfo{{RemoteTime: time.Now(), Message: spawnMsg, UserMessage: spawnMsg.DefaultUserMessage()}}
435435
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
436436
defer cancel()
437437
if err := h.CDSClient().QueueJobSendSpawnInfo(ctx, jobID, infos); err != nil {

0 commit comments

Comments
 (0)