@@ -11,6 +11,7 @@ import (
1111 "github.com/ovh/venom"
1212 "github.com/sguiheux/go-coverage"
1313
14+ "github.com/ovh/cds/engine/api/authentication"
1415 "github.com/ovh/cds/engine/api/cache"
1516 "github.com/ovh/cds/engine/api/event"
1617 "github.com/ovh/cds/engine/api/group"
@@ -39,6 +40,21 @@ func (api *API) postTakeWorkflowJobHandler() service.Handler {
3940 return sdk .WithStack (sdk .ErrForbidden )
4041 }
4142
43+ consumer := getAPIConsumer (ctx )
44+ // Locking for the parent consumer
45+ var hatcheryName string
46+ if consumer .ParentID != nil {
47+ parentConsumer , err := authentication .LoadConsumerByID (ctx , api .mustDB (), * consumer .ParentID )
48+ if err != nil {
49+ return err
50+ }
51+ s , err := services .LoadByConsumerID (ctx , api .mustDB (), parentConsumer .ID )
52+ if err != nil {
53+ return err
54+ }
55+ hatcheryName = s .Name
56+ }
57+
4258 wk , err := worker .LoadByID (ctx , api .mustDB (), getAPIConsumer (ctx ).Worker .ID )
4359 if err != nil {
4460 return err
@@ -77,7 +93,7 @@ func (api *API) postTakeWorkflowJobHandler() service.Handler {
7793 }
7894
7995 pbji := & sdk.WorkflowNodeJobRunData {}
80- report , err := takeJob (ctx , api .mustDB , api .Cache , p , id , workerModelName , pbji , wk )
96+ report , err := takeJob (ctx , api .mustDB , api .Cache , p , id , workerModelName , pbji , wk , hatcheryName )
8197 if err != nil {
8298 return sdk .WrapError (err , "cannot takeJob nodeJobRunID:%d" , id )
8399 }
@@ -89,7 +105,7 @@ func (api *API) postTakeWorkflowJobHandler() service.Handler {
89105 }
90106}
91107
92- func takeJob (ctx context.Context , dbFunc func () * gorp.DbMap , store cache.Store , p * sdk.Project , id int64 , workerModel string , wnjri * sdk.WorkflowNodeJobRunData , wk * sdk.Worker ) (* workflow.ProcessorReport , error ) {
108+ func takeJob (ctx context.Context , dbFunc func () * gorp.DbMap , store cache.Store , p * sdk.Project , id int64 , workerModel string , wnjri * sdk.WorkflowNodeJobRunData , wk * sdk.Worker , hatcheryName string ) (* workflow.ProcessorReport , error ) {
93109 // Start a tx
94110 tx , errBegin := dbFunc ().Begin ()
95111 if errBegin != nil {
@@ -110,7 +126,7 @@ func takeJob(ctx context.Context, dbFunc func() *gorp.DbMap, store cache.Store,
110126 }
111127
112128 // Take node job run
113- job , report , err := workflow .TakeNodeJobRun (ctx , tx , store , * p , id , workerModel , wk .Name , wk .ID , infos )
129+ job , report , err := workflow .TakeNodeJobRun (ctx , tx , store , * p , id , workerModel , wk .Name , wk .ID , infos , hatcheryName )
114130 if err != nil {
115131 return nil , sdk .WrapError (err , "cannot take job %d" , id )
116132 }
0 commit comments