mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-22 00:08:11 +00:00
Merge pull request #780 from elezar/add-config-fallback
Fallback to file for runtime config
This commit is contained in:
commit
b03e942424
@ -25,6 +25,7 @@ import (
|
|||||||
|
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine"
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd"
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd"
|
||||||
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/tools/container"
|
"github.com/NVIDIA/nvidia-container-toolkit/tools/container"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -84,13 +85,7 @@ func Flags(opts *Options) []cli.Flag {
|
|||||||
func Setup(c *cli.Context, o *container.Options, co *Options) error {
|
func Setup(c *cli.Context, o *container.Options, co *Options) error {
|
||||||
log.Infof("Starting 'setup' for %v", c.App.Name)
|
log.Infof("Starting 'setup' for %v", c.App.Name)
|
||||||
|
|
||||||
cfg, err := containerd.New(
|
cfg, err := getRuntimeConfig(o, co)
|
||||||
containerd.WithPath(o.Config),
|
|
||||||
containerd.WithConfigSource(containerd.CommandLineSource(o.HostRootMount)),
|
|
||||||
containerd.WithRuntimeType(co.runtimeType),
|
|
||||||
containerd.WithUseLegacyConfig(co.useLegacyConfig),
|
|
||||||
containerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -114,13 +109,7 @@ func Setup(c *cli.Context, o *container.Options, co *Options) error {
|
|||||||
func Cleanup(c *cli.Context, o *container.Options, co *Options) error {
|
func Cleanup(c *cli.Context, o *container.Options, co *Options) error {
|
||||||
log.Infof("Starting 'cleanup' for %v", c.App.Name)
|
log.Infof("Starting 'cleanup' for %v", c.App.Name)
|
||||||
|
|
||||||
cfg, err := containerd.New(
|
cfg, err := getRuntimeConfig(o, co)
|
||||||
containerd.WithPath(o.Config),
|
|
||||||
containerd.WithConfigSource(containerd.CommandLineSource(o.HostRootMount)),
|
|
||||||
containerd.WithRuntimeType(co.runtimeType),
|
|
||||||
containerd.WithUseLegacyConfig(co.useLegacyConfig),
|
|
||||||
containerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -169,13 +158,24 @@ func (o *Options) runtimeConfigOverride() (map[string]interface{}, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetLowlevelRuntimePaths(o *container.Options, co *Options) ([]string, error) {
|
func GetLowlevelRuntimePaths(o *container.Options, co *Options) ([]string, error) {
|
||||||
cfg, err := containerd.New(
|
cfg, err := getRuntimeConfig(o, co)
|
||||||
containerd.WithConfigSource(containerd.CommandLineSource(o.HostRootMount)),
|
|
||||||
containerd.WithRuntimeType(co.runtimeType),
|
|
||||||
containerd.WithUseLegacyConfig(co.useLegacyConfig),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to load containerd config: %w", err)
|
return nil, fmt.Errorf("unable to load containerd config: %w", err)
|
||||||
}
|
}
|
||||||
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getRuntimeConfig(o *container.Options, co *Options) (engine.Interface, error) {
|
||||||
|
return containerd.New(
|
||||||
|
containerd.WithPath(o.Config),
|
||||||
|
containerd.WithConfigSource(
|
||||||
|
toml.LoadFirst(
|
||||||
|
containerd.CommandLineSource(o.HostRootMount),
|
||||||
|
toml.FromFile(o.Config),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
containerd.WithRuntimeType(co.runtimeType),
|
||||||
|
containerd.WithUseLegacyConfig(co.useLegacyConfig),
|
||||||
|
containerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine"
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio"
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook"
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook"
|
||||||
|
"github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml"
|
||||||
"github.com/NVIDIA/nvidia-container-toolkit/tools/container"
|
"github.com/NVIDIA/nvidia-container-toolkit/tools/container"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -116,10 +117,7 @@ func setupHook(o *container.Options, co *Options) error {
|
|||||||
func setupConfig(o *container.Options) error {
|
func setupConfig(o *container.Options) error {
|
||||||
log.Infof("Updating config file")
|
log.Infof("Updating config file")
|
||||||
|
|
||||||
cfg, err := crio.New(
|
cfg, err := getRuntimeConfig(o)
|
||||||
crio.WithPath(o.Config),
|
|
||||||
crio.WithConfigSource(crio.CommandLineSource(o.HostRootMount)),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -168,10 +166,7 @@ func cleanupHook(co *Options) error {
|
|||||||
func cleanupConfig(o *container.Options) error {
|
func cleanupConfig(o *container.Options) error {
|
||||||
log.Infof("Reverting config file modifications")
|
log.Infof("Reverting config file modifications")
|
||||||
|
|
||||||
cfg, err := crio.New(
|
cfg, err := getRuntimeConfig(o)
|
||||||
crio.WithPath(o.Config),
|
|
||||||
crio.WithConfigSource(crio.CommandLineSource(o.HostRootMount)),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -195,11 +190,21 @@ func RestartCrio(o *container.Options) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetLowlevelRuntimePaths(o *container.Options) ([]string, error) {
|
func GetLowlevelRuntimePaths(o *container.Options) ([]string, error) {
|
||||||
cfg, err := crio.New(
|
cfg, err := getRuntimeConfig(o)
|
||||||
crio.WithConfigSource(crio.CommandLineSource(o.HostRootMount)),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to load crio config: %w", err)
|
return nil, fmt.Errorf("unable to load crio config: %w", err)
|
||||||
}
|
}
|
||||||
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getRuntimeConfig(o *container.Options) (engine.Interface, error) {
|
||||||
|
return crio.New(
|
||||||
|
crio.WithPath(o.Config),
|
||||||
|
crio.WithConfigSource(
|
||||||
|
toml.LoadFirst(
|
||||||
|
crio.CommandLineSource(o.HostRootMount),
|
||||||
|
toml.FromFile(o.Config),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -45,9 +45,7 @@ func Flags(opts *Options) []cli.Flag {
|
|||||||
func Setup(c *cli.Context, o *container.Options) error {
|
func Setup(c *cli.Context, o *container.Options) error {
|
||||||
log.Infof("Starting 'setup' for %v", c.App.Name)
|
log.Infof("Starting 'setup' for %v", c.App.Name)
|
||||||
|
|
||||||
cfg, err := docker.New(
|
cfg, err := getRuntimeConfig(o)
|
||||||
docker.WithPath(o.Config),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -71,9 +69,7 @@ func Setup(c *cli.Context, o *container.Options) error {
|
|||||||
func Cleanup(c *cli.Context, o *container.Options) error {
|
func Cleanup(c *cli.Context, o *container.Options) error {
|
||||||
log.Infof("Starting 'cleanup' for %v", c.App.Name)
|
log.Infof("Starting 'cleanup' for %v", c.App.Name)
|
||||||
|
|
||||||
cfg, err := docker.New(
|
cfg, err := getRuntimeConfig(o)
|
||||||
docker.WithPath(o.Config),
|
|
||||||
)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to load config: %v", err)
|
return fmt.Errorf("unable to load config: %v", err)
|
||||||
}
|
}
|
||||||
@ -107,3 +103,9 @@ func GetLowlevelRuntimePaths(o *container.Options) ([]string, error) {
|
|||||||
}
|
}
|
||||||
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
return engine.GetBinaryPathsForRuntimes(cfg), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getRuntimeConfig(o *container.Options) (engine.Interface, error) {
|
||||||
|
return docker.New(
|
||||||
|
docker.WithPath(o.Config),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user