@@ -32,14 +32,20 @@ import (
3232 "github.com/NVIDIA/nvidia-container-toolkit/internal/oci"
3333)
3434
35- type Factory struct {
35+ // factoryOptions define the set of options that must be set when constructing
36+ // a modifier factory.
37+ type factoryOptions struct {
3638 logger logger.Interface
3739 cfg * config.Config
3840 driver * root.Driver
3941 hookCreator discover.HookCreator
4042 image * image.CUDA
4143 runtimeMode info.RuntimeMode
44+ }
4245
46+ type Factory struct {
47+ factoryOptions
48+ // An editsFactory is created at construction.
4349 editsFactory edits.Factory
4450}
4551
@@ -60,12 +66,14 @@ func New(opts ...Option) (oci.SpecModifier, error) {
6066func createFactory (opts ... Option ) * Factory {
6167 f := & Factory {}
6268 for _ , opt := range opts {
63- opt (f )
64- }
65- if f .editsFactory == nil {
66- f .editsFactory = edits .NewFactory (edits .WithLogger (f .logger ))
69+ opt (& f .factoryOptions )
6770 }
6871
72+ f .editsFactory = edits .NewFactory (
73+ edits .WithLogger (f .logger ),
74+ edits .WithNoAdditionalGIDsForDeviceNodes (f .cfg .Features .NoAdditionalGIDsForDeviceNodes .IsEnabled ()),
75+ )
76+
6977 return f
7078}
7179
@@ -125,39 +133,39 @@ func (f *Factory) create() (oci.SpecModifier, error) {
125133 return modifiers , nil
126134}
127135
128- type Option func (* Factory )
136+ type Option func (* factoryOptions )
129137
130138func WithConfig (cfg * config.Config ) Option {
131- return func (f * Factory ) {
139+ return func (f * factoryOptions ) {
132140 f .cfg = cfg
133141 }
134142}
135143
136144func WithDriver (driver * root.Driver ) Option {
137- return func (f * Factory ) {
145+ return func (f * factoryOptions ) {
138146 f .driver = driver
139147 }
140148}
141149func WithHookCreator (hookCreator discover.HookCreator ) Option {
142- return func (f * Factory ) {
150+ return func (f * factoryOptions ) {
143151 f .hookCreator = hookCreator
144152 }
145153}
146154
147155func WithImage (image * image.CUDA ) Option {
148- return func (f * Factory ) {
156+ return func (f * factoryOptions ) {
149157 f .image = image
150158 }
151159}
152160
153161func WithLogger (logger logger.Interface ) Option {
154- return func (f * Factory ) {
162+ return func (f * factoryOptions ) {
155163 f .logger = logger
156164 }
157165}
158166
159167func WithRuntimeMode (runtimeMode info.RuntimeMode ) Option {
160- return func (f * Factory ) {
168+ return func (f * factoryOptions ) {
161169 f .runtimeMode = runtimeMode
162170 }
163171}
0 commit comments