1
0
Fork 0

chore: unify naming for node related types

This commit is contained in:
Arthur K. 2026-01-18 01:08:52 +03:00
parent b8cde30581
commit 6b170e4c5a
Signed by: wzray
GPG key ID: B97F30FDC4636357
12 changed files with 72 additions and 53 deletions

View file

@ -48,10 +48,10 @@ func parseState(state types.HostState) (string, []byte) {
var builder strings.Builder
for _, d := range state.Domains {
builder.WriteString(fmt.Sprintf("%s %s\n", state.Endpoint, d))
builder.WriteString(fmt.Sprintf("%s %s\n", state.Address, d))
}
return hostsDir + state.Name, []byte(builder.String())
return hostsDir + state.Hostname, []byte(builder.String())
}
func (r *Role) OnStartup(ctx context.Context) error {
@ -76,15 +76,15 @@ func (r *Role) OnStartup(ctx context.Context) error {
func (r *Role) syncFromRegistry() {
for _, n := range r.state.Registry.ByRole(types.HostRole) {
state, err := client.Get[types.HostState](n.Address, types.PathHostDns)
state, err := client.Get[types.HostState](n.Endpoint, types.PathHostDns)
if err != nil {
log.Warn().Str("name", n.Name).Err(err).Msg("unable to get host config")
log.Warn().Str("name", n.Hostname).Err(err).Msg("unable to get host config")
continue
}
filename, data := parseState(*state)
if err := r.updateDnsmasq(filename, data); err != nil {
log.Warn().Str("name", n.Name).Err(err).Msg("unable to update dnsmasq")
log.Warn().Str("name", n.Hostname).Err(err).Msg("unable to update dnsmasq")
continue
}
}

View file

@ -16,11 +16,11 @@ import (
)
type Role struct {
state *state.RuntimeState
config config.HostConfig
state *state.RuntimeState
config config.HostConfig
client *traefikClient
tasksGroup sync.WaitGroup
client *traefikClient
tasksGroup sync.WaitGroup
externalDomains []string // TODO: i don't like hardcoding external/internal logic here
internalDomains []string
@ -37,15 +37,15 @@ func New(state *state.RuntimeState, config config.HostConfig) *Role {
func (r *Role) sendUpdate(domains []string, role types.Role) {
state := types.HostState{
Domains: domains,
Name: r.state.Self.Name,
Endpoint: r.state.Self.Address,
Hostname: r.state.Self.Hostname,
Address: r.state.Self.Endpoint,
}
for _, node := range r.state.Registry.ByRole(role) {
r.tasksGroup.Go(func() {
logger := log.With().Str("name", node.Name).Logger()
logger := log.With().Str("name", node.Hostname).Logger()
logger.Debug().Msg("sending update")
if _, err := client.Post[any](node.Address, types.PathDnsCallback, state); err != nil {
if _, err := client.Post[any](node.Endpoint, types.PathDnsCallback, state); err != nil {
logger.Warn().Err(err).Msg("unable to send dns info")
} else {
logger.Debug().Msg("update sent")
@ -87,8 +87,8 @@ func (r *Role) onCallback(w http.ResponseWriter, req *http.Request) {
func (r *Role) getInternal() (types.HostState, error) {
return types.HostState{
Domains: r.internalDomains,
Endpoint: r.config.IpAddress,
Name: r.state.Self.Name,
Address: r.config.IpAddress,
Hostname: r.state.Self.Hostname,
}, nil
}

View file

@ -50,7 +50,7 @@ func (r *Role) OnShutdown() error {
func (r *Role) notify(path types.Path, v any) {
for _, n := range r.state.Registry.Nodes() {
addr := n.Address
addr := n.Endpoint
r.tasksGroup.Go(func() {
client.Post[any](addr, path, v)
})
@ -68,17 +68,17 @@ func (r *Role) onJoin(node types.Node) ([]types.Node, error) {
}
func (r *Role) onLeave(node types.Node) (bool, error) {
if err := r.state.Registry.RemoveNode(node.Name); err != nil {
if err := r.state.Registry.RemoveNode(node.Hostname); err != nil {
return false, err
}
r.notify(types.PathNodeLeave, node.Name)
r.notify(types.PathNodeLeave, node.Hostname)
return true, nil
}
func (r *Role) onKeepAlive(node types.Node) (bool, error) {
if ok := r.state.Registry.Exists(node.Name); !ok {
if ok := r.state.Registry.Exists(node.Hostname); !ok {
_, err := r.onJoin(node)
return true, err
}

View file

@ -33,14 +33,14 @@ func newObserver(
func (o *observer) pollNodes(ctx context.Context, onLeave func(types.Node) error) {
for _, n := range o.state.Registry.Nodes() {
name := n.Name
name := n.Hostname
logger := log.With().Str("name", name).Logger()
logger.Debug().Msg("checking node")
delay := time.Duration(o.backoff)
alive := false
for i := o.backoffCount; i > 0; i-- {
_, err := client.Get[any](n.Address, types.PathNodeHealthcheck)
_, err := client.Get[any](n.Endpoint, types.PathNodeHealthcheck)
if err == nil {
logger.Debug().Msg("node is alive")

View file

@ -29,10 +29,10 @@ func New(state *state.RuntimeState, config config.NodeConfig) *Role {
func (r *Role) Join(bootstrap string) error {
masters := make(map[string]struct{})
for _, node := range r.state.Registry.ByRole(types.MasterRole) {
if node.Name == r.state.Self.Name {
if node.Hostname == r.state.Self.Hostname {
continue
}
masters[node.Address] = struct{}{}
masters[node.Endpoint] = struct{}{}
}
if bootstrap != "" {
masters[bootstrap] = struct{}{}
@ -69,10 +69,10 @@ func (r *Role) Leave() error {
sent := false
for _, m := range masters {
logger := log.With().Str("name", m.Name).Logger()
logger := log.With().Str("name", m.Hostname).Logger()
logger.Debug().Msg("sending leave message")
_, err := client.Post[any](m.Address, types.PathMasterLeave, r.state.Self)
_, err := client.Post[any](m.Endpoint, types.PathMasterLeave, r.state.Self)
if err != nil {
logger.Debug().Err(err).Msg("unable to send leave message")
continue
@ -114,10 +114,10 @@ func (r *Role) keepaliveFunc(ctx context.Context) func() {
sent := false
for _, m := range masters {
logger := log.With().Str("name", m.Name).Logger()
logger := log.With().Str("name", m.Hostname).Logger()
logger.Debug().Msg("sending keepalive packet")
if _, err := client.Post[any](m.Address, types.PathMasterKeepalive, r.state.Self); err != nil {
if _, err := client.Post[any](m.Endpoint, types.PathMasterKeepalive, r.state.Self); err != nil {
continue
} else {
logger.Debug().Msg("keepalive packet sent")
@ -151,7 +151,7 @@ func (r *Role) onJoin(node types.Node) (bool, error) {
}
func (r *Role) onLeave(node types.Node) (bool, error) {
if err := r.state.Registry.RemoveNode(node.Name); err != nil {
if err := r.state.Registry.RemoveNode(node.Hostname); err != nil {
return false, err
}
return true, nil