diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index fdd83b8bba5..d1ca26b3e4b 100644 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -2043,7 +2043,7 @@ run_deployment_tests() { kubectl apply -f hack/testdata/deployment-revision2.yaml "${kube_flags[@]}" kube::test::get_object_assert deployment.extensions "{{range.items}}{{$deployment_image_field}}:{{end}}" "${IMAGE_DEPLOYMENT_R2}:" # Rollback to revision 1 with dry-run - should be no-op - kubectl rollout undo deployment nginx --to-revision=1 --dry-run=true "${kube_flags[@]}" + kubectl rollout undo deployment nginx --dry-run=true "${kube_flags[@]}" | grep "test-cmd" kube::test::get_object_assert deployment.extensions "{{range.items}}{{$deployment_image_field}}:{{end}}" "${IMAGE_DEPLOYMENT_R2}:" # Rollback to revision 1 kubectl rollout undo deployment nginx --to-revision=1 "${kube_flags[@]}" diff --git a/pkg/kubectl/rollback.go b/pkg/kubectl/rollback.go index 6b6841ce0fa..d86695667a3 100644 --- a/pkg/kubectl/rollback.go +++ b/pkg/kubectl/rollback.go @@ -155,8 +155,8 @@ func simpleDryRun(deployment *extensions.Deployment, c clientset.Interface, toRe revisionToSpec[v] = &rs.Spec.Template } - if len(revisionToSpec) == 0 { - return "No rollout history found.", nil + if len(revisionToSpec) < 2 { + return "", fmt.Errorf("no rollout history found for deployment %q", deployment.Name) } if toRevision > 0 { @@ -180,7 +180,7 @@ func simpleDryRun(deployment *extensions.Deployment, c clientset.Interface, toRe } sliceutil.SortInts64(revisions) - template, _ := revisionToSpec[revisions[len(revisions)-1]] + template, _ := revisionToSpec[revisions[len(revisions)-2]] buf := bytes.NewBuffer([]byte{}) buf.WriteString("\n") internalTemplate := &api.PodTemplateSpec{}