1
0
Fork 0

feat: use default port for bootstrap master

This commit is contained in:
Arthur K. 2026-01-19 18:42:48 +03:00
parent 8f48ab6491
commit 282e54f831
Signed by: wzray
GPG key ID: B97F30FDC4636357

View file

@ -7,6 +7,7 @@ import (
"os/signal" "os/signal"
"path/filepath" "path/filepath"
"strconv" "strconv"
"strings"
"syscall" "syscall"
"git.wzray.com/homelab/hivemind/internal/config" "git.wzray.com/homelab/hivemind/internal/config"
@ -27,8 +28,8 @@ import (
) )
var ( var (
configFile = "/etc/hivemind/config.toml" configFile = "/etc/hivemind/config.toml"
registryFile = "/var/lib/hivemind/registry" registryFile = "/var/lib/hivemind/registry"
) )
func levelToZerolog(l config.LogLevel) zerolog.Level { func levelToZerolog(l config.LogLevel) zerolog.Level {
@ -64,22 +65,22 @@ func init() {
} }
func main() { func main() {
config, err := config.FromFile(configFile) configuration, err := config.FromFile(configFile)
if err != nil { if err != nil {
log.Fatal().Err(err).Msg("unable to read config file") log.Fatal().Err(err).Msg("unable to read config file")
} }
if err := config.Validate(); err != nil { if err := configuration.Validate(); err != nil {
log.Fatal().Err(err).Msg("invalid configuration") log.Fatal().Err(err).Msg("invalid configuration")
} }
zerolog.SetGlobalLevel(levelToZerolog(config.Node.LogLevel)) zerolog.SetGlobalLevel(levelToZerolog(configuration.Node.LogLevel))
self := types.NewNode( self := types.NewNode(
config.Node.Hostname, configuration.Node.Hostname,
config.Node.Address, configuration.Node.Address,
config.Node.Port, configuration.Node.Port,
config.Roles, configuration.Roles,
) )
filestore := registry.NewFileStorage(registryFile) filestore := registry.NewFileStorage(registryFile)
@ -88,29 +89,29 @@ func main() {
state := state.New(registry, self) state := state.New(registry, self)
nodeRole := node.New(state, config.Node) nodeRole := node.New(state, configuration.Node)
var builder middleware.MiddlewareBuilder var builder middleware.MiddlewareBuilder
middlewares := builder.Prepare() middlewares := builder.Prepare()
client.Init(middlewares) client.Init(middlewares)
listenAddr := fmt.Sprintf("%v:%v", config.Node.ListenOn, config.Node.Port) listenAddr := fmt.Sprintf("%v:%v", configuration.Node.ListenOn, configuration.Node.Port)
server := server.NewServer(listenAddr, middlewares) server := server.NewServer(listenAddr, middlewares)
roles := make([]roles.Role, 0) roles := make([]roles.Role, 0)
roles = append(roles, nodeRole) roles = append(roles, nodeRole)
for _, role := range config.Roles { for _, role := range configuration.Roles {
switch role { switch role {
case types.MasterRole: case types.MasterRole:
role := master.New(state, config.Configs.Master) role := master.New(state, configuration.Configs.Master)
roles = append(roles, role) roles = append(roles, role)
case types.DnsRole: case types.DnsRole:
role := dns.New(state, config.Configs.Dns) role := dns.New(state, configuration.Configs.Dns)
roles = append(roles, role) roles = append(roles, role)
case types.HostRole: case types.HostRole:
role := host.New(state, config.Configs.Host) role := host.New(state, configuration.Configs.Host)
roles = append(roles, role) roles = append(roles, role)
} }
} }
@ -125,7 +126,12 @@ func main() {
serverError <- server.Listen() serverError <- server.Listen()
}() }()
if err := nodeRole.Join(config.Node.BootstrapMaster); err != nil { bootstrapMaster := configuration.Node.BootstrapMaster
if !strings.Contains(bootstrapMaster, ":") {
bootstrapMaster += fmt.Sprintf(":%d", config.DefaultConfig.Node.Port)
}
if err := nodeRole.Join(bootstrapMaster); err != nil {
log.Warn().Err(err).Msg("unable to join") log.Warn().Err(err).Msg("unable to join")
} else { } else {
log.Info().Msg("joined") log.Info().Msg("joined")