@@ -231,7 +231,7 @@ func (r *Adaptation) UpdatePodSandbox(ctx context.Context, req *UpdatePodSandbox
231231 for _ , plugin := range r .plugins {
232232 _ , err := plugin .updatePodSandbox (ctx , req )
233233 if err != nil {
234- return nil , err
234+ return nil , pluginError ( plugin , err )
235235 }
236236 }
237237
@@ -257,7 +257,7 @@ func (r *Adaptation) RemovePodSandbox(ctx context.Context, evt *StateChangeEvent
257257}
258258
259259// CreateContainer relays the corresponding CRI request to plugins.
260- func (r * Adaptation ) CreateContainer (ctx context.Context , req * CreateContainerRequest ) (* CreateContainerResponse , error ) {
260+ func (r * Adaptation ) CreateContainer (ctx context.Context , req * CreateContainerRequest ) (* CreateContainerResponse , * api. OwningPlugins , error ) {
261261 r .Lock ()
262262 defer r .Unlock ()
263263 defer r .removeClosedPlugins ()
@@ -280,15 +280,20 @@ func (r *Adaptation) CreateContainer(ctx context.Context, req *CreateContainerRe
280280 }
281281 rpl , err := plugin .createContainer (ctx , req )
282282 if err != nil {
283- return nil , err
283+ return nil , nil , pluginError ( plugin , err )
284284 }
285285 err = result .apply (rpl , plugin .name ())
286286 if err != nil {
287- return nil , err
287+ return nil , nil , err
288288 }
289289 }
290290
291- return r .validateContainerAdjustment (ctx , validate , result )
291+ rpl , err := r .validateContainerAdjustment (ctx , validate , result )
292+ if err != nil {
293+ return nil , nil , err
294+ }
295+
296+ return rpl , result .owners , nil
292297}
293298
294299// PostCreateContainer relays the corresponding CRI event to plugins.
@@ -319,7 +324,7 @@ func (r *Adaptation) UpdateContainer(ctx context.Context, req *UpdateContainerRe
319324 for _ , plugin := range r .plugins {
320325 rpl , err := plugin .updateContainer (ctx , req )
321326 if err != nil {
322- return nil , err
327+ return nil , pluginError ( plugin , err )
323328 }
324329 err = result .apply (rpl , plugin .name ())
325330 if err != nil {
@@ -346,7 +351,7 @@ func (r *Adaptation) StopContainer(ctx context.Context, req *StopContainerReques
346351 for _ , plugin := range r .plugins {
347352 rpl , err := plugin .stopContainer (ctx , req )
348353 if err != nil {
349- return nil , err
354+ return nil , pluginError ( plugin , err )
350355 }
351356 err = result .apply (rpl , plugin .name ())
352357 if err != nil {
@@ -376,7 +381,7 @@ func (r *Adaptation) StateChange(ctx context.Context, evt *StateChangeEvent) err
376381 for _ , plugin := range r .plugins {
377382 err := plugin .StateChange (ctx , evt )
378383 if err != nil {
379- return err
384+ return pluginError ( plugin , err )
380385 }
381386 }
382387
@@ -720,3 +725,10 @@ func (b *PluginSyncBlock) Unblock() {
720725 b .r = nil
721726 }
722727}
728+
729+ func pluginError (plugin * plugin , err error ) error {
730+ if err == nil {
731+ return nil
732+ }
733+ return fmt .Errorf ("plugin %q: %w" , plugin .name (), err )
734+ }
0 commit comments