diff --git a/pkg/zones/env.go b/pkg/zones/env.go index 2e2ae95..faef2f8 100644 --- a/pkg/zones/env.go +++ b/pkg/zones/env.go @@ -78,14 +78,15 @@ func genEnvZoneNodes(z *Zone) string { return strings.Join(s, " ") } -func getRingZeroGatewayID(z *Zone) int { - var firstNodeID, gatewayID int +func getRingZeroGatewayID(z *Zone) (int, error) { + var gatewayID int + var first *Machine z.ForEachMachine(func(p *Machine) bool { nodeID := p.ID() - if firstNodeID == 0 { - firstNodeID = nodeID + if first == nil { + first = p } if p.IsGateway() { @@ -95,10 +96,13 @@ func getRingZeroGatewayID(z *Zone) int { return gatewayID != 0 }) - switch { - case gatewayID == 0: - return firstNodeID - default: - return gatewayID + if gatewayID == 0 { + gatewayID = first.ID() + + if err := first.SetGateway(true); err != nil { + return gatewayID, err + } } + + return gatewayID, nil }