From 2451df4e6cb9e6ce91b7d307bbf95791fdd50b6c Mon Sep 17 00:00:00 2001 From: Michail Kargakis Date: Wed, 29 Jun 2016 13:30:00 +0200 Subject: [PATCH] kubectl: simplify Rollbacker interface --- pkg/kubectl/cmd/rollout/rollout_undo.go | 2 +- pkg/kubectl/rollback.go | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/kubectl/cmd/rollout/rollout_undo.go b/pkg/kubectl/cmd/rollout/rollout_undo.go index 6173be6be27..86169ae6c6d 100644 --- a/pkg/kubectl/cmd/rollout/rollout_undo.go +++ b/pkg/kubectl/cmd/rollout/rollout_undo.go @@ -129,7 +129,7 @@ func (o *UndoOptions) CompleteUndo(f *cmdutil.Factory, cmd *cobra.Command, out i func (o *UndoOptions) RunUndo() error { allErrs := []error{} for ix, info := range o.Infos { - result, err := o.Rollbackers[ix].Rollback(info.Namespace, info.Name, nil, o.ToRevision, info.Object) + result, err := o.Rollbackers[ix].Rollback(info.Object, nil, o.ToRevision) if err != nil { allErrs = append(allErrs, cmdutil.AddSourceToErr("undoing", info.Source, err)) continue diff --git a/pkg/kubectl/rollback.go b/pkg/kubectl/rollback.go index 2e4f92b3050..7e59ac73f64 100644 --- a/pkg/kubectl/rollback.go +++ b/pkg/kubectl/rollback.go @@ -33,7 +33,7 @@ import ( // Rollbacker provides an interface for resources that can be rolled back. type Rollbacker interface { - Rollback(namespace, name string, updatedAnnotations map[string]string, toRevision int64, obj runtime.Object) (string, error) + Rollback(obj runtime.Object, updatedAnnotations map[string]string, toRevision int64) (string, error) } func RollbackerFor(kind unversioned.GroupKind, c client.Interface) (Rollbacker, error) { @@ -48,13 +48,16 @@ type DeploymentRollbacker struct { c client.Interface } -func (r *DeploymentRollbacker) Rollback(namespace, name string, updatedAnnotations map[string]string, toRevision int64, obj runtime.Object) (string, error) { - d := obj.(*extensions.Deployment) +func (r *DeploymentRollbacker) Rollback(obj runtime.Object, updatedAnnotations map[string]string, toRevision int64) (string, error) { + d, ok := obj.(*extensions.Deployment) + if !ok { + return "", fmt.Errorf("passed object is not a Deployment: %#v", obj) + } if d.Spec.Paused { - return "", fmt.Errorf("you cannot rollback a paused deployment; resume it first with 'kubectl rollout resume' and try again") + return "", fmt.Errorf("you cannot rollback a paused deployment; resume it first with 'kubectl rollout resume deployment/%s' and try again", d.Name) } deploymentRollback := &extensions.DeploymentRollback{ - Name: name, + Name: d.Name, UpdatedAnnotations: updatedAnnotations, RollbackTo: extensions.RollbackConfig{ Revision: toRevision, @@ -63,16 +66,16 @@ func (r *DeploymentRollbacker) Rollback(namespace, name string, updatedAnnotatio result := "" // Get current events - events, err := r.c.Events(namespace).List(api.ListOptions{}) + events, err := r.c.Events(d.Namespace).List(api.ListOptions{}) if err != nil { return result, err } // Do the rollback - if err := r.c.Extensions().Deployments(namespace).Rollback(deploymentRollback); err != nil { + if err := r.c.Extensions().Deployments(d.Namespace).Rollback(deploymentRollback); err != nil { return result, err } // Watch for the changes of events - watch, err := r.c.Events(namespace).Watch(api.ListOptions{Watch: true, ResourceVersion: events.ResourceVersion}) + watch, err := r.c.Events(d.Namespace).Watch(api.ListOptions{Watch: true, ResourceVersion: events.ResourceVersion}) if err != nil { return result, err }