Commit 8f747a1c authored by Michelle Noorali's avatar Michelle Noorali

feat(*): add helm dm status command

Allows a user to inspec their dm pods and state
in the running Kubernetes cluster. This resolves
issue #301.
parent 3f2fe87c
...@@ -62,9 +62,16 @@ func dmCmd() cli.Command { ...@@ -62,9 +62,16 @@ func dmCmd() cli.Command {
Name: "status", Name: "status",
Usage: "Show status of DM.", Usage: "Show status of DM.",
ArgsUsage: "", ArgsUsage: "",
Flags: []cli.Flag{
cli.BoolFlag{
Name: "dry-run",
Usage: "Only display the underlying kubectl commands.",
},
},
Action: func(c *cli.Context) { Action: func(c *cli.Context) {
format.Err("Not yet implemented") if err := status(c.Bool("dry-run")); err != nil {
os.Exit(1) os.Exit(1)
}
}, },
}, },
{ {
...@@ -110,6 +117,20 @@ func uninstall(dryRun bool) error { ...@@ -110,6 +117,20 @@ func uninstall(dryRun bool) error {
return nil return nil
} }
func status(dryRun bool) error {
client := kubectl.Client
if dryRun {
client = kubectl.PrintRunner{}
}
out, err := client.GetByKind("pods", "", "dm")
if err != nil {
return err
}
format.Msg(string(out))
return nil
}
func getKubectlRunner(dryRun bool) kubectl.Runner { func getKubectlRunner(dryRun bool) kubectl.Runner {
if dryRun { if dryRun {
return &kubectl.PrintRunner{} return &kubectl.PrintRunner{}
......
...@@ -17,6 +17,7 @@ func command(args ...string) *cmd { ...@@ -17,6 +17,7 @@ func command(args ...string) *cmd {
} }
func assignStdin(cmd *cmd, in []byte) { func assignStdin(cmd *cmd, in []byte) {
fmt.Println(string(in))
cmd.Stdin = bytes.NewBuffer(in) cmd.Stdin = bytes.NewBuffer(in)
} }
......
...@@ -15,7 +15,11 @@ func (r RealRunner) Get(stdin []byte, ns string) ([]byte, error) { ...@@ -15,7 +15,11 @@ func (r RealRunner) Get(stdin []byte, ns string) ([]byte, error) {
// GetByKind gets a named thing by kind. // GetByKind gets a named thing by kind.
func (r RealRunner) GetByKind(kind, name, ns string) (string, error) { func (r RealRunner) GetByKind(kind, name, ns string) (string, error) {
args := []string{"get", kind, name} args := []string{"get", kind}
if name != "" {
args = append([]string{name}, args...)
}
if ns != "" { if ns != "" {
args = append([]string{"--namespace=" + ns}, args...) args = append([]string{"--namespace=" + ns}, args...)
...@@ -40,7 +44,11 @@ func (r PrintRunner) Get(stdin []byte, ns string) ([]byte, error) { ...@@ -40,7 +44,11 @@ func (r PrintRunner) Get(stdin []byte, ns string) ([]byte, error) {
// GetByKind gets a named thing by kind. // GetByKind gets a named thing by kind.
func (r PrintRunner) GetByKind(kind, name, ns string) (string, error) { func (r PrintRunner) GetByKind(kind, name, ns string) (string, error) {
args := []string{"get", kind, name} args := []string{"get", kind}
if name != "" {
args = append([]string{name}, args...)
}
if ns != "" { if ns != "" {
args = append([]string{"--namespace=" + ns}, args...) args = append([]string{"--namespace=" + ns}, args...)
......
...@@ -15,3 +15,15 @@ func TestGet(t *testing.T) { ...@@ -15,3 +15,15 @@ func TestGet(t *testing.T) {
t.Errorf("%s != %s", string(out), expects) t.Errorf("%s != %s", string(out), expects)
} }
} }
func TestGetByKind(t *testing.T) {
Client = TestRunner{
out: []byte("running the GetByKind command"),
}
expects := "running the GetByKind command"
out, _ := Client.GetByKind("pods", "", "")
if out != expects {
t.Errorf("%s != %s", out, expects)
}
}
...@@ -10,3 +10,7 @@ type TestRunner struct { ...@@ -10,3 +10,7 @@ type TestRunner struct {
func (r TestRunner) Get(stdin []byte, ns string) ([]byte, error) { func (r TestRunner) Get(stdin []byte, ns string) ([]byte, error) {
return r.out, r.err return r.out, r.err
} }
func (r TestRunner) GetByKind(kind, name, ns string) (string, error) {
return string(r.out), r.err
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment