Explorar o código

look up admin emails for usage report

Alexander Belanger %!s(int64=4) %!d(string=hai) anos
pai
achega
37268fa353
Modificáronse 1 ficheiros con 24 adicións e 0 borrados
  1. 24 0
      services/usage/usage.go

+ 24 - 0
services/usage/usage.go

@@ -4,6 +4,7 @@ import (
 	"time"
 
 	"github.com/porter-dev/porter/api/server/shared/config/env"
+	"github.com/porter-dev/porter/api/types"
 	"github.com/porter-dev/porter/internal/adapter"
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/oauth"
@@ -64,6 +65,7 @@ type UsageTrackerResponse struct {
 	Exceeded      bool
 	ExceededSince *time.Time
 	Project       *models.Project
+	AdminEmails   []string
 }
 
 func (u *UsageTracker) GetProjectUsage() (map[uint]*UsageTrackerResponse, error) {
@@ -96,6 +98,27 @@ func (u *UsageTracker) GetProjectUsage() (map[uint]*UsageTrackerResponse, error)
 				continue
 			}
 
+			// get the admin emails for the project
+			roles, err := u.repo.Project().ListProjectRoles(project.ID)
+
+			if err != nil {
+				continue
+			}
+
+			adminEmails := make([]string, 0)
+
+			for _, role := range roles {
+				if role.Kind == types.RoleAdmin {
+					user, err := u.repo.User().ReadUser(role.UserID)
+
+					if err != nil {
+						continue
+					}
+
+					adminEmails = append(adminEmails, user.Email)
+				}
+			}
+
 			res[project.ID] = &UsageTrackerResponse{
 				CPUUsage:      cache.ResourceCPU,
 				CPULimit:      limit.ResourceCPU,
@@ -104,6 +127,7 @@ func (u *UsageTracker) GetProjectUsage() (map[uint]*UsageTrackerResponse, error)
 				Exceeded:      cache.Exceeded,
 				ExceededSince: cache.ExceededSince,
 				Project:       project,
+				AdminEmails:   adminEmails,
 			}
 		}
 	}