github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/daemon/constructors.go (about) 1 package daemon 2 3 import ( 4 "github.com/go-kit/kit/log" 5 "github.com/mitchellh/cli" 6 "github.com/replicatedhq/ship/pkg/api" 7 "github.com/replicatedhq/ship/pkg/filetree" 8 "github.com/replicatedhq/ship/pkg/lifecycle" 9 "github.com/replicatedhq/ship/pkg/lifecycle/daemon/daemontypes" 10 "github.com/replicatedhq/ship/pkg/lifecycle/render/config/resolve" 11 "github.com/replicatedhq/ship/pkg/lifecycle/render/planner" 12 "github.com/replicatedhq/ship/pkg/patch" 13 "github.com/replicatedhq/ship/pkg/state" 14 "github.com/replicatedhq/ship/pkg/templates" 15 "github.com/spf13/afero" 16 "github.com/spf13/viper" 17 "go.uber.org/dig" 18 ) 19 20 type OptionalRoutes struct { 21 dig.In 22 V2Router *NavcycleRoutes `optional:"true"` 23 V1Router *V1Routes `optional:"true"` 24 } 25 26 func NewHeadedDaemon( 27 logger log.Logger, 28 v *viper.Viper, 29 webUIFactory WebUIBuilder, 30 routes OptionalRoutes, 31 ) daemontypes.Daemon { 32 return &ShipDaemon{ 33 Logger: log.With(logger, "struct", "daemon"), 34 WebUIFactory: webUIFactory, 35 Viper: v, 36 ExitChan: make(chan error), 37 V1Routes: routes.V1Router, 38 NavcycleRoutes: routes.V2Router, 39 } 40 } 41 42 func NewV2Router( 43 logger log.Logger, 44 stateManager state.Manager, 45 messenger lifecycle.Messenger, 46 helmIntro lifecycle.HelmIntro, 47 helmValues lifecycle.HelmValues, 48 kustomizeIntro lifecycle.KustomizeIntro, 49 kustomizer lifecycle.Kustomizer, 50 terraformer lifecycle.Terraformer, 51 kubectlApply lifecycle.KubectlApply, 52 configRenderer *resolve.APIConfigRenderer, 53 planners planner.Planner, 54 patcher patch.Patcher, 55 renderer lifecycle.Renderer, 56 treeLoader filetree.Loader, 57 builderBuilder *templates.BuilderBuilder, 58 fs afero.Afero, 59 ) *NavcycleRoutes { 60 return &NavcycleRoutes{ 61 Logger: logger, 62 StateManager: stateManager, 63 Planner: planners, 64 Shutdown: make(chan interface{}), 65 TerraformConfirmed: make(chan bool, 1), 66 KubectlConfirmed: make(chan bool, 1), 67 68 Messenger: messenger, 69 HelmIntro: helmIntro, 70 HelmValues: helmValues, 71 KustomizeIntro: kustomizeIntro, 72 Kustomizer: kustomizer, 73 Terraformer: terraformer, 74 KubectlApply: kubectlApply, 75 ConfigRenderer: configRenderer, 76 Patcher: patcher, 77 Renderer: renderer, 78 BuilderBuilder: builderBuilder, 79 StepExecutor: func(d *NavcycleRoutes, step api.Step) error { 80 return d.execute(step) 81 }, 82 TreeLoader: treeLoader, 83 StepProgress: &daemontypes.ProgressMap{}, 84 Fs: fs, 85 } 86 } 87 88 func NewV1Router( 89 v *viper.Viper, 90 renderer *resolve.APIConfigRenderer, 91 stateManager state.Manager, 92 logger log.Logger, 93 ui cli.Ui, 94 fs afero.Afero, 95 treeLoader filetree.Loader, 96 patcher patch.Patcher, 97 ) *V1Routes { 98 return &V1Routes{ 99 Logger: log.With(logger, "routes", "v1"), 100 Fs: fs, 101 UI: ui, 102 StateManager: stateManager, 103 Viper: v, 104 TreeLoader: treeLoader, 105 Patcher: patcher, 106 ConfigSaved: make(chan interface{}, 1), 107 MessageConfirmed: make(chan string, 1), 108 TerraformConfirmed: make(chan bool, 1), 109 KustomizeSaved: make(chan interface{}, 1), 110 ConfigRenderer: renderer, 111 OpenWebConsole: tryOpenWebConsole, 112 } 113 }