78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
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
|
|
}
|