Skip to content

Commit

Permalink
Merge pull request #34 from buildtool/missing-deployment
Browse files Browse the repository at this point in the history
fix: missing deployment handling
  • Loading branch information
argoyle authored Feb 9, 2020
2 parents ec74e47 + ae55880 commit 323bfd3
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
8 changes: 5 additions & 3 deletions pkg/kubectl/kubectl.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,13 @@ func (k kubectl) Cleanup() {

func (k kubectl) DeploymentExists(name string) bool {
args := k.defaultArgs()
args = append(args, "get", "deployment", name)
args = append(args, "get", "deployment", name, "--ignore-not-found")
_, _ = fmt.Fprintf(k.out, "kubectl %s\n", strings.Join(args, " "))
c := newKubectlCmd(os.Stdin, k.out, k.eout)
buffer := bytes.Buffer{}
c := newKubectlCmd(os.Stdin, &buffer, &buffer)
c.SetArgs(args)
return c.Execute() == nil
_ = c.Execute()
return buffer.Len() > 0
}

func (k kubectl) RolloutStatus(name, timeout string) bool {
Expand Down
31 changes: 20 additions & 11 deletions pkg/kubectl/kubectl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,15 +108,19 @@ func TestKubectl_DeploymentExistsTrue(t *testing.T) {
eout := &bytes.Buffer{}
calls = [][]string{}
cmdError = nil
o := `NAME READY UP-TO-DATE AVAILABLE AGE
api 1/1 1 1 2d11h
`
cmdOut = &o
newKubectlCmd = mockCmd

k := New(&config.Environment{Context: "missing", Namespace: "default"}, out, eout)

result := k.DeploymentExists("image")
assert.True(t, result)
assert.Equal(t, 1, len(calls))
assert.Equal(t, []string{"get", "deployment", "image", "--context", "missing", "--namespace", "default"}, calls[0])
assert.Equal(t, "kubectl --context missing --namespace default get deployment image\n", out.String())
assert.Equal(t, []string{"get", "deployment", "image", "--context", "missing", "--namespace", "default", "--ignore-not-found"}, calls[0])
assert.Equal(t, "kubectl --context missing --namespace default get deployment image --ignore-not-found\n", out.String())
assert.Equal(t, "", eout.String())
}

Expand All @@ -133,8 +137,8 @@ func TestKubectl_DeploymentExistsFalse(t *testing.T) {
result := k.DeploymentExists("image")
assert.False(t, result)
assert.Equal(t, 1, len(calls))
assert.Equal(t, []string{"get", "deployment", "image", "--context", "missing", "--namespace", "default"}, calls[0])
assert.Equal(t, "kubectl --context missing --namespace default get deployment image\n", out.String())
assert.Equal(t, []string{"get", "deployment", "image", "--context", "missing", "--namespace", "default", "--ignore-not-found"}, calls[0])
assert.Equal(t, "kubectl --context missing --namespace default get deployment image --ignore-not-found\n", out.String())
assert.Equal(t, "", eout.String())
}

Expand Down Expand Up @@ -297,7 +301,7 @@ Name: gpe-core
Namespace: default
Events: <none>
`
events = &e
cmdOut = &e

k := New(&config.Environment{Context: "missing", Namespace: "default"}, out, eout)

Expand Down Expand Up @@ -326,7 +330,7 @@ Events:
Normal ScalingReplicaSet 61s deployment-controller Scaled up replica set gpe-core-c8798ff88 to 1
Normal ScalingReplicaSet 61s deployment-controller Scaled down replica set gpe-core-5cb459ff7d to 0
`
events = &e
cmdOut = &e

k := New(&config.Environment{Context: "missing", Namespace: "default"}, out, eout)

Expand Down Expand Up @@ -368,7 +372,7 @@ Name: gpe-core
Namespace: default
Events: <none>
`
events = &e
cmdOut = &e

k := New(&config.Environment{Context: "missing", Namespace: "default"}, out, eout)

Expand Down Expand Up @@ -396,7 +400,7 @@ Events:
Normal Created 8s (x4 over 57s) kubelet, some-ip-somewhere Created container
Normal Started 8s (x4 over 57s) kubelet, some-ip-somewhere Started container
Warning BackOff 8s (x5 over 54s) kubelet, some-ip-somewhere Back-off restarting failed container`
events = &e
cmdOut = &e

k := New(&config.Environment{Context: "missing", Namespace: "default"}, out, eout)

Expand All @@ -410,13 +414,14 @@ Events:

var calls [][]string
var cmdError *string
var events *string
var cmdOut *string
var fatal = false

func mockCmd(_ io.Reader, out, _ io.Writer) *cobra.Command {
var ctx, ns, file *string
var timeout *time.Duration
var showEvents *bool
var ignoreNotFound *bool
var selector *string
var kubeconfig *string

Expand All @@ -442,6 +447,9 @@ func mockCmd(_ io.Reader, out, _ io.Writer) *cobra.Command {
if *showEvents {
call = append(call, "--show-events", "true")
}
if *ignoreNotFound {
call = append(call, "--ignore-not-found")
}
if *selector != "" {
call = append(call, "--selector", fmt.Sprintf("%v", *selector))
}
Expand All @@ -455,8 +463,8 @@ func mockCmd(_ io.Reader, out, _ io.Writer) *cobra.Command {
if cmdError != nil {
return errors.New(*cmdError)
}
if events != nil {
_, _ = out.Write([]byte(*events))
if cmdOut != nil {
_, _ = out.Write([]byte(*cmdOut))
}
return nil
},
Expand All @@ -467,6 +475,7 @@ func mockCmd(_ io.Reader, out, _ io.Writer) *cobra.Command {
file = cmd.Flags().StringP("filename", "f", "", "")
timeout = cmd.Flags().DurationP("timeout", "t", 0*time.Second, "")
showEvents = cmd.Flags().BoolP("show-events", "", false, "")
ignoreNotFound = cmd.Flags().BoolP("ignore-not-found", "", false, "")
selector = cmd.Flags().StringP("selector", "l", "", "")
kubeconfig = cmd.Flags().StringP("kubeconfig", "", "", "")

Expand Down

0 comments on commit 323bfd3

Please sign in to comment.