|
|
@@ -72,7 +72,7 @@ func GetUsage(opts *GetUsageOpts) (
|
|
|
usageCache.ResourceMemory = memory
|
|
|
}
|
|
|
|
|
|
- isExceeded := usageCache.ResourceCPU > limit.ResourceCPU || usageCache.ResourceMemory > limit.ResourceMemory
|
|
|
+ isExceeded := isUsageExceeded(usageCache, limit, uint(len(roles)), uint(len(clusters)))
|
|
|
|
|
|
if !usageCache.Exceeded && isExceeded {
|
|
|
// update the usage cache with a time exceeded
|
|
|
@@ -97,6 +97,15 @@ func GetUsage(opts *GetUsageOpts) (
|
|
|
}, limit, usageCache, nil
|
|
|
}
|
|
|
|
|
|
+func isUsageExceeded(usageCache *models.ProjectUsageCache, limit *types.ProjectUsage, numUsers, numClusters uint) bool {
|
|
|
+ isCPUExceeded := limit.ResourceCPU != 0 && usageCache.ResourceCPU > limit.ResourceCPU
|
|
|
+ isMemExceeded := limit.ResourceMemory != 0 && usageCache.ResourceMemory > limit.ResourceMemory
|
|
|
+ isUsersExceeded := limit.Users != 0 && numUsers > limit.Users
|
|
|
+ isClustersExceeded := limit.Clusters != 0 && numClusters > limit.Clusters
|
|
|
+
|
|
|
+ return isCPUExceeded || isMemExceeded || isUsersExceeded || isClustersExceeded
|
|
|
+}
|
|
|
+
|
|
|
// gets the total resource usage across all nodes in all clusters
|
|
|
func getResourceUsage(opts *GetUsageOpts, clusters []*models.Cluster) (uint, uint, error) {
|
|
|
var totCPU, totMem uint = 0, 0
|