Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NET-1986: Only report online hosts. #3370

Merged
merged 2 commits into from
Mar 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions logic/extpeers.go
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,27 @@ func GetAllExtClients() ([]models.ExtClient, error) {
return clients, nil
}

// GetAllExtClientsWithStatus - returns all external clients with
// given status.
func GetAllExtClientsWithStatus(status models.NodeStatus) ([]models.ExtClient, error) {
extClients, err := GetAllExtClients()
if err != nil {
return nil, err
}

var validExtClients []models.ExtClient
for _, extClient := range extClients {
nodes := []models.Node{extClient.ConvertToStaticNode()}
AddStatusToNodes(nodes)

if nodes[0].Status == status {
validExtClients = append(validExtClients, extClient)
}
}

return validExtClients, nil
}

// ToggleExtClientConnectivity - enables or disables an ext client
func ToggleExtClientConnectivity(client *models.ExtClient, enable bool) (models.ExtClient, error) {
update := models.CustomExtClient{
Expand Down
27 changes: 27 additions & 0 deletions logic/hosts.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,33 @@ func GetAllHosts() ([]models.Host, error) {
return currHosts, nil
}

// GetAllHostsWithStatus - returns all hosts with at least one
// node with given status.
func GetAllHostsWithStatus(status models.NodeStatus) ([]models.Host, error) {
hosts, err := GetAllHosts()
if err != nil {
return nil, err
}

var validHosts []models.Host
for _, host := range hosts {
if len(host.Nodes) == 0 {
continue
}

nodes := AddStatusToNodes(GetHostNodes(&host))

for _, node := range nodes {
if node.Status == status {
validHosts = append(validHosts, host)
break
}
}
}

return validHosts, nil
}

// GetAllHostsAPI - get's all the hosts in an API usable format
func GetAllHostsAPI(hosts []models.Host) []models.ApiHost {
apiHosts := []models.ApiHost{}
Expand Down
5 changes: 3 additions & 2 deletions pro/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package pro

import (
"encoding/base64"
"github.com/gravitl/netmaker/models"

"github.com/gravitl/netmaker/logic"
)
Expand All @@ -26,11 +27,11 @@ func base64decode(input string) []byte {

func getCurrentServerUsage() (limits Usage) {
limits.SetDefaults()
hosts, hErr := logic.GetAllHosts()
hosts, hErr := logic.GetAllHostsWithStatus(models.OnlineSt)
if hErr == nil {
limits.Hosts = len(hosts)
}
clients, cErr := logic.GetAllExtClients()
clients, cErr := logic.GetAllExtClientsWithStatus(models.OnlineSt)
if cErr == nil {
limits.Clients = len(clients)
}
Expand Down