Skip to content

Commit

Permalink
Unify usage funcs in logic pkg
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielseibel1 committed Sep 15, 2023
1 parent 520607f commit 28afc91
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 102 deletions.
35 changes: 1 addition & 34 deletions controllers/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,45 +26,12 @@ func serverHandlers(r *mux.Router) {
}

func getUsage(w http.ResponseWriter, r *http.Request) {
type usage struct {
Hosts int `json:"hosts"`
Clients int `json:"clients"`
Networks int `json:"networks"`
Users int `json:"users"`
Ingresses int `json:"ingresses"`
Egresses int `json:"egresses"`
}
var serverUsage usage
hosts, err := logic.GetAllHosts()
if err == nil {
serverUsage.Hosts = len(hosts)
}
clients, err := logic.GetAllExtClients()
if err == nil {
serverUsage.Clients = len(clients)
}
users, err := logic.GetUsers()
if err == nil {
serverUsage.Users = len(users)
}
networks, err := logic.GetNetworks()
if err == nil {
serverUsage.Networks = len(networks)
}
ingresses, err := logic.GetAllIngresses()
if err == nil {
serverUsage.Ingresses = len(ingresses)
}
egresses, err := logic.GetAllEgresses()
if err == nil {
serverUsage.Egresses = len(egresses)
}
serverUsage := logic.GetCurrentServerUsage()
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(models.SuccessResponse{
Code: http.StatusOK,
Response: serverUsage,
})

}

// swagger:route GET /api/server/status server getStatus
Expand Down
38 changes: 38 additions & 0 deletions logic/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,41 @@ func EnterpriseCheck() {
check()
}
}

func GetCurrentServerUsage() (usage models.Usage) {
usage.SetDefaults()
hosts, hErr := GetAllHosts()
if hErr == nil {
usage.Hosts = len(hosts)
}
clients, cErr := GetAllExtClients()
if cErr == nil {
usage.Clients = len(clients)
}
users, err := GetUsers()
if err == nil {
usage.Users = len(users)
}
networks, err := GetNetworks()
if err == nil {
usage.Networks = len(networks)
}
// TODO this part bellow can be optimized to get nodes just once
ingresses, err := GetAllIngresses()
if err == nil {
usage.Ingresses = len(ingresses)
}
egresses, err := GetAllEgresses()
if err == nil {
usage.Egresses = len(egresses)
}
relays, err := GetRelays()
if err == nil {
usage.Relays = len(relays)
}
gateways, err := GetInternetGateways()
if err == nil {
usage.InternetGateways = len(gateways)
}
return
}
27 changes: 27 additions & 0 deletions models/usage.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package models

// Usage - struct for license usage
type Usage struct {
Servers int `json:"servers"`
Users int `json:"users"`
Hosts int `json:"hosts"`
Clients int `json:"clients"`
Networks int `json:"networks"`
Ingresses int `json:"ingresses"`
Egresses int `json:"egresses"`
Relays int `json:"relays"`
InternetGateways int `json:"internet_gateways"`
}

// Usage.SetDefaults - sets the default values for usage
func (l *Usage) SetDefaults() {
l.Clients = 0
l.Servers = 1
l.Hosts = 0
l.Users = 1
l.Networks = 0
l.Ingresses = 0
l.Egresses = 0
l.Relays = 0
l.InternetGateways = 0
}
31 changes: 3 additions & 28 deletions pro/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package pro

import (
"fmt"
"github.com/gravitl/netmaker/models"
)

// constants for accounts api hosts
Expand Down Expand Up @@ -48,34 +49,8 @@ type ValidatedLicense struct {

// LicenseSecret - the encrypted struct for sending user-id
type LicenseSecret struct {
AssociatedID string `json:"associated_id" binding:"required"` // UUID for user foreign key to User table
Usage Usage `json:"limits" binding:"required"`
}

// Usage - struct for license usage
type Usage struct {
Servers int `json:"servers"`
Users int `json:"users"`
Hosts int `json:"hosts"`
Clients int `json:"clients"`
Networks int `json:"networks"`
Ingresses int `json:"ingresses"`
Egresses int `json:"egresses"`
Relays int `json:"relays"`
InternetGateways int `json:"internet_gateways"`
}

// Usage.SetDefaults - sets the default values for usage
func (l *Usage) SetDefaults() {
l.Clients = 0
l.Servers = 1
l.Hosts = 0
l.Users = 1
l.Networks = 0
l.Ingresses = 0
l.Egresses = 0
l.Relays = 0
l.InternetGateways = 0
AssociatedID string `json:"associated_id" binding:"required"` // UUID for user foreign key to User table
Usage models.Usage `json:"limits" binding:"required"`
}

// ValidateLicenseRequest - used for request to validate license endpoint
Expand Down
40 changes: 0 additions & 40 deletions pro/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ package pro

import (
"encoding/base64"

"github.com/gravitl/netmaker/logic"
)

// base64encode - base64 encode helper function
Expand All @@ -25,41 +23,3 @@ func base64decode(input string) []byte {

return bytes
}

func getCurrentServerUsage() (limits Usage) {
limits.SetDefaults()
hosts, hErr := logic.GetAllHosts()
if hErr == nil {
limits.Hosts = len(hosts)
}
clients, cErr := logic.GetAllExtClients()
if cErr == nil {
limits.Clients = len(clients)
}
users, err := logic.GetUsers()
if err == nil {
limits.Users = len(users)
}
networks, err := logic.GetNetworks()
if err == nil {
limits.Networks = len(networks)
}
// TODO this part bellow can be optimized to get nodes just once
ingresses, err := logic.GetAllIngresses()
if err == nil {
limits.Ingresses = len(ingresses)
}
egresses, err := logic.GetAllEgresses()
if err == nil {
limits.Egresses = len(egresses)
}
relays, err := logic.GetRelays()
if err == nil {
limits.Relays = len(relays)
}
gateways, err := logic.GetInternetGateways()
if err == nil {
limits.InternetGateways = len(gateways)
}
return
}

0 comments on commit 28afc91

Please sign in to comment.