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 }