@@ -21,15 +21,14 @@ import (
2121 "net/http"
2222 "strings"
2323
24- admin20231115002 "go.mongodb.org/atlas-sdk/v20231115002/admin"
25-
2624 "github.com/aws-cloudformation/cloudformation-cli-go-plugin/cfn/handler"
2725 "github.com/aws/aws-sdk-go-v2/service/cloudformation/types"
2826
2927 "github.com/mongodb/mongodbatlas-cloudformation-resources/util"
3028 "github.com/mongodb/mongodbatlas-cloudformation-resources/util/constants"
3129 "github.com/mongodb/mongodbatlas-cloudformation-resources/util/progressevent"
3230 "github.com/mongodb/mongodbatlas-cloudformation-resources/util/validator"
31+ "go.mongodb.org/atlas-sdk/v20250312013/admin"
3332)
3433
3534var CreateRequiredFields = []string {constants .FederationSettingsID , constants .OrgID , constants .ExternalGroupName , constants .RoleAssignments }
@@ -68,9 +67,9 @@ func Create(req handler.Request, prevModel *Model, currentModel *Model) (handler
6867 orgID := currentModel .OrgId
6968
7069 requestBody , _ , _ := modelToRoleMappingRequest (currentModel )
71- federatedSettingsOrganizationRoleMapping , resp , err := client .Atlas20231115002 .FederatedAuthenticationApi .CreateRoleMapping (context .Background (), * federationSettingsID , * orgID , requestBody ).Execute ()
70+ federatedSettingsOrganizationRoleMapping , resp , err := client .AtlasSDK .FederatedAuthenticationApi .CreateRoleMapping (context .Background (), * federationSettingsID , * orgID , requestBody ).Execute ()
7271 if err != nil {
73- if resp .StatusCode == http .StatusBadRequest && strings .Contains (err .Error (), "DUPLICATE_ROLE_MAPPING" ) {
72+ if resp != nil && resp .StatusCode == http .StatusBadRequest && strings .Contains (err .Error (), "DUPLICATE_ROLE_MAPPING" ) {
7473 return progressevent .GetFailedEventByCode ("Resource already exists" ,
7574 string (types .HandlerErrorCodeAlreadyExists )), nil
7675 }
@@ -101,7 +100,7 @@ func Read(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
101100 orgID := currentModel .OrgId
102101 roleMappingID := currentModel .Id
103102
104- federatedSettingsOrganizationRoleMapping , resp , err := client .Atlas20231115002 .FederatedAuthenticationApi .
103+ federatedSettingsOrganizationRoleMapping , resp , err := client .AtlasSDK .FederatedAuthenticationApi .
105104 GetRoleMapping (context .Background (), * federationSettingsID , * roleMappingID , * orgID ).
106105 Execute ()
107106 if err != nil {
@@ -137,7 +136,7 @@ func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler
137136 return progressevent .GetFailedEventByCode ("Not Found" , string (types .HandlerErrorCodeNotFound )), nil
138137 }
139138
140- if ( currentModel . RoleAssignments ) == nil || len (currentModel .RoleAssignments ) == 0 {
139+ if len (currentModel .RoleAssignments ) == 0 {
141140 err := errors .New (RoleAssignementShouldBeSet )
142141 return handler.ProgressEvent {
143142 OperationStatus : handler .Failed ,
@@ -146,7 +145,7 @@ func Update(req handler.Request, prevModel *Model, currentModel *Model) (handler
146145 }
147146 // preparing model request
148147 requestBody , _ , _ := modelToRoleMappingRequest (currentModel )
149- federatedSettingsOrganizationRoleMapping , resp , err := client .Atlas20231115002 .FederatedAuthenticationApi .
148+ federatedSettingsOrganizationRoleMapping , resp , err := client .AtlasSDK .FederatedAuthenticationApi .
150149 UpdateRoleMapping (context .Background (), * federationSettingsID , * roleMappingID , * orgID , requestBody ).
151150 Execute ()
152151 if err != nil {
@@ -183,7 +182,7 @@ func Delete(req handler.Request, prevModel *Model, currentModel *Model) (handler
183182 federationSettingsID := currentModel .FederationSettingsId
184183 orgID := currentModel .OrgId
185184 roleMappingID := currentModel .Id
186- resp , err := client .Atlas20231115002 .FederatedAuthenticationApi .
185+ resp , err := client .AtlasSDK .FederatedAuthenticationApi .
187186 DeleteRoleMapping (context .Background (), * federationSettingsID , * roleMappingID , * orgID ).
188187 Execute ()
189188 if err != nil {
@@ -214,7 +213,7 @@ func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
214213 federationSettingsID := currentModel .FederationSettingsId
215214 orgID := currentModel .OrgId
216215
217- federatedSettingsOrganizationRoleMappings , resp , err := client .Atlas20231115002 .
216+ federatedSettingsOrganizationRoleMappings , resp , err := client .AtlasSDK .
218217 FederatedAuthenticationApi .
219218 ListRoleMappings (context .Background (), * federationSettingsID , * orgID ).
220219 Execute ()
@@ -224,15 +223,18 @@ func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
224223 }
225224
226225 models := make ([]interface {}, 0 )
227- for i := range federatedSettingsOrganizationRoleMappings .Results {
228- model := Model {}
229- model .Profile = currentModel .Profile
230- model .OrgId = currentModel .OrgId
231- model .FederationSettingsId = currentModel .FederationSettingsId
232- model .Id = federatedSettingsOrganizationRoleMappings .Results [i ].Id
233- model .ExternalGroupName = & federatedSettingsOrganizationRoleMappings .Results [i ].ExternalGroupName
234- model .RoleAssignments = flattenRoleAssignments (federatedSettingsOrganizationRoleMappings .Results [i ].RoleAssignments )
235- models = append (models , model )
226+ if federatedSettingsOrganizationRoleMappings .Results != nil {
227+ for i := range * federatedSettingsOrganizationRoleMappings .Results {
228+ roleMappings := * federatedSettingsOrganizationRoleMappings .Results
229+ model := Model {}
230+ model .Profile = currentModel .Profile
231+ model .OrgId = currentModel .OrgId
232+ model .FederationSettingsId = currentModel .FederationSettingsId
233+ model .Id = roleMappings [i ].Id
234+ model .ExternalGroupName = & roleMappings [i ].ExternalGroupName
235+ model .RoleAssignments = flattenRoleAssignments (roleMappings [i ].RoleAssignments )
236+ models = append (models , model )
237+ }
236238 }
237239 return handler.ProgressEvent {
238240 OperationStatus : handler .Success ,
@@ -241,8 +243,8 @@ func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.P
241243 }, nil
242244}
243245
244- func modelToRoleMappingRequest (currentModel * Model ) (* admin20231115002 .AuthFederationRoleMapping , handler.ProgressEvent , error ) {
245- roleMappingRequest := & admin20231115002 .AuthFederationRoleMapping {}
246+ func modelToRoleMappingRequest (currentModel * Model ) (* admin .AuthFederationRoleMapping , handler.ProgressEvent , error ) {
247+ roleMappingRequest := & admin .AuthFederationRoleMapping {}
246248 if currentModel .Id != nil {
247249 roleMappingRequest .Id = currentModel .Id
248250 }
@@ -255,10 +257,10 @@ func modelToRoleMappingRequest(currentModel *Model) (*admin20231115002.AuthFeder
255257 return roleMappingRequest , handler.ProgressEvent {}, nil
256258}
257259
258- func expandRoleAssignments (assignments []RoleAssignment ) []admin20231115002. RoleAssignment {
259- roles := make ([]admin20231115002. RoleAssignment , len (assignments ))
260+ func expandRoleAssignments (assignments []RoleAssignment ) * []admin. ConnectedOrgConfigRoleAssignment {
261+ roles := make ([]admin. ConnectedOrgConfigRoleAssignment , len (assignments ))
260262 for i := range assignments {
261- role := admin20231115002. RoleAssignment {}
263+ role := admin. ConnectedOrgConfigRoleAssignment {}
262264 if util .IsStringPresent (assignments [i ].Role ) {
263265 role .Role = assignments [i ].Role
264266 }
@@ -273,10 +275,10 @@ func expandRoleAssignments(assignments []RoleAssignment) []admin20231115002.Role
273275 roles [i ] = role
274276 }
275277
276- return roles
278+ return & roles
277279}
278280
279- func roleMappingToModel (currentModel Model , roleMapping * admin20231115002 .AuthFederationRoleMapping ) * Model {
281+ func roleMappingToModel (currentModel Model , roleMapping * admin .AuthFederationRoleMapping ) * Model {
280282 out := & Model {
281283 Profile : currentModel .Profile ,
282284 FederationSettingsId : currentModel .FederationSettingsId ,
@@ -288,9 +290,12 @@ func roleMappingToModel(currentModel Model, roleMapping *admin20231115002.AuthFe
288290 return out
289291}
290292
291- func flattenRoleAssignments (assignments []admin20231115002. RoleAssignment ) []RoleAssignment {
293+ func flattenRoleAssignments (assignments * []admin. ConnectedOrgConfigRoleAssignment ) []RoleAssignment {
292294 roleAssignments := make ([]RoleAssignment , 0 )
293- for _ , role := range assignments {
295+ if assignments == nil {
296+ return roleAssignments
297+ }
298+ for _ , role := range * assignments {
294299 roleAssignments = append (roleAssignments , RoleAssignment {
295300 Role : role .Role ,
296301 OrgId : role .OrgId ,
@@ -302,7 +307,7 @@ func flattenRoleAssignments(assignments []admin20231115002.RoleAssignment) []Rol
302307
303308func isRoleMappingExists (currentModel * Model , client * util.MongoDBClient ) bool {
304309 var isExists bool
305- fedSettingsConnectedOrg , _ , err := client .Atlas20231115002 .FederatedAuthenticationApi .
310+ fedSettingsConnectedOrg , _ , err := client .AtlasSDK .FederatedAuthenticationApi .
306311 GetRoleMapping (context .Background (), * currentModel .FederationSettingsId , * currentModel .Id , * currentModel .OrgId ).
307312 Execute ()
308313 if err != nil {
0 commit comments