Skip to content

Commit

Permalink
Fix team member ordering bug
Browse files Browse the repository at this point in the history
  • Loading branch information
komalali committed Nov 20, 2023
1 parent ddb2940 commit 70e553b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 32 deletions.
1 change: 1 addition & 0 deletions examples/yaml-team-token/Pulumi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ resources:
teamType: pulumi
members:
- pulumi-bot
- service-provider-example-user
token:
type: pulumiservice:index:TeamAccessToken
properties:
Expand Down
17 changes: 13 additions & 4 deletions provider/pkg/provider/team.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"reflect"
"slices"
"strings"

"google.golang.org/grpc/codes"
Expand Down Expand Up @@ -82,6 +83,9 @@ func ToPulumiServiceTeamInput(inputMap resource.PropertyMap) PulumiServiceTeamIn
input.Members = append(input.Members, m.StringValue())
}
}

// Sort the members so the order is deterministic
slices.Sort(input.Members)
}

if inputMap["organizationName"].HasValue() && inputMap["organizationName"].IsString() {
Expand Down Expand Up @@ -203,6 +207,8 @@ func (t *PulumiServiceTeamResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc
for _, m := range team.Members {
inputs.Members = append(inputs.Members, m.GithubLogin)
}
// Sort the members so the order is deterministic
slices.Sort(inputs.Members)
props, err := plugin.MarshalProperties(inputs.ToPropertyMap(), plugin.MarshalOptions{})
if err != nil {
return nil, fmt.Errorf("failed to marshal inputs to properties: %w", err)
Expand Down Expand Up @@ -233,14 +239,17 @@ func (t *PulumiServiceTeamResource) Update(req *pulumirpc.UpdateRequest) (*pulum
inputsChanged.Description = teamNew.Description
inputsChanged.DisplayName = teamNew.DisplayName

t.updateTeam(context.Background(), inputsChanged)
err = t.updateTeam(context.Background(), inputsChanged)
if err != nil {
return nil, err
}
}

// github teams can't manage membership.
if !Equal(teamOld.Members, teamNew.Members) && teamNew.Type != "github" {
if !slices.Equal(teamOld.Members, teamNew.Members) && teamNew.Type != "github" {
inputsChanged.Members = teamNew.Members
for _, usernameToDelete := range teamOld.Members {
if !InSlice(usernameToDelete, teamNew.Members) {
if !slices.Contains(teamNew.Members, usernameToDelete) {
err := t.deleteFromTeam(ctx, teamNew.OrganizationName, teamNew.Name, usernameToDelete)
if err != nil {
return nil, err
Expand All @@ -249,7 +258,7 @@ func (t *PulumiServiceTeamResource) Update(req *pulumirpc.UpdateRequest) (*pulum
}

for _, usernameToAdd := range teamNew.Members {
if !InSlice(usernameToAdd, teamOld.Members) {
if !slices.Contains(teamOld.Members, usernameToAdd) {
err := t.addToTeam(ctx, teamNew.OrganizationName, teamNew.Name, usernameToAdd)
if err != nil {
return nil, err
Expand Down
28 changes: 0 additions & 28 deletions provider/pkg/provider/utils.go

This file was deleted.

0 comments on commit 70e553b

Please sign in to comment.