@@ -69,6 +69,7 @@ func New(ctx context.Context, id string, publisher shim.Publisher, cancel func()
6969 s .shimAddress = address
7070 }
7171
72+ s .grouping = getEnableGrouping ()
7273 return s , nil
7374}
7475
@@ -109,6 +110,9 @@ type service struct {
109110 //
110111 // Protected by mu.
111112 ext extension.TaskServiceExt
113+
114+ // grouping indicates if shim grouping is enabled.
115+ grouping bool
112116}
113117
114118var _ shim.Shim = (* service )(nil )
@@ -290,22 +294,37 @@ func (s *service) Cleanup(ctx context.Context) (*taskapi.DeleteResponse, error)
290294func (s * service ) Create (ctx context.Context , r * taskapi.CreateTaskRequest ) (* taskapi.CreateTaskResponse , error ) {
291295 log .L .Debugf ("Create, id: %s, bundle: %q" , r .ID , r .Bundle )
292296
293- // Check if we need to create an extension to intercept calls to the container's shim.
294- if extension .NewExtension != nil {
295- s .mu .Lock ()
296- var err error
297- s .ext , err = extension .NewExtension (ctx , s .main , r )
298- if err != nil {
299- s .mu .Unlock ()
300- return nil , err
297+ s .mu .Lock ()
298+ if s .grouping {
299+ // Create shim extension if required.
300+ if s .ext == nil && extension .NewPodExtension != nil {
301+ log .L .Infof ("Create shim extension per pod" )
302+ var err error
303+ s .ext , err = extension .NewPodExtension (ctx , s .main )
304+ if err != nil {
305+ log .L .Debugf ("Creating shim extension per pod failed with error: %v" , err )
306+ s .mu .Unlock ()
307+ return nil , err
308+ }
301309 }
302- if s .ext == nil {
303- log .L .Debugf ("No extension created for container" )
304- } else {
305- log .L .Infof ("Extension created for container" )
310+ } else {
311+ // Check if we need to create an extension to intercept calls to the container's shim.
312+ if extension .NewExtension != nil {
313+ log .L .Infof ("Create shim extension per container" )
314+ var err error
315+ s .ext , err = extension .NewExtension (ctx , s .main , r )
316+ if err != nil {
317+ s .mu .Unlock ()
318+ return nil , err
319+ }
306320 }
307- s .mu .Unlock ()
308321 }
322+ if s .ext == nil {
323+ log .L .Debugf ("No extension created" )
324+ } else {
325+ log .L .Infof ("Extension created" )
326+ }
327+ s .mu .Unlock ()
309328
310329 resp , err := s .get ().Create (ctx , r )
311330 return resp , errdefs .ToGRPC (err )
0 commit comments