mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-22 00:08:11 +00:00
109 lines
3.3 KiB
Go
109 lines
3.3 KiB
Go
|
/**
|
||
|
# Copyright 2024 NVIDIA CORPORATION
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
**/
|
||
|
|
||
|
package runtime
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/urfave/cli/v2"
|
||
|
|
||
|
"github.com/NVIDIA/nvidia-container-toolkit/tools/container"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
defaultSetAsDefault = true
|
||
|
// defaultRuntimeName specifies the NVIDIA runtime to be use as the default runtime if setting the default runtime is enabled
|
||
|
defaultRuntimeName = "nvidia"
|
||
|
defaultHostRootMount = "/host"
|
||
|
|
||
|
runtimeSpecificDefault = "RUNTIME_SPECIFIC_DEFAULT"
|
||
|
)
|
||
|
|
||
|
type Options struct {
|
||
|
container.Options
|
||
|
}
|
||
|
|
||
|
func Flags(opts *Options) []cli.Flag {
|
||
|
flags := []cli.Flag{
|
||
|
&cli.StringFlag{
|
||
|
Name: "config",
|
||
|
Usage: "Path to the runtime config file",
|
||
|
Value: runtimeSpecificDefault,
|
||
|
Destination: &opts.Config,
|
||
|
EnvVars: []string{"RUNTIME_CONFIG"},
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "socket",
|
||
|
Usage: "Path to the runtime socket file",
|
||
|
Value: runtimeSpecificDefault,
|
||
|
Destination: &opts.Socket,
|
||
|
EnvVars: []string{"RUNTIME_SOCKET"},
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "restart-mode",
|
||
|
Usage: "Specify how the runtime should be restarted; If 'none' is selected it will not be restarted [signal | systemd | none ]",
|
||
|
Value: runtimeSpecificDefault,
|
||
|
Destination: &opts.RestartMode,
|
||
|
EnvVars: []string{"RUNTIME_RESTART_MODE"},
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "host-root",
|
||
|
Usage: "Specify the path to the host root to be used when restarting the runtime using systemd",
|
||
|
Value: defaultHostRootMount,
|
||
|
Destination: &opts.HostRootMount,
|
||
|
EnvVars: []string{"HOST_ROOT_MOUNT"},
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "runtime-name",
|
||
|
Aliases: []string{"nvidia-runtime-name", "runtime-class"},
|
||
|
Usage: "Specify the name of the `nvidia` runtime. If set-as-default is selected, the runtime is used as the default runtime.",
|
||
|
Value: defaultRuntimeName,
|
||
|
Destination: &opts.RuntimeName,
|
||
|
EnvVars: []string{"NVIDIA_RUNTIME_NAME"},
|
||
|
},
|
||
|
&cli.BoolFlag{
|
||
|
Name: "set-as-default",
|
||
|
Usage: "Set the `nvidia` runtime as the default runtime.",
|
||
|
Value: defaultSetAsDefault,
|
||
|
Destination: &opts.SetAsDefault,
|
||
|
EnvVars: []string{"NVIDIA_RUNTIME_SET_AS_DEFAULT"},
|
||
|
Hidden: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
return flags
|
||
|
}
|
||
|
|
||
|
// ValidateOptions checks whether the specified options are valid
|
||
|
func ValidateOptions(opts *Options, toolkitRoot string) error {
|
||
|
// We set this option here to ensure that it is avalable in future calls.
|
||
|
opts.RuntimeDir = toolkitRoot
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func Setup(c *cli.Context, opts *Options, runtime string) error {
|
||
|
switch runtime {
|
||
|
}
|
||
|
return fmt.Errorf("undefined runtime %v", runtime)
|
||
|
}
|
||
|
|
||
|
func Cleanup(c *cli.Context, opts *Options, runtime string) error {
|
||
|
switch runtime {
|
||
|
}
|
||
|
return fmt.Errorf("undefined runtime %v", runtime)
|
||
|
}
|