github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/release/rollback.go (about)

     1  package release
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/helmwave/helmwave/pkg/helper"
     8  )
     9  
    10  func (rel *config) Rollback(ctx context.Context, version int) (err error) {
    11  	ctx = helper.ContextWithReleaseUniq(ctx, rel.Uniq())
    12  
    13  	// Run hooks
    14  	err = rel.Lifecycle.RunPreRollback(ctx)
    15  	if err != nil {
    16  		return
    17  	}
    18  
    19  	defer func() {
    20  		lifecycleErr := rel.Lifecycle.RunPostRollback(ctx)
    21  		if lifecycleErr != nil {
    22  			rel.Logger().Errorf("got an error from postrollback hooks: %v", lifecycleErr)
    23  			if err == nil {
    24  				err = lifecycleErr
    25  			}
    26  		}
    27  	}()
    28  
    29  	client := rel.newRollback()
    30  
    31  	if version > 0 {
    32  		client.Version = version
    33  		rel.Logger().Infof("Be careful! Rollback to %d revision", version)
    34  	}
    35  
    36  	err = client.Run(rel.Name())
    37  	if err != nil {
    38  		err = fmt.Errorf("failed to rollback release %s: %w", rel.Uniq(), err)
    39  	}
    40  
    41  	return
    42  }