Skip to content

Commit

Permalink
Stop the users from rolling back a paused deployment in kubectl rollo…
Browse files Browse the repository at this point in the history
…ut undo
  • Loading branch information
janetkuo committed Mar 16, 2016
1 parent c412dcb commit 2bd30c7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
9 changes: 8 additions & 1 deletion hack/test-cmd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1287,9 +1287,16 @@ __EOF__
kubectl rollout undo deployment nginx-deployment "${kube_flags[@]}"
sleep 1
kube::test::get_object_assert deployment "{{range.items}}{{$deployment_image_field}}:{{end}}" 'nginx:latest:'
# Pause the deployment
kubectl-with-retry rollout pause deployment nginx-deployment "${kube_flags[@]}"
# A paused deployment cannot be rolled back
! kubectl rollout undo deployment nginx-deployment "${kube_flags[@]}"
# Resume the deployment
kubectl-with-retry rollout resume deployment nginx-deployment "${kube_flags[@]}"
# The resumed deployment can now be rolled back
kubectl rollout undo deployment nginx-deployment "${kube_flags[@]}"
# Clean up
kubectl delete deployment nginx-deployment "${kube_flags[@]}"
kubectl delete rs -l pod-template-hash "${kube_flags[@]}"


######################
Expand Down
4 changes: 4 additions & 0 deletions pkg/kubectl/rollback.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ type DeploymentRollbacker struct {
}

func (r *DeploymentRollbacker) Rollback(namespace, name string, updatedAnnotations map[string]string, toRevision int64, obj runtime.Object) (string, error) {
d := obj.(*extensions.Deployment)
if d.Spec.Paused {
return "", fmt.Errorf("you cannot rollback a paused deployment; resume it first with 'kubectl rollout resume' and try again")
}
deploymentRollback := &extensions.DeploymentRollback{
Name: name,
UpdatedAnnotations: updatedAnnotations,
Expand Down

0 comments on commit 2bd30c7

Please sign in to comment.