mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2025-06-26 18:18:24 +00:00
Refactor the way we create CDI Hooks
Signed-off-by: Carlos Eduardo Arango Gutierrez <eduardoa@nvidia.com>
This commit is contained in:
@@ -27,11 +27,11 @@ import (
|
||||
|
||||
// byPathHookDiscoverer discovers the entities required for injecting by-path DRM device links
|
||||
type byPathHookDiscoverer struct {
|
||||
logger logger.Interface
|
||||
devRoot string
|
||||
nvidiaCDIHookPath string
|
||||
pciBusID string
|
||||
deviceNodes discover.Discover
|
||||
logger logger.Interface
|
||||
devRoot string
|
||||
hookCreator discover.HookCreator
|
||||
pciBusID string
|
||||
deviceNodes discover.Discover
|
||||
}
|
||||
|
||||
var _ discover.Discover = (*byPathHookDiscoverer)(nil)
|
||||
@@ -53,18 +53,9 @@ func (d *byPathHookDiscoverer) Hooks() ([]discover.Hook, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var args []string
|
||||
for _, l := range links {
|
||||
args = append(args, "--link", l)
|
||||
}
|
||||
hook := d.hookCreator.Create("create-symlinks", links...)
|
||||
|
||||
hook := discover.CreateNvidiaCDIHook(
|
||||
d.nvidiaCDIHookPath,
|
||||
"create-symlinks",
|
||||
args...,
|
||||
)
|
||||
|
||||
return []discover.Hook{hook}, nil
|
||||
return hook.Hooks()
|
||||
}
|
||||
|
||||
// Mounts returns an empty slice for a full GPU
|
||||
|
||||
@@ -58,11 +58,11 @@ func (o *options) newNvmlDGPUDiscoverer(d requiredInfo) (discover.Discover, erro
|
||||
)
|
||||
|
||||
byPathHooks := &byPathHookDiscoverer{
|
||||
logger: o.logger,
|
||||
devRoot: o.devRoot,
|
||||
nvidiaCDIHookPath: o.nvidiaCDIHookPath,
|
||||
pciBusID: pciBusID,
|
||||
deviceNodes: deviceNodes,
|
||||
logger: o.logger,
|
||||
devRoot: o.devRoot,
|
||||
hookCreator: o.hookCreator,
|
||||
pciBusID: pciBusID,
|
||||
deviceNodes: deviceNodes,
|
||||
}
|
||||
|
||||
dd := discover.Merge(
|
||||
|
||||
@@ -28,12 +28,12 @@ import (
|
||||
)
|
||||
|
||||
type nvsandboxutilsDGPU struct {
|
||||
lib nvsandboxutils.Interface
|
||||
uuid string
|
||||
devRoot string
|
||||
isMig bool
|
||||
nvidiaCDIHookPath string
|
||||
deviceLinks []string
|
||||
lib nvsandboxutils.Interface
|
||||
uuid string
|
||||
devRoot string
|
||||
isMig bool
|
||||
hookCreator discover.HookCreator
|
||||
deviceLinks []string
|
||||
}
|
||||
|
||||
var _ discover.Discover = (*nvsandboxutilsDGPU)(nil)
|
||||
@@ -53,11 +53,11 @@ func (o *options) newNvsandboxutilsDGPUDiscoverer(d UUIDer) (discover.Discover,
|
||||
}
|
||||
|
||||
nvd := nvsandboxutilsDGPU{
|
||||
lib: o.nvsandboxutilslib,
|
||||
uuid: uuid,
|
||||
devRoot: strings.TrimSuffix(filepath.Clean(o.devRoot), "/dev"),
|
||||
isMig: o.isMigDevice,
|
||||
nvidiaCDIHookPath: o.nvidiaCDIHookPath,
|
||||
lib: o.nvsandboxutilslib,
|
||||
uuid: uuid,
|
||||
devRoot: strings.TrimSuffix(filepath.Clean(o.devRoot), "/dev"),
|
||||
isMig: o.isMigDevice,
|
||||
hookCreator: o.hookCreator,
|
||||
}
|
||||
|
||||
return &nvd, nil
|
||||
@@ -112,18 +112,9 @@ func (d *nvsandboxutilsDGPU) Hooks() ([]discover.Hook, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var args []string
|
||||
for _, l := range d.deviceLinks {
|
||||
args = append(args, "--link", l)
|
||||
}
|
||||
hook := d.hookCreator.Create("create-symlinks", d.deviceLinks...)
|
||||
|
||||
hook := discover.CreateNvidiaCDIHook(
|
||||
d.nvidiaCDIHookPath,
|
||||
"create-symlinks",
|
||||
args...,
|
||||
)
|
||||
|
||||
return []discover.Hook{hook}, nil
|
||||
return hook.Hooks()
|
||||
}
|
||||
|
||||
func (d *nvsandboxutilsDGPU) Mounts() ([]discover.Mount, error) {
|
||||
|
||||
@@ -17,15 +17,16 @@
|
||||
package dgpu
|
||||
|
||||
import (
|
||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/discover"
|
||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/logger"
|
||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps"
|
||||
"github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils"
|
||||
)
|
||||
|
||||
type options struct {
|
||||
logger logger.Interface
|
||||
devRoot string
|
||||
nvidiaCDIHookPath string
|
||||
logger logger.Interface
|
||||
devRoot string
|
||||
hookCreator discover.HookCreator
|
||||
|
||||
isMigDevice bool
|
||||
// migCaps stores the MIG capabilities for the system.
|
||||
@@ -52,10 +53,10 @@ func WithLogger(logger logger.Interface) Option {
|
||||
}
|
||||
}
|
||||
|
||||
// WithNVIDIACDIHookPath sets the path to the NVIDIA Container Toolkit CLI path for the library
|
||||
func WithNVIDIACDIHookPath(path string) Option {
|
||||
// WithHookCreator sets the hook creator for the library
|
||||
func WithHookCreator(hookCreator discover.HookCreator) Option {
|
||||
return func(l *options) {
|
||||
l.nvidiaCDIHookPath = path
|
||||
l.hookCreator = hookCreator
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user