Skip to content

Commit

Permalink
fix: inconsistent status command output
Browse files Browse the repository at this point in the history
Signed-off-by: Hui Kang <[email protected]>
  • Loading branch information
Hui Kang committed Aug 19, 2021
1 parent 0b70775 commit 03a8142
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
19 changes: 12 additions & 7 deletions pkg/kubectl-argo-rollouts/cmd/status/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ func NewCmdStatus(o *options.ArgoRolloutsOptions) *cobra.Command {
}

if !statusOptions.Watch {
fmt.Fprintln(o.Out, ri.Status)
if ri.Status == "Healthy" || ri.Status == "Degraded" {
fmt.Fprintln(o.Out, ri.Status)
} else {
fmt.Fprintf(o.Out, "%s - %s\n", ri.Status, ri.Message)
}
} else {
rolloutUpdates := make(chan *rollout.RolloutInfo)
defer close(rolloutUpdates)
Expand All @@ -68,16 +72,17 @@ func NewCmdStatus(o *options.ArgoRolloutsOptions) *cobra.Command {
go controller.Run(ctx)
statusOptions.WatchStatus(ctx.Done(), rolloutUpdates)

finalRi, err := controller.GetRolloutInfo()
// the final rollout info after timeout or reach Healthy or Degraded status
ri, err = controller.GetRolloutInfo()
if err != nil {
return err
}
}

if finalRi.Status == "Degraded" {
return fmt.Errorf("The rollout is in a degraded state with message: %s", finalRi.Message)
} else if finalRi.Status != "Healthy" {
return fmt.Errorf("Rollout progress exceeded timeout")
}
if ri.Status == "Degraded" {
return fmt.Errorf("The rollout is in a degraded state with message: %s", ri.Message)
} else if ri.Status != "Healthy" && statusOptions.Watch {
return fmt.Errorf("Rollout status watch exceeded timeout")
}

return nil
Expand Down
12 changes: 6 additions & 6 deletions pkg/kubectl-argo-rollouts/cmd/status/status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func TestStatusBlueGreenRollout(t *testing.T) {
assert.NoError(t, err)
stdout := o.Out.(*bytes.Buffer).String()
stderr := o.ErrOut.(*bytes.Buffer).String()
assert.Equal(t, "Paused\n", stdout)
assert.Equal(t, "Paused - BlueGreenPause\n", stdout)
assert.Empty(t, stderr)
}

Expand All @@ -81,11 +81,11 @@ func TestStatusInvalidRollout(t *testing.T) {
cmd.SetArgs([]string{rolloutObjs.Rollouts[0].Name, noWatch})
err := cmd.Execute()

assert.NoError(t, err)
assert.Error(t, err)
stdout := o.Out.(*bytes.Buffer).String()
stderr := o.ErrOut.(*bytes.Buffer).String()
assert.Equal(t, "Degraded\n", stdout)
assert.Empty(t, stderr)
assert.Equal(t, "Error: The rollout is in a degraded state with message: InvalidSpec: The Rollout \"rollout-invalid\" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{\"app\":\"doesnt-match\"}: `selector` does not match template `labels`\n", stderr)
}

func TestStatusAbortedRollout(t *testing.T) {
Expand All @@ -99,11 +99,11 @@ func TestStatusAbortedRollout(t *testing.T) {
cmd.SetArgs([]string{rolloutObjs.Rollouts[0].Name, noWatch})
err := cmd.Execute()

assert.NoError(t, err)
assert.Error(t, err)
stdout := o.Out.(*bytes.Buffer).String()
stderr := o.ErrOut.(*bytes.Buffer).String()
assert.Equal(t, "Degraded\n", stdout)
assert.Empty(t, stderr)
assert.Equal(t, "Error: The rollout is in a degraded state with message: RolloutAborted: metric \"web\" assessed Failed due to failed (1) > failureLimit (0)\n", stderr)
}

func TestWatchAbortedRollout(t *testing.T) {
Expand Down Expand Up @@ -139,5 +139,5 @@ func TestWatchTimeoutRollout(t *testing.T) {
stdout := o.Out.(*bytes.Buffer).String()
stderr := o.ErrOut.(*bytes.Buffer).String()
assert.Equal(t, "Paused - BlueGreenPause\n", stdout)
assert.Equal(t, "Error: Rollout progress exceeded timeout\n", stderr)
assert.Equal(t, "Error: Rollout status watch exceeded timeout\n", stderr)
}

0 comments on commit 03a8142

Please sign in to comment.