package status import ( portainer "github.com/portainer/portainer/api" "github.com/portainer/portainer/api/internal/endpointutils" ) // NodesCount returns the total node number of all environments func NodesCount(endpoints []portainer.Endpoint) int { nodes := 0 for _, env := range endpoints { if !endpointutils.IsEdgeEndpoint(&env) || env.UserTrusted { nodes += countNodes(&env) } } 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 }