forked from rancher/rio
/
kubectl.go
39 lines (34 loc) · 925 Bytes
/
kubectl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package clicontext
import (
"fmt"
"os"
"os/exec"
"github.com/sirupsen/logrus"
)
func (c *Config) KubectlCmd(namespace, command string, args ...string) (*exec.Cmd, error) {
var execArgs []string
if logrus.GetLevel() >= logrus.DebugLevel {
execArgs = append(execArgs, "--v=9")
}
if namespace != "" {
execArgs = append(execArgs, "-n", namespace)
}
if command != "" {
execArgs = append(execArgs, command)
}
execArgs = append(execArgs, args...)
logrus.Debugf("kubectl %v, KUBECONFIG=%s", execArgs, c.Kubeconfig)
cmd := exec.Command("kubectl", execArgs...)
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", c.Kubeconfig))
cmd.Stderr = os.Stderr
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
return cmd, nil
}
func (c *Config) Kubectl(namespace, command string, args ...string) error {
cmd, err := c.KubectlCmd(namespace, command, args...)
if err != nil {
return err
}
return cmd.Run()
}