From e66547d0a197b4dc4b4a47146229520875d7df7c Mon Sep 17 00:00:00 2001 From: pprokop Date: Tue, 9 Aug 2016 18:38:32 +0200 Subject: [PATCH] Execing command instead of waiting --- kubernetes-entrypoint.go | 5 +---- util/command/command.go | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/kubernetes-entrypoint.go b/kubernetes-entrypoint.go index c7346cf..a45777d 100644 --- a/kubernetes-entrypoint.go +++ b/kubernetes-entrypoint.go @@ -33,8 +33,5 @@ func main() { logger.Error.Printf("COMMAND env is empty") os.Exit(1) } - if err = comm.ExecuteCommand(command); err != nil { - logger.Error.Printf("Executing command failed: %v", err) - os.Exit(1) - } + comm.ExecuteCommand(command) } diff --git a/util/command/command.go b/util/command/command.go index 9f617d6..08da0a4 100644 --- a/util/command/command.go +++ b/util/command/command.go @@ -3,24 +3,23 @@ package command import ( "os" "os/exec" + "syscall" + + "github.com/stackanetes/kubernetes-entrypoint/logger" ) -func ExecuteCommand(command []string) error { +func ExecuteCommand(command []string) { path, err := exec.LookPath(command[0]) if err != nil { - return err - } - cmd := exec.Cmd{ - Path: path, - Args: command, - Stdout: os.Stdout, - Stderr: os.Stderr, + logger.Error.Printf("Cannot find a binary %v : %v", command[0], err) + os.Exit(1) } - err = cmd.Start() + env := os.Environ() + err = syscall.Exec(path, command, env) if err != nil { - return err + logger.Error.Print("Executing command %v failed: %v", command, err) + os.Exit(1) } - return nil }