Merge pull request #28217 from kargakis/simplify-rollbacker-interface

Automatic merge from submit-queue

kubectl: simplify Rollbacker interface

@kubernetes/kubectl
This commit is contained in:
k8s-merge-robot 2016-07-06 05:23:41 -07:00 committed by GitHub
commit 58dc3ba31d
2 changed files with 12 additions and 9 deletions

View File

@ -129,7 +129,7 @@ func (o *UndoOptions) CompleteUndo(f *cmdutil.Factory, cmd *cobra.Command, out i
func (o *UndoOptions) RunUndo() error { func (o *UndoOptions) RunUndo() error {
allErrs := []error{} allErrs := []error{}
for ix, info := range o.Infos { 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 { if err != nil {
allErrs = append(allErrs, cmdutil.AddSourceToErr("undoing", info.Source, err)) allErrs = append(allErrs, cmdutil.AddSourceToErr("undoing", info.Source, err))
continue continue

View File

@ -33,7 +33,7 @@ import (
// Rollbacker provides an interface for resources that can be rolled back. // Rollbacker provides an interface for resources that can be rolled back.
type Rollbacker interface { 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) { func RollbackerFor(kind unversioned.GroupKind, c client.Interface) (Rollbacker, error) {
@ -48,13 +48,16 @@ type DeploymentRollbacker struct {
c client.Interface c client.Interface
} }
func (r *DeploymentRollbacker) Rollback(namespace, name string, updatedAnnotations map[string]string, toRevision int64, obj runtime.Object) (string, error) { func (r *DeploymentRollbacker) Rollback(obj runtime.Object, updatedAnnotations map[string]string, toRevision int64) (string, error) {
d := obj.(*extensions.Deployment) d, ok := obj.(*extensions.Deployment)
if !ok {
return "", fmt.Errorf("passed object is not a Deployment: %#v", obj)
}
if d.Spec.Paused { 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{ deploymentRollback := &extensions.DeploymentRollback{
Name: name, Name: d.Name,
UpdatedAnnotations: updatedAnnotations, UpdatedAnnotations: updatedAnnotations,
RollbackTo: extensions.RollbackConfig{ RollbackTo: extensions.RollbackConfig{
Revision: toRevision, Revision: toRevision,
@ -63,16 +66,16 @@ func (r *DeploymentRollbacker) Rollback(namespace, name string, updatedAnnotatio
result := "" result := ""
// Get current events // 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 { if err != nil {
return result, err return result, err
} }
// Do the rollback // 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 return result, err
} }
// Watch for the changes of events // 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 { if err != nil {
return result, err return result, err
} }