mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-13 00:24:31 +08:00
fetch related hosts on relay creation to enable proxy
This commit is contained in:
parent
beb0b1adf2
commit
01d28e6483
3 changed files with 34 additions and 24 deletions
|
@ -124,23 +124,17 @@ func createHostRelay(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Log(1, r.Header.Get("user"), "created relay on host", relay.HostID)
|
logger.Log(1, r.Header.Get("user"), "created relay on host", relay.HostID)
|
||||||
// for _, relayedHost := range relayedHosts {
|
go func(relayHostID string) {
|
||||||
|
relatedhosts := logic.GetRelatedHosts(relayHostID)
|
||||||
// err = mq.PublishSingleHostUpdate(&relayedHost)
|
for _, relatedHost := range relatedhosts {
|
||||||
// if err != nil {
|
relatedHost.ProxyEnabled = true
|
||||||
// logger.Log(1, "error sending update to relayed host ", relayedHost.ID.String(), ": ", err.Error())
|
logic.UpsertHost(&relatedHost)
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
// // publish host update for relayhost
|
|
||||||
// err = mq.PublishSingleHostUpdate(relayHost)
|
|
||||||
// if err != nil {
|
|
||||||
// logger.Log(1, "error sending update to relay host ", relayHost.ID.String(), ": ", err.Error())
|
|
||||||
// }
|
|
||||||
go func() {
|
|
||||||
if err := mq.PublishPeerUpdate(); err != nil {
|
if err := mq.PublishPeerUpdate(); err != nil {
|
||||||
logger.Log(0, "fail to publish peer update: ", err.Error())
|
logger.Log(0, "fail to publish peer update: ", err.Error())
|
||||||
}
|
}
|
||||||
}()
|
|
||||||
|
}(relay.HostID)
|
||||||
|
|
||||||
apiHostData := relayHost.ConvertNMHostToAPI()
|
apiHostData := relayHost.ConvertNMHostToAPI()
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
@ -169,16 +163,6 @@ func deleteHostRelay(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Log(1, r.Header.Get("user"), "deleted relay host", hostid)
|
logger.Log(1, r.Header.Get("user"), "deleted relay host", hostid)
|
||||||
// for _, relayedHost := range relayedHosts {
|
|
||||||
// err = mq.PublishSingleHostUpdate(&relayedHost)
|
|
||||||
// if err != nil {
|
|
||||||
// logger.Log(1, "error sending update to relayed host ", relayedHost.ID.String(), ": ", err.Error())
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// err = mq.PublishSingleHostUpdate(relayHost)
|
|
||||||
// if err != nil {
|
|
||||||
// logger.Log(1, "error sending update to relayed host ", relayHost.ID.String(), ": ", err.Error())
|
|
||||||
// }
|
|
||||||
go func() {
|
go func() {
|
||||||
if err := mq.PublishPeerUpdate(); err != nil {
|
if err := mq.PublishPeerUpdate(); err != nil {
|
||||||
logger.Log(0, "fail to publish peer update: ", err.Error())
|
logger.Log(0, "fail to publish peer update: ", err.Error())
|
||||||
|
|
|
@ -295,3 +295,26 @@ func GetHostNetworks(hostID string) []string {
|
||||||
}
|
}
|
||||||
return nets
|
return nets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetRelatedHosts - fetches related hosts of a given host
|
||||||
|
func GetRelatedHosts(hostID string) []models.Host {
|
||||||
|
relatedHosts := []models.Host{}
|
||||||
|
networks := GetHostNetworks(hostID)
|
||||||
|
networkMap := make(map[string]struct{})
|
||||||
|
for _, network := range networks {
|
||||||
|
networkMap[network] = struct{}{}
|
||||||
|
}
|
||||||
|
hosts, err := GetAllHosts()
|
||||||
|
if err == nil {
|
||||||
|
for _, host := range hosts {
|
||||||
|
networks := GetHostNetworks(host.ID.String())
|
||||||
|
for _, network := range networks {
|
||||||
|
if _, ok := networkMap[network]; ok {
|
||||||
|
relatedHosts = append(relatedHosts, host)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return relatedHosts
|
||||||
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ func CreateRelay(relay models.RelayRequest) ([]models.Node, models.Node, error)
|
||||||
return returnnodes, node, nil
|
return returnnodes, node, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreateHostRelay - creates a host relay
|
||||||
func CreateHostRelay(relay models.HostRelayRequest) (relayHost *models.Host, relayedHosts []models.Host, err error) {
|
func CreateHostRelay(relay models.HostRelayRequest) (relayHost *models.Host, relayedHosts []models.Host, err error) {
|
||||||
|
|
||||||
relayHost, err = GetHost(relay.HostID)
|
relayHost, err = GetHost(relay.HostID)
|
||||||
|
@ -69,6 +70,7 @@ func CreateHostRelay(relay models.HostRelayRequest) (relayHost *models.Host, rel
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetRelayedHosts - updates the relayed hosts status
|
||||||
func SetRelayedHosts(setRelayed bool, relayHostID string, relayedHostIDs []string) []models.Host {
|
func SetRelayedHosts(setRelayed bool, relayHostID string, relayedHostIDs []string) []models.Host {
|
||||||
var relayedHosts []models.Host
|
var relayedHosts []models.Host
|
||||||
for _, relayedHostID := range relayedHostIDs {
|
for _, relayedHostID := range relayedHostIDs {
|
||||||
|
@ -133,6 +135,7 @@ func GetRelayedNodes(relayNode *models.Node) ([]models.Node, error) {
|
||||||
return returnnodes, nil
|
return returnnodes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetRelayedHosts - gets the relayed hosts of a relay host
|
||||||
func GetRelayedHosts(relayHost *models.Host) []models.Host {
|
func GetRelayedHosts(relayHost *models.Host) []models.Host {
|
||||||
relayedHosts := []models.Host{}
|
relayedHosts := []models.Host{}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue