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  }