mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-06 21:24:16 +08:00
NET-1986: Only report online hosts. (#3370)
* feat(go): only report online hosts. * feat(go): only report online external clients.
This commit is contained in:
parent
4105a985e4
commit
346f09ce39
3 changed files with 51 additions and 2 deletions
|
@ -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{
|
||||
|
|
|
@ -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{}
|
||||
|
|
|
@ -5,6 +5,7 @@ package pro
|
|||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
|
||||
"github.com/gravitl/netmaker/logic"
|
||||
)
|
||||
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue