8000 test · coder/coder@e4f6f29 · GitHub
[go: up one dir, main page]

Skip to content

Commit e4f6f29

Browse files
committed
test
1 parent 51b880c commit e4f6f29

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"net/url"
1111
"reflect"
12+
"sort"
1213
"strconv"
1314
"strings"
1415
"sync/atomic"
@@ -1143,13 +1144,37 @@ func (s *server) notifyWorkspaceManualBuildFailed(ctx context.Context, workspace
11431144
func (s *server) prepareForNotifyWorkspaceManualBuildFailed(ctx context.Context, workspace database.Workspace, build database.WorkspaceBuild) ([]database.GetUsersRow,
11441145
database.Template, database.TemplateVersion, database.User, error,
11451146
) {
1146-
templateAdmins, err := s.Database.GetUsers(ctx, database.GetUsersParams{
1147+
users, err := s.Database.GetUsers(ctx, database.GetUsersParams{
11471148
RbacRole: []string{codersdk.RoleTemplateAdmin},
11481149
})
11491150
if err != nil {
11501151
return nil, database.Template{}, database.TemplateVersion{}, database.User{}, xerrors.Errorf("unable to fetch template admins: %w", err)
11511152
}
11521153

1154+
usersByIDs := map[uuid.UUID]database.GetUsersRow{}
1155+
var userIDs []uuid.UUID
1156+
for _, user := range users {
1157+
usersByIDs[user.ID] = user
1158+
userIDs = append(userIDs, user.ID)
1159+
}
1160+
1161+
var templateAdmins []database.GetUsersRow
1162+
if len(userIDs) > 0 {
1163+
orgIDsByMemberIDs, err := s.Database.GetOrganizationIDsByMemberIDs(ctx, userIDs)
1164+
if err != nil {
1165+
return nil, database.Template{}, database.TemplateVersion{}, database.User{}, xerrors.Errorf("unable to fetch organization IDs by member IDs: %w", err)
1166+
}
1167+
1168+
for _, entry := range orgIDsByMemberIDs {
1169+
if slices.Contains(entry.OrganizationIDs, workspace.OrganizationID) {
1170+
templateAdmins = append(templateAdmins, usersByIDs[entry.UserID])
1171+
}
1172+
}
1173+
}
1174+
sort.Slice(templateAdmins, func(i, j int) bool {
1175+
return templateAdmins[i].Username < templateAdmins[j].Username
1176+
})
1177+
11531178
template, err := s.Database.GetTemplateByID(ctx, workspace.TemplateID)
11541179
if err != nil {
11551180
return nil, database.Template{}, database.TemplateVersion{}, database.User{}, xerrors.Errorf("unable to fetch template: %w", err)

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1814,7 +1814,10 @@ func TestNotifications(t *testing.T) {
18141814
srv, db, ps, pd := setup(t, true /* ignoreLogErrors */, &overrides{notificationEnqueuer: notifEnq})
18151815

18161816
templateAdmin := dbgen.User(t, db, database.User{RBACRoles: []string{codersdk.RoleTemplateAdmin}})
1817+
_ /* other template admin, should not receive notification */ = dbgen.User(t, db, database.User{RBACRoles: []string{codersdk.RoleTemplateAdmin}})
1818+
_ = dbgen.OrganizationMember(t, db, database.OrganizationMember{UserID: templateAdmin.ID, OrganizationID: pd.OrganizationID})
18171819
user := dbgen.User(t, db, database.User{})
1820+
_ = dbgen.OrganizationMember(t, db, database.OrganizationMember{UserID: user.ID, OrganizationID: pd.OrganizationID})
18181821

18191822
template := dbgen.Template(t, db, database.Template{
18201823
Name: "template", Provisioner: database.ProvisionerTypeEcho, OrganizationID: pd.OrganizationID,

0 commit comments

Comments
 (0)
0