package children import ( "context" "fmt" "isle/bootstrap" "isle/daemon/daecommon" "code.betamike.com/micropelago/pmux/pmuxlib" ) func (c *Children) newPmuxConfig( ctx context.Context, garageRPCSecret, binDirPath string, daemonConfig daecommon.Config, garageAdminToken string, hostBootstrap bootstrap.Bootstrap, ) ( pmuxlib.Config, error, ) { nebulaPmuxProcConfig, err := nebulaPmuxProcConfig( c.runtimeDirPath, binDirPath, daemonConfig, hostBootstrap, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf("generating nebula config: %w", err) } dnsmasqPmuxProcConfig, err := dnsmasqPmuxProcConfig( c.logger, c.runtimeDirPath, binDirPath, daemonConfig, hostBootstrap, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf( "generating dnsmasq config: %w", err, ) } garagePmuxProcConfigs, err := garagePmuxProcConfigs( ctx, c.logger, garageRPCSecret, c.runtimeDirPath, binDirPath, daemonConfig, garageAdminToken, hostBootstrap, ) if err != nil { return pmuxlib.Config{}, fmt.Errorf( "generating garage children configs: %w", err, ) } pmuxProcConfigs := garagePmuxProcConfigs pmuxProcConfigs["nebula"] = nebulaPmuxProcConfig pmuxProcConfigs["dnsmasq"] = dnsmasqPmuxProcConfig return pmuxlib.Config{ Processes: pmuxProcConfigs, }, nil } func (c *Children) postPmuxInit( ctx context.Context, daemonConfig daecommon.Config, garageAdminToken string, 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, garageAdminToken, hostBootstrap, ) if err != nil { return fmt.Errorf("waiting for garage to start: %w", err) } return nil }