feat: Add local configuration option for DERP mapping (#3996)

This allows entirely airgapped geodistributed deployments of Coder!
This commit is contained in:
Kyle Carberry
2022-09-11 16:45:49 -05:00
committed by GitHub
parent 6e20f9c729
commit 5b5bc1da56
5 changed files with 81 additions and 30 deletions

View File

@ -268,6 +268,7 @@ func (c *Conn) SetNodeCallback(callback func(node *Node)) {
case <-c.closed:
return
case node := <-queue:
c.logger.Debug(context.Background(), "send node callback", slog.F("node", node))
callback(node)
}
}
@ -299,6 +300,8 @@ func (c *Conn) SetNodeCallback(callback func(node *Node)) {
func (c *Conn) SetDERPMap(derpMap *tailcfg.DERPMap) {
c.mutex.Lock()
defer c.mutex.Unlock()
c.netMap.DERPMap = derpMap
c.logger.Debug(context.Background(), "updating derp map", slog.F("derp_map", derpMap))
c.wireguardEngine.SetDERPMap(derpMap)
}
@ -340,6 +343,9 @@ func (c *Conn) UpdateNodes(nodes []*Node) error {
existingNode, ok := peerMap[node.ID]
if ok {
peerNode.Created = existingNode.Created
c.logger.Debug(context.Background(), "updating peer", slog.F("peer", peerNode))
} else {
c.logger.Debug(context.Background(), "adding peer", slog.F("peer", peerNode))
}
peerMap[node.ID] = peerNode
}