2022-11-16 16:38:39 +00:00
|
|
|
package status
|
|
|
|
|
|
|
|
import (
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
2023-05-05 02:02:31 +00:00
|
|
|
"github.com/portainer/portainer/api/internal/endpointutils"
|
2022-11-16 16:38:39 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// NodesCount returns the total node number of all environments
|
|
|
|
func NodesCount(endpoints []portainer.Endpoint) int {
|
|
|
|
nodes := 0
|
|
|
|
for _, env := range endpoints {
|
2023-05-05 02:02:31 +00:00
|
|
|
if !endpointutils.IsEdgeEndpoint(&env) || env.UserTrusted {
|
|
|
|
nodes += countNodes(&env)
|
|
|
|
}
|
2022-11-16 16:38:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return nodes
|
|
|
|
}
|
|
|
|
|
|
|
|
func countNodes(endpoint *portainer.Endpoint) int {
|
|
|
|
if len(endpoint.Snapshots) == 1 {
|
|
|
|
return max(endpoint.Snapshots[0].NodeCount, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(endpoint.Kubernetes.Snapshots) == 1 {
|
|
|
|
return max(endpoint.Kubernetes.Snapshots[0].NodeCount, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
func max(a, b int) int {
|
|
|
|
if a > b {
|
|
|
|
return a
|
|
|
|
}
|
|
|
|
|
|
|
|
return b
|
|
|
|
}
|