mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-04 16:33:49 +08:00
[NET-494 / ACC-322] New free tier limits (#2495)
* Rename var * Rename consts and use iota * Use switch instead of repeated else if * Rename limits related vars * Introduce new free tier limits * Measure new limits and report on license validation * Separate usage and limits, have new ones * Don't check for hosts and clients limits, but for machines instead * Error on egress creation @ free tier w/ internet gateways * Remove clients and hosts limit from code * Rename var * Rename consts and use iota * Use switch instead of repeated else if * Rename limits related vars * Introduce new free tier limits * Measure new limits and report on license validation * Separate usage and limits, have new ones * Don't check for hosts and clients limits, but for machines instead * Error on egress creation @ free tier w/ internet gateways * Remove clients and hosts limit from code
This commit is contained in:

committed by
GitHub

parent
449f3f947b
commit
8ce7da2ce9
@@ -10,36 +10,60 @@ import (
|
||||
|
||||
// limit consts
|
||||
const (
|
||||
node_l = 0
|
||||
networks_l = 1
|
||||
users_l = 2
|
||||
clients_l = 3
|
||||
limitChoiceNetworks = iota
|
||||
limitChoiceUsers
|
||||
limitChoiceMachines
|
||||
limitChoiceIngress
|
||||
limitChoiceEgress
|
||||
)
|
||||
|
||||
func checkFreeTierLimits(limit_choice int, next http.Handler) http.HandlerFunc {
|
||||
func checkFreeTierLimits(limitChoice int, next http.Handler) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var errorResponse = models.ErrorResponse{
|
||||
Code: http.StatusForbidden, Message: "free tier limits exceeded on networks",
|
||||
Code: http.StatusForbidden, Message: "free tier limits exceeded on ",
|
||||
}
|
||||
|
||||
if logic.Free_Tier { // check that free tier limits not exceeded
|
||||
if limit_choice == networks_l {
|
||||
if logic.FreeTier { // check that free tier limits not exceeded
|
||||
switch limitChoice {
|
||||
case limitChoiceNetworks:
|
||||
currentNetworks, err := logic.GetNetworks()
|
||||
if (err != nil && !database.IsEmptyRecord(err)) || len(currentNetworks) >= logic.Networks_Limit {
|
||||
if (err != nil && !database.IsEmptyRecord(err)) ||
|
||||
len(currentNetworks) >= logic.NetworksLimit {
|
||||
errorResponse.Message += "networks"
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
} else if limit_choice == users_l {
|
||||
case limitChoiceUsers:
|
||||
users, err := logic.GetUsers()
|
||||
if (err != nil && !database.IsEmptyRecord(err)) || len(users) >= logic.Users_Limit {
|
||||
errorResponse.Message = "free tier limits exceeded on users"
|
||||
if (err != nil && !database.IsEmptyRecord(err)) ||
|
||||
len(users) >= logic.UsersLimit {
|
||||
errorResponse.Message += "users"
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
} else if limit_choice == clients_l {
|
||||
clients, err := logic.GetAllExtClients()
|
||||
if (err != nil && !database.IsEmptyRecord(err)) || len(clients) >= logic.Clients_Limit {
|
||||
errorResponse.Message = "free tier limits exceeded on external clients"
|
||||
case limitChoiceMachines:
|
||||
hosts, hErr := logic.GetAllHosts()
|
||||
clients, cErr := logic.GetAllExtClients()
|
||||
if (hErr != nil && !database.IsEmptyRecord(hErr)) ||
|
||||
(cErr != nil && !database.IsEmptyRecord(cErr)) ||
|
||||
len(hosts)+len(clients) >= logic.MachinesLimit {
|
||||
errorResponse.Message += "machines"
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
case limitChoiceIngress:
|
||||
ingresses, err := logic.GetAllIngresses()
|
||||
if (err != nil && !database.IsEmptyRecord(err)) ||
|
||||
len(ingresses) >= logic.IngressesLimit {
|
||||
errorResponse.Message += "ingresses"
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
case limitChoiceEgress:
|
||||
egresses, err := logic.GetAllEgresses()
|
||||
if (err != nil && !database.IsEmptyRecord(err)) ||
|
||||
len(egresses) >= logic.EgressesLimit {
|
||||
errorResponse.Message += "egresses"
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
|
Reference in New Issue
Block a user