talos-extensions/nvidia-gpu/nvidia-container-toolkit/nvidia-container-runtime-wrapper/main.go
Eddie Garcia ee6d6e4039
feat: add talos-vmtoolsd extension
Add talos-vmtoolsd as an official extension

Signed-off-by: Eddie Garcia <jinyx007@gmail.com>
Signed-off-by: Noel Georgi <git@frezbo.dev>
2024-04-02 15:19:38 +05:30

55 lines
1.3 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package main
import (
"log"
"os"
"path/filepath"
"golang.org/x/sys/unix"
)
func main() {
cmdName := filepath.Base(os.Args[0])
switch cmdName {
case
"nvidia-container-runtime",
"nvidia-container-runtime-hook",
"nvidia-container-runtime.cdi",
"nvidia-container-runtime.legacy",
"nvidia-container-toolkit",
"nvidia-ctk":
execCommand(cmdName, os.Args[1:])
default:
log.Fatalf("nvidia-container-runtime-wrapper: unknown command %s\n", cmdName)
}
}
func execCommand(cmdName string, args []string) {
environ := os.Environ()
environ = append(environ, "XDG_CONFIG_HOME=/usr/local/etc")
realCmdName := cmdName + ".real"
cmdArgs := []string{realCmdName}
if cmdName == "nvidia-container-runtime-hook" {
cmdArgs = append(
cmdArgs,
"-config",
"/usr/local/etc/nvidia-container-runtime/config.toml",
)
}
cmdArgs = append(cmdArgs, args...)
cmdFullPath := filepath.Join("/usr/local/bin", realCmdName)
if err := unix.Exec(cmdFullPath, cmdArgs, environ); err != nil {
log.Fatalf("nvidia-container-runtime-wrapper: error execing %s %v\n", cmdFullPath, err)
}
}