diff --git a/tools/container/toolkit/toolkit.go b/tools/container/toolkit/toolkit.go index 937798e6..43e68ca5 100644 --- a/tools/container/toolkit/toolkit.go +++ b/tools/container/toolkit/toolkit.go @@ -79,6 +79,8 @@ type Options struct { acceptNVIDIAVisibleDevicesAsVolumeMounts bool ignoreErrors bool + + optInFeatures cli.StringSlice } func Flags(opts *Options) []cli.Flag { @@ -202,6 +204,12 @@ func Flags(opts *Options) []cli.Flag { Destination: &opts.createDeviceNodes, EnvVars: []string{"CREATE_DEVICE_NODES"}, }, + &cli.StringSliceFlag{ + Name: "opt-in-features", + Hidden: true, + Destination: &opts.optInFeatures, + EnvVars: []string{"NVIDIA_CONTAINER_TOOLKIT_OPT_IN_FEATURES"}, + }, } return flags @@ -457,6 +465,10 @@ func installToolkitConfig(c *cli.Context, toolkitConfigPath string, nvidiaContai configValues["nvidia-container-runtime.runtimes"] = toolkitRuntimeList } + for _, optInFeature := range opts.optInFeatures.Value() { + configValues["features."+optInFeature] = true + } + for key, value := range configValues { cfg.Set(key, value) } @@ -471,6 +483,7 @@ func installToolkitConfig(c *cli.Context, toolkitConfigPath string, nvidiaContai "nvidia-container-runtime.runtimes": opts.ContainerRuntimeRuntimes, "nvidia-container-cli.debug": opts.ContainerCLIDebug, } + for key, value := range optionalConfigValues { if !c.IsSet(key) { log.Infof("Skipping unset option: %v", key)