mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
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:
commit
58dc3ba31d
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user