@@ -15,6 +15,7 @@ import (
15
15
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
16
16
"github.com/hashicorp/terraform-plugin-framework/types"
17
17
"github.com/hashicorp/terraform-plugin-log/tflog"
18
+ "sort"
18
19
)
19
20
20
21
func NewMspManagedTenantUsersResource () resource.Resource { return & MspManagedTenantUsersResource {} }
@@ -23,6 +24,19 @@ type MspManagedTenantUsersResource struct {
23
24
client * cdoClient.Client
24
25
}
25
26
27
+ func sortUsersToOrderInPlanData (users []User , planData * MspManagedTenantUsersResourceModel ) * []User {
28
+ userOrder := make (map [string ]int )
29
+ for i , user := range planData .Users {
30
+ userOrder [user .Username .ValueString ()] = i
31
+ }
32
+
33
+ sort .Slice (users , func (i , j int ) bool {
34
+ return userOrder [users [i ].Username .ValueString ()] < userOrder [users [j ].Username .ValueString ()]
35
+ })
36
+
37
+ return & users
38
+ }
39
+
26
40
func (resource * MspManagedTenantUsersResource ) Schema (ctx context.Context , request resource.SchemaRequest , response * resource.SchemaResponse ) {
27
41
response .Schema = schema.Schema {
28
42
MarkdownDescription : "Provides a resource to add users to an MSP managed tenant." ,
@@ -85,7 +99,7 @@ func (resource *MspManagedTenantUsersResource) Create(ctx context.Context, reque
85
99
return
86
100
}
87
101
88
- planData .Users = * resource .transformApiResponseToPlan (createdUserDetails )
102
+ planData .Users = * sortUsersToOrderInPlanData ( * resource .transformApiResponseToPlan (createdUserDetails ), & planData )
89
103
90
104
response .Diagnostics .Append (response .State .Set (ctx , & planData )... )
91
105
}
@@ -101,7 +115,7 @@ func (resource *MspManagedTenantUsersResource) Read(ctx context.Context, request
101
115
return
102
116
}
103
117
104
- stateData .Users = * resource .transformApiResponseToPlan (userDetails )
118
+ stateData .Users = * sortUsersToOrderInPlanData ( * resource .transformApiResponseToPlan (userDetails ), & stateData )
105
119
response .Diagnostics .Append (response .State .Set (ctx , & stateData )... )
106
120
}
107
121
0 commit comments