diff --git a/internal/app/wwctl/container/exec/main.go b/internal/app/wwctl/container/exec/main.go index 58fc60b8..bfba2210 100644 --- a/internal/app/wwctl/container/exec/main.go +++ b/internal/app/wwctl/container/exec/main.go @@ -42,6 +42,8 @@ func runContainedCmd(args []string) error { func CobraRunE(cmd *cobra.Command, args []string) error { containerName := args[0] + os.Setenv("WW_CONTAINER_SHELL", containerName) + var allargs []string if !container.ValidSource(containerName) { @@ -113,3 +115,6 @@ func CobraRunE(cmd *cobra.Command, args []string) error { return nil } +func SetBinds(myBinds []string) { + binds = append(binds, myBinds...) +} diff --git a/internal/app/wwctl/container/shell/main.go b/internal/app/wwctl/container/shell/main.go index 04a095ec..1de424c3 100644 --- a/internal/app/wwctl/container/shell/main.go +++ b/internal/app/wwctl/container/shell/main.go @@ -4,11 +4,9 @@ package shell import ( - "fmt" "os" - "os/exec" - "syscall" + cntexec "github.com/hpcng/warewulf/internal/app/wwctl/container/exec" "github.com/hpcng/warewulf/internal/pkg/container" "github.com/hpcng/warewulf/internal/pkg/wwlog" "github.com/spf13/cobra" @@ -23,28 +21,33 @@ func CobraRunE(cmd *cobra.Command, args []string) error { wwlog.Error("Unknown Warewulf container: %s", containerName) os.Exit(1) } - - for _, b := range binds { - allargs = append(allargs, "--bind", b) - } + /* + for _, b := range binds { + allargs = append(allargs, "--bind", b) + } + */ + args = append(args, "/usr/bin/bash") allargs = append(allargs, args...) - allargs = append(allargs, "/usr/bin/bash") + wwlog.Debug("Calling exec with args: %s", allargs) + cntexec.SetBinds(binds) + return cntexec.CobraRunE(cmd, allargs) + /* + c := exec.Command("/proc/self/exe", append([]string{"container", "exec"}, allargs...)...) - c := exec.Command("/proc/self/exe", append([]string{"container", "exec"}, allargs...)...) + //c := exec.Command("/bin/sh") + c.SysProcAttr = &syscall.SysProcAttr{ + Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWPID | syscall.CLONE_NEWNS, + } + c.Stdin = os.Stdin + c.Stdout = os.Stdout + c.Stderr = os.Stderr - //c := exec.Command("/bin/sh") - c.SysProcAttr = &syscall.SysProcAttr{ - Cloneflags: syscall.CLONE_NEWUTS | syscall.CLONE_NEWPID | syscall.CLONE_NEWNS, - } - c.Stdin = os.Stdin - c.Stdout = os.Stdout - c.Stderr = os.Stderr + os.Setenv("WW_CONTAINER_SHELL", containerName) - os.Setenv("WW_CONTAINER_SHELL", containerName) - - if err := c.Run(); err != nil { - fmt.Println(err) - os.Exit(1) - } + if err := c.Run(); err != nil { + fmt.Println(err) + os.Exit(1) + } + */ return nil }