github.com/jdolitsky/cnab-go@v0.7.1-beta1/action/upgrade.go (about)

     1  package action
     2  
     3  import (
     4  	"github.com/deislabs/cnab-go/claim"
     5  	"github.com/deislabs/cnab-go/credentials"
     6  	"github.com/deislabs/cnab-go/driver"
     7  )
     8  
     9  // Upgrade runs an upgrade action
    10  type Upgrade struct {
    11  	Driver driver.Driver
    12  }
    13  
    14  // Run performs the upgrade steps and updates the Claim
    15  func (u *Upgrade) Run(c *claim.Claim, creds credentials.Set, opCfgs ...OperationConfigFunc) error {
    16  	invocImage, err := selectInvocationImage(u.Driver, c)
    17  	if err != nil {
    18  		return err
    19  	}
    20  
    21  	op, err := opFromClaim(claim.ActionUpgrade, stateful, c, invocImage, creds)
    22  	if err != nil {
    23  		return err
    24  	}
    25  
    26  	err = OperationConfigs(opCfgs).ApplyConfig(op)
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	opResult, err := u.Driver.Run(op)
    32  	outputErrors := setOutputsOnClaim(c, opResult.Outputs)
    33  
    34  	if err != nil {
    35  		c.Update(claim.ActionUpgrade, claim.StatusFailure)
    36  		c.Result.Message = err.Error()
    37  		return err
    38  	}
    39  	c.Update(claim.ActionUpgrade, claim.StatusSuccess)
    40  
    41  	return outputErrors
    42  }