Skip to content

Commit 4cfb7e1

Browse files
committed
[no-relnote] Add RuntimeMode type
Signed-off-by: Evan Lezar <[email protected]>
1 parent a1d6091 commit 4cfb7e1

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

cmd/nvidia-container-runtime-hook/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func doPrestart() {
8282
return
8383
}
8484

85-
if !hook.NVIDIAContainerRuntimeHookConfig.SkipModeDetection && info.ResolveAutoMode(&logInterceptor{}, hook.NVIDIAContainerRuntimeConfig.Mode, container.Image) != "legacy" {
85+
if !hook.NVIDIAContainerRuntimeHookConfig.SkipModeDetection && info.ResolveAutoMode(&logInterceptor{}, hook.NVIDIAContainerRuntimeConfig.Mode, container.Image) != info.RuntimeModeLegacy {
8686
log.Panicln("invoking the NVIDIA Container Runtime Hook directly (e.g. specifying the docker --gpus flag) is not supported. Please use the NVIDIA Container Runtime (e.g. specify the --runtime=nvidia flag) instead.")
8787
}
8888

internal/info/auto.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,31 @@ import (
2323
"github.com/NVIDIA/nvidia-container-toolkit/internal/logger"
2424
)
2525

26+
// A RuntimeMode is used to select a specific mode of operation for the NVIDIA Container Runtime.
27+
type RuntimeMode string
28+
29+
const (
30+
RuntimeModeLegacy = RuntimeMode("legacy")
31+
RuntimeModeCSV = RuntimeMode("csv")
32+
RuntimeModeCDI = RuntimeMode("cdi")
33+
)
34+
2635
// ResolveAutoMode determines the correct mode for the platform if set to "auto"
27-
func ResolveAutoMode(logger logger.Interface, mode string, image image.CUDA) (rmode string) {
36+
func ResolveAutoMode(logger logger.Interface, mode string, image image.CUDA) (rmode RuntimeMode) {
2837
return resolveMode(logger, mode, image, nil)
2938
}
3039

31-
func resolveMode(logger logger.Interface, mode string, image image.CUDA, propertyExtractor info.PropertyExtractor) (rmode string) {
40+
func resolveMode(logger logger.Interface, mode string, image image.CUDA, propertyExtractor info.PropertyExtractor) (rmode RuntimeMode) {
3241
if mode != "auto" {
3342
logger.Infof("Using requested mode '%s'", mode)
34-
return mode
43+
return RuntimeMode(mode)
3544
}
3645
defer func() {
3746
logger.Infof("Auto-detected mode as '%v'", rmode)
3847
}()
3948

4049
if image.OnlyFullyQualifiedCDIDevices() {
41-
return "cdi"
50+
return RuntimeModeCDI
4251
}
4352

4453
nvinfo := info.New(
@@ -48,9 +57,9 @@ func resolveMode(logger logger.Interface, mode string, image image.CUDA, propert
4857

4958
switch nvinfo.ResolvePlatform() {
5059
case info.PlatformNVML, info.PlatformWSL:
51-
return "legacy"
60+
return RuntimeModeLegacy
5261
case info.PlatformTegra:
53-
return "csv"
62+
return RuntimeModeCSV
5463
}
55-
return "legacy"
64+
return RuntimeModeLegacy
5665
}

internal/runtime/runtime_factory.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,26 +105,26 @@ func newSpecModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Sp
105105
return modifiers, nil
106106
}
107107

108-
func newModeModifier(logger logger.Interface, mode string, cfg *config.Config, ociSpec oci.Spec, image image.CUDA) (oci.SpecModifier, error) {
108+
func newModeModifier(logger logger.Interface, mode info.RuntimeMode, cfg *config.Config, ociSpec oci.Spec, image image.CUDA) (oci.SpecModifier, error) {
109109
switch mode {
110-
case "legacy":
110+
case info.RuntimeModeLegacy:
111111
return modifier.NewStableRuntimeModifier(logger, cfg.NVIDIAContainerRuntimeHookConfig.Path), nil
112-
case "csv":
112+
case info.RuntimeModeCSV:
113113
return modifier.NewCSVModifier(logger, cfg, image)
114-
case "cdi":
114+
case info.RuntimeModeCDI:
115115
return modifier.NewCDIModifier(logger, cfg, ociSpec)
116116
}
117117

118118
return nil, fmt.Errorf("invalid runtime mode: %v", cfg.NVIDIAContainerRuntimeConfig.Mode)
119119
}
120120

121121
// supportedModifierTypes returns the modifiers supported for a specific runtime mode.
122-
func supportedModifierTypes(mode string) []string {
122+
func supportedModifierTypes(mode info.RuntimeMode) []string {
123123
switch mode {
124-
case "cdi":
124+
case info.RuntimeModeCDI:
125125
// For CDI mode we make no additional modifications.
126126
return []string{"nvidia-hook-remover", "mode"}
127-
case "csv":
127+
case info.RuntimeModeCSV:
128128
// For CSV mode we support mode and feature-gated modification.
129129
return []string{"nvidia-hook-remover", "mode", "feature-gated"}
130130
default:

0 commit comments

Comments
 (0)