github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/terraform/when.go (about) 1 package terraform 2 3 import ( 4 "github.com/go-kit/kit/log" 5 "github.com/go-kit/kit/log/level" 6 "github.com/replicatedhq/ship/pkg/api" 7 "github.com/replicatedhq/ship/pkg/state" 8 "github.com/replicatedhq/ship/pkg/templates" 9 "github.com/spf13/viper" 10 ) 11 12 func (t *ForkTerraformer) evaluateWhen(when string, release api.Release) bool { 13 debug := level.Debug(log.With(t.Logger, "struct", "ForkTerraformer", "method", "execute")) 14 15 return evaluateWhen(when, release, debug, t.Viper, t.StateManager) 16 } 17 18 func (t *DaemonlessTerraformer) evaluateWhen(when string, release api.Release) bool { 19 debug := level.Debug(log.With(t.Logger, "struct", "DaemonlessTerraformer", "method", "execute")) 20 21 return evaluateWhen(when, release, debug, t.Viper, t.StateManager) 22 } 23 24 func evaluateWhen(when string, release api.Release, logger log.Logger, viper *viper.Viper, manager state.Manager) bool { 25 if manager == nil { 26 return true 27 } 28 29 builderBuilder := templates.BuilderBuilder{Logger: logger, Viper: viper, Manager: manager} 30 31 configState, err := manager.CachedState() 32 if err != nil { 33 _ = logger.Log("terraform.when.loadState", err.Error()) 34 } 35 36 currentConfig, err := configState.CurrentConfig() 37 if err != nil { 38 _ = logger.Log("terraform.when.getConfig", err.Error()) 39 } 40 41 fullBuilder, err := builderBuilder.FullBuilder(release.Metadata, release.Spec.Config.V1, currentConfig) 42 if err != nil { 43 _ = logger.Log("terraform.when.buildBuilder", err.Error()) 44 } 45 46 build, err := fullBuilder.Bool(when, true) 47 48 if err != nil { 49 _ = logger.Log("terraform.when.error", err.Error()) 50 // the terraform step should be run if the template function returns an error 51 return true 52 } 53 54 return build 55 }