Set toolkit root as flag

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar 2022-07-25 10:13:54 +02:00
parent feedc912e4
commit e848aa7813
2 changed files with 16 additions and 13 deletions

View File

@ -23,7 +23,7 @@ testing::toolkit::install() {
READLINK="greadlink" READLINK="greadlink"
fi fi
testing::docker_run::toolkit::shell 'toolkit install /usr/local/nvidia/toolkit' testing::docker_run::toolkit::shell 'toolkit install --toolkit-root=/usr/local/nvidia/toolkit'
docker run --rm -v "${shared_dir}:/work" alpine sh -c "chown -R ${uid}:${gid} /work/" docker run --rm -v "${shared_dir}:/work" alpine sh -c "chown -R ${uid}:${gid} /work/"
# Ensure toolkit dir is correctly setup # Ensure toolkit dir is correctly setup
@ -66,7 +66,7 @@ testing::toolkit::install() {
testing::toolkit::delete() { testing::toolkit::delete() {
testing::docker_run::toolkit::shell 'mkdir -p /usr/local/nvidia/delete-toolkit' testing::docker_run::toolkit::shell 'mkdir -p /usr/local/nvidia/delete-toolkit'
testing::docker_run::toolkit::shell 'touch /usr/local/nvidia/delete-toolkit/test.file' testing::docker_run::toolkit::shell 'touch /usr/local/nvidia/delete-toolkit/test.file'
testing::docker_run::toolkit::shell 'toolkit delete /usr/local/nvidia/delete-toolkit' testing::docker_run::toolkit::shell 'toolkit delete --toolkit-root=/usr/local/nvidia/delete-toolkit'
test ! -z "$(ls -A "${shared_dir}/usr/local/nvidia")" test ! -z "$(ls -A "${shared_dir}/usr/local/nvidia")"
test ! -e "${shared_dir}/usr/local/nvidia/delete-toolkit" test ! -e "${shared_dir}/usr/local/nvidia/delete-toolkit"

View File

@ -63,7 +63,7 @@ func main() {
install.Usage = "Install the components of the NVIDIA container toolkit" install.Usage = "Install the components of the NVIDIA container toolkit"
install.ArgsUsage = "<toolkit_directory>" install.ArgsUsage = "<toolkit_directory>"
install.Before = func(c *cli.Context) error { install.Before = func(c *cli.Context) error {
return parseArgs(c, &opts) return validateOptions(c, &opts)
} }
install.Action = func(c *cli.Context) error { install.Action = func(c *cli.Context) error {
return Install(c, &opts) return Install(c, &opts)
@ -75,7 +75,7 @@ func main() {
delete.Usage = "Delete the NVIDIA container toolkit" delete.Usage = "Delete the NVIDIA container toolkit"
delete.ArgsUsage = "<toolkit_directory>" delete.ArgsUsage = "<toolkit_directory>"
delete.Before = func(c *cli.Context) error { delete.Before = func(c *cli.Context) error {
return parseArgs(c, &opts) return validateOptions(c, &opts)
} }
delete.Action = func(c *cli.Context) error { delete.Action = func(c *cli.Context) error {
return Delete(c, &opts) return Delete(c, &opts)
@ -111,10 +111,18 @@ func main() {
Destination: &opts.ContainerCLIDebug, Destination: &opts.ContainerCLIDebug,
EnvVars: []string{"NVIDIA_CONTAINER_CLI_DEBUG"}, EnvVars: []string{"NVIDIA_CONTAINER_CLI_DEBUG"},
}, },
&cli.StringFlag{
Name: "toolkit-root",
Usage: "The directory where the NVIDIA Container toolkit is to be installed",
Required: true,
Destination: &opts.toolkitRoot,
EnvVars: []string{"TOOLKIT_ROOT"},
},
} }
// Update the subcommand flags with the common subcommand flags // Update the subcommand flags with the common subcommand flags
install.Flags = append([]cli.Flag{}, flags...) install.Flags = append([]cli.Flag{}, flags...)
delete.Flags = append([]cli.Flag{}, flags...)
// Run the top-level CLI // Run the top-level CLI
if err := c.Run(os.Args); err != nil { if err := c.Run(os.Args); err != nil {
@ -122,16 +130,11 @@ func main() {
} }
} }
// parseArgs parses the command line arguments to the CLI // validateOptions checks whether the specified options are valid
func parseArgs(c *cli.Context, opts *options) error { func validateOptions(c *cli.Context, opts *options) error {
args := c.Args() if opts.toolkitRoot == "" {
return fmt.Errorf("invalid --toolkit-root option: %v", opts.toolkitRoot)
log.Infof("Parsing arguments: %v", args.Slice())
if c.NArg() != 1 {
return fmt.Errorf("incorrect number of arguments")
} }
opts.toolkitRoot = args.Get(0)
log.Infof("Successfully parsed arguments")
return nil return nil
} }