Skip to content

Commit ec8dfaf

Browse files
authored
Merge pull request #743 from elezar/remove-opt-in-features
Remove ability to set per-container features in the config file
2 parents c129122 + 1d9d0ac commit ec8dfaf

File tree

3 files changed

+13
-60
lines changed

3 files changed

+13
-60
lines changed

internal/config/features.go

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -16,70 +16,19 @@
1616

1717
package config
1818

19-
type featureName string
20-
21-
const (
22-
FeatureGDS = featureName("gds")
23-
FeatureMOFED = featureName("mofed")
24-
FeatureNVSWITCH = featureName("nvswitch")
25-
FeatureGDRCopy = featureName("gdrcopy")
26-
)
27-
2819
// features specifies a set of named features.
2920
type features struct {
30-
GDS *feature `toml:"gds,omitempty"`
31-
MOFED *feature `toml:"mofed,omitempty"`
32-
NVSWITCH *feature `toml:"nvswitch,omitempty"`
33-
GDRCopy *feature `toml:"gdrcopy,omitempty"`
3421
}
3522

23+
//nolint:unused
3624
type feature bool
3725

38-
// IsEnabled checks whether a specified named feature is enabled.
39-
// An optional list of environments to check for feature-specific environment
40-
// variables can also be supplied.
41-
func (fs features) IsEnabled(n featureName, in ...getenver) bool {
42-
featureEnvvars := map[featureName]string{
43-
FeatureGDS: "NVIDIA_GDS",
44-
FeatureMOFED: "NVIDIA_MOFED",
45-
FeatureNVSWITCH: "NVIDIA_NVSWITCH",
46-
FeatureGDRCopy: "NVIDIA_GDRCOPY",
47-
}
48-
49-
envvar := featureEnvvars[n]
50-
switch n {
51-
case FeatureGDS:
52-
return fs.GDS.isEnabled(envvar, in...)
53-
case FeatureMOFED:
54-
return fs.MOFED.isEnabled(envvar, in...)
55-
case FeatureNVSWITCH:
56-
return fs.NVSWITCH.isEnabled(envvar, in...)
57-
case FeatureGDRCopy:
58-
return fs.GDRCopy.isEnabled(envvar, in...)
59-
default:
60-
return false
61-
}
62-
}
63-
64-
// isEnabled checks whether a feature is enabled.
65-
// If the enabled value is explicitly set, this is returned, otherwise the
66-
// associated envvar is checked in the specified getenver for the string "enabled"
67-
// A CUDA container / image can be passed here.
68-
func (f *feature) isEnabled(envvar string, ins ...getenver) bool {
26+
// IsEnabled checks whether a feature is explicitly enabled.
27+
//
28+
//nolint:unused
29+
func (f *feature) IsEnabled() bool {
6930
if f != nil {
7031
return bool(*f)
7132
}
72-
if envvar == "" {
73-
return false
74-
}
75-
for _, in := range ins {
76-
if in.Getenv(envvar) == "enabled" {
77-
return true
78-
}
79-
}
8033
return false
8134
}
82-
83-
type getenver interface {
84-
Getenv(string) string
85-
}

internal/config/image/cuda_image.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,3 +274,7 @@ func (i CUDA) CDIDevicesFromMounts() []string {
274274
}
275275
return devices
276276
}
277+
278+
func (i CUDA) IsEnabled(envvar string) bool {
279+
return i.Getenv(envvar) == "enabled"
280+
}

internal/modifier/gated.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,31 +46,31 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image
4646
driverRoot := cfg.NVIDIAContainerCLIConfig.Root
4747
devRoot := cfg.NVIDIAContainerCLIConfig.Root
4848

49-
if cfg.Features.IsEnabled(config.FeatureGDS, image) {
49+
if image.Getenv("NVIDIA_GDS") == "enabled" {
5050
d, err := discover.NewGDSDiscoverer(logger, driverRoot, devRoot)
5151
if err != nil {
5252
return nil, fmt.Errorf("failed to construct discoverer for GDS devices: %w", err)
5353
}
5454
discoverers = append(discoverers, d)
5555
}
5656

57-
if cfg.Features.IsEnabled(config.FeatureMOFED, image) {
57+
if image.Getenv("NVIDIA_MOFED") == "enabled" {
5858
d, err := discover.NewMOFEDDiscoverer(logger, devRoot)
5959
if err != nil {
6060
return nil, fmt.Errorf("failed to construct discoverer for MOFED devices: %w", err)
6161
}
6262
discoverers = append(discoverers, d)
6363
}
6464

65-
if cfg.Features.IsEnabled(config.FeatureNVSWITCH, image) {
65+
if image.Getenv("NVIDIA_NVSWITCH") == "enabled" {
6666
d, err := discover.NewNvSwitchDiscoverer(logger, devRoot)
6767
if err != nil {
6868
return nil, fmt.Errorf("failed to construct discoverer for NVSWITCH devices: %w", err)
6969
}
7070
discoverers = append(discoverers, d)
7171
}
7272

73-
if cfg.Features.IsEnabled(config.FeatureGDRCopy, image) {
73+
if image.Getenv("NVIDIA_GDRCOPY") == "enabled" {
7474
d, err := discover.NewGDRCopyDiscoverer(logger, devRoot)
7575
if err != nil {
7676
return nil, fmt.Errorf("failed to construct discoverer for GDRCopy devices: %w", err)

0 commit comments

Comments
 (0)