package daemon import ( "context" "fmt" "isle/bootstrap" "code.betamike.com/micropelago/pmux/pmuxlib" ) func (c *Children) newPmuxConfig( binDirPath string, daemonConfig Config, hostBootstrap bootstrap.Bootstrap, ) (pmuxlib.Config, error) { nebulaPmuxProcConfig, err := nebulaPmuxProcConfig( c.opts.EnvVars.RuntimeDirPath, binDirPath, daemonConfig, hostBootstrap, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf("generating nebula config: %w", err) } dnsmasqPmuxProcConfig, err := dnsmasqPmuxProcConfig( c.opts.EnvVars.RuntimeDirPath, binDirPath, hostBootstrap, daemonConfig, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf( "generating dnsmasq config: %w", err, ) } garagePmuxProcConfigs, err := garagePmuxProcConfigs( c.logger, c.opts.EnvVars.RuntimeDirPath, binDirPath, daemonConfig, hostBootstrap, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf( "generating garage children configs: %w", err, ) } return pmuxlib.Config{ Processes: append( []pmuxlib.ProcessConfig{ nebulaPmuxProcConfig, dnsmasqPmuxProcConfig, }, garagePmuxProcConfigs..., ), }, nil } func (c *Children) postPmuxInit( ctx context.Context, daemonConfig Config, hostBootstrap bootstrap.Bootstrap, ) error { c.logger.Info(ctx, "Waiting for nebula VPN to come online") if err := waitForNebula(ctx, c.logger, hostBootstrap); err != nil { return fmt.Errorf("waiting for nebula to start: %w", err) } c.logger.Info(ctx, "Waiting for garage instances to come online") err := waitForGarage(ctx, c.logger, daemonConfig, hostBootstrap) if err != nil { return fmt.Errorf("waiting for garage to start: %w", err) } return nil }