Skip to content

Commit 46377e3

Browse files
authored
chore: migrate project_ip_access_list to new SDK (#1753)
* migrate to new SDK * fix
1 parent 0bc0c93 commit 46377e3

File tree

3 files changed

+50
-50
lines changed

3 files changed

+50
-50
lines changed

internal/service/projectipaccesslist/data_source_project_ip_access_list.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/conversion"
1515
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/validate"
1616
"github.com/mongodb/terraform-provider-mongodbatlas/internal/config"
17-
matlas "go.mongodb.org/atlas/mongodbatlas"
17+
"go.mongodb.org/atlas-sdk/v20231115002/admin"
1818
)
1919

2020
const (
@@ -114,8 +114,8 @@ func (d *projectIPAccessListDS) Read(ctx context.Context, req datasource.ReadReq
114114
entry.WriteString(databaseDSUserConfig.AWSSecurityGroup.ValueString())
115115
}
116116

117-
conn := d.Client.Atlas
118-
accessList, _, err := conn.ProjectIPAccessList.Get(ctx, databaseDSUserConfig.ProjectID.ValueString(), entry.String())
117+
connV2 := d.Client.AtlasV2
118+
accessList, _, err := connV2.ProjectIPAccessListApi.GetProjectIpList(ctx, databaseDSUserConfig.ProjectID.ValueString(), entry.String()).Execute()
119119
if err != nil {
120120
resp.Diagnostics.AddError("error getting access list entry", err.Error())
121121
return
@@ -133,25 +133,25 @@ func (d *projectIPAccessListDS) Read(ctx context.Context, req datasource.ReadReq
133133
}
134134
}
135135

136-
func newTFProjectIPAccessListDSModel(ctx context.Context, accessList *matlas.ProjectIPAccessList) (*tfProjectIPAccessListDSModel, diag.Diagnostics) {
136+
func newTFProjectIPAccessListDSModel(ctx context.Context, accessList *admin.NetworkPermissionEntry) (*tfProjectIPAccessListDSModel, diag.Diagnostics) {
137137
databaseUserModel := &tfProjectIPAccessListDSModel{
138-
ProjectID: types.StringValue(accessList.GroupID),
139-
Comment: types.StringValue(accessList.Comment),
140-
CIDRBlock: types.StringValue(accessList.CIDRBlock),
141-
IPAddress: types.StringValue(accessList.IPAddress),
142-
AWSSecurityGroup: types.StringValue(accessList.AwsSecurityGroup),
138+
ProjectID: types.StringValue(accessList.GetGroupId()),
139+
Comment: types.StringValue(accessList.GetComment()),
140+
CIDRBlock: types.StringValue(accessList.GetCidrBlock()),
141+
IPAddress: types.StringValue(accessList.GetIpAddress()),
142+
AWSSecurityGroup: types.StringValue(accessList.GetAwsSecurityGroup()),
143143
}
144144

145-
entry := accessList.CIDRBlock
146-
if accessList.IPAddress != "" {
147-
entry = accessList.IPAddress
148-
} else if accessList.AwsSecurityGroup != "" {
149-
entry = accessList.AwsSecurityGroup
145+
entry := accessList.GetCidrBlock()
146+
if accessList.GetIpAddress() != "" {
147+
entry = accessList.GetIpAddress()
148+
} else if accessList.GetAwsSecurityGroup() != "" {
149+
entry = accessList.GetAwsSecurityGroup()
150150
}
151151

152152
id := conversion.EncodeStateID(map[string]string{
153153
"entry": entry,
154-
"project_id": accessList.GroupID,
154+
"project_id": accessList.GetGroupId(),
155155
})
156156

157157
databaseUserModel.ID = types.StringValue(id)

internal/service/projectipaccesslist/resource_project_ip_access_list.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/conversion"
2121
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/validate"
2222
"github.com/mongodb/terraform-provider-mongodbatlas/internal/config"
23-
matlas "go.mongodb.org/atlas/mongodbatlas"
23+
"go.mongodb.org/atlas-sdk/v20231115002/admin"
2424
)
2525

2626
const (
@@ -143,13 +143,13 @@ func (r *projectIPAccessListRS) Create(ctx context.Context, req resource.CreateR
143143
return
144144
}
145145

146-
conn := r.Client.Atlas
146+
connV2 := r.Client.AtlasV2
147147
projectID := projectIPAccessListModel.ProjectID.ValueString()
148148
stateConf := &retry.StateChangeConf{
149149
Pending: []string{"pending"},
150150
Target: []string{"created", "failed"},
151151
Refresh: func() (any, string, error) {
152-
_, _, err := conn.ProjectIPAccessList.Create(ctx, projectID, newMongoDBProjectIPAccessList(projectIPAccessListModel))
152+
_, _, err := connV2.ProjectIPAccessListApi.CreateProjectIpAccessList(ctx, projectID, newMongoDBProjectIPAccessList(projectIPAccessListModel)).Execute()
153153
if err != nil {
154154
if strings.Contains(err.Error(), "Unexpected error") ||
155155
strings.Contains(err.Error(), "UNEXPECTED_ERROR") ||
@@ -166,7 +166,7 @@ func (r *projectIPAccessListRS) Create(ctx context.Context, req resource.CreateR
166166
accessListEntry = projectIPAccessListModel.AWSSecurityGroup.ValueString()
167167
}
168168

169-
entry, exists, err := isEntryInProjectAccessList(ctx, conn, projectID, accessListEntry)
169+
entry, exists, err := isEntryInProjectAccessList(ctx, connV2, projectID, accessListEntry)
170170
if err != nil {
171171
if strings.Contains(err.Error(), "500") {
172172
return nil, "pending", nil
@@ -194,7 +194,7 @@ func (r *projectIPAccessListRS) Create(ctx context.Context, req resource.CreateR
194194
return
195195
}
196196

197-
entry, ok := accessList.(*matlas.ProjectIPAccessList)
197+
entry, ok := accessList.(*admin.NetworkPermissionEntry)
198198
if !ok {
199199
resp.Diagnostics.AddError("error", errorAccessListCreate)
200200
return
@@ -207,37 +207,37 @@ func (r *projectIPAccessListRS) Create(ctx context.Context, req resource.CreateR
207207
}
208208
}
209209

210-
func newTFProjectIPAccessListModel(projectIPAccessListModel *tfProjectIPAccessListModel, projectIPAccessList *matlas.ProjectIPAccessList) *tfProjectIPAccessListModel {
211-
entry := projectIPAccessList.IPAddress
212-
if projectIPAccessList.CIDRBlock != "" {
213-
entry = projectIPAccessList.CIDRBlock
214-
} else if projectIPAccessList.AwsSecurityGroup != "" {
215-
entry = projectIPAccessList.AwsSecurityGroup
210+
func newTFProjectIPAccessListModel(projectIPAccessListModel *tfProjectIPAccessListModel, projectIPAccessList *admin.NetworkPermissionEntry) *tfProjectIPAccessListModel {
211+
entry := projectIPAccessList.GetIpAddress()
212+
if projectIPAccessList.GetCidrBlock() != "" {
213+
entry = projectIPAccessList.GetCidrBlock()
214+
} else if projectIPAccessList.GetAwsSecurityGroup() != "" {
215+
entry = projectIPAccessList.GetAwsSecurityGroup()
216216
}
217217

218218
id := conversion.EncodeStateID(map[string]string{
219219
"entry": entry,
220-
"project_id": projectIPAccessList.GroupID,
220+
"project_id": projectIPAccessList.GetGroupId(),
221221
})
222222

223223
return &tfProjectIPAccessListModel{
224224
ID: types.StringValue(id),
225-
ProjectID: types.StringValue(projectIPAccessList.GroupID),
226-
CIDRBlock: types.StringValue(projectIPAccessList.CIDRBlock),
227-
IPAddress: types.StringValue(projectIPAccessList.IPAddress),
228-
AWSSecurityGroup: types.StringValue(projectIPAccessList.AwsSecurityGroup),
229-
Comment: types.StringValue(projectIPAccessList.Comment),
225+
ProjectID: types.StringValue(projectIPAccessList.GetGroupId()),
226+
CIDRBlock: types.StringValue(projectIPAccessList.GetCidrBlock()),
227+
IPAddress: types.StringValue(projectIPAccessList.GetIpAddress()),
228+
AWSSecurityGroup: types.StringValue(projectIPAccessList.GetAwsSecurityGroup()),
229+
Comment: types.StringValue(projectIPAccessList.GetComment()),
230230
Timeouts: projectIPAccessListModel.Timeouts,
231231
}
232232
}
233233

234-
func newMongoDBProjectIPAccessList(projectIPAccessListModel *tfProjectIPAccessListModel) []*matlas.ProjectIPAccessList {
235-
return []*matlas.ProjectIPAccessList{
234+
func newMongoDBProjectIPAccessList(projectIPAccessListModel *tfProjectIPAccessListModel) *[]admin.NetworkPermissionEntry {
235+
return &[]admin.NetworkPermissionEntry{
236236
{
237-
AwsSecurityGroup: projectIPAccessListModel.AWSSecurityGroup.ValueString(),
238-
CIDRBlock: projectIPAccessListModel.CIDRBlock.ValueString(),
239-
IPAddress: projectIPAccessListModel.IPAddress.ValueString(),
240-
Comment: projectIPAccessListModel.Comment.ValueString(),
237+
AwsSecurityGroup: conversion.StringPtr(projectIPAccessListModel.AWSSecurityGroup.ValueString()),
238+
CidrBlock: conversion.StringPtr(projectIPAccessListModel.CIDRBlock.ValueString()),
239+
IpAddress: conversion.StringPtr(projectIPAccessListModel.IPAddress.ValueString()),
240+
Comment: conversion.StringPtr(projectIPAccessListModel.Comment.ValueString()),
241241
},
242242
}
243243
}
@@ -261,9 +261,9 @@ func (r *projectIPAccessListRS) Read(ctx context.Context, req resource.ReadReque
261261
return
262262
}
263263

264-
conn := r.Client.Atlas
264+
connV2 := r.Client.AtlasV2
265265
err := retry.RetryContext(ctx, timeout, func() *retry.RetryError {
266-
accessList, httpResponse, err := conn.ProjectIPAccessList.Get(ctx, decodedIDMap["project_id"], decodedIDMap["entry"])
266+
accessList, httpResponse, err := connV2.ProjectIPAccessListApi.GetProjectIpList(ctx, decodedIDMap["project_id"], decodedIDMap["entry"]).Execute()
267267
if err != nil {
268268
// case 404
269269
// deleted in the backend case
@@ -306,7 +306,7 @@ func (r *projectIPAccessListRS) Delete(ctx context.Context, req resource.DeleteR
306306
entry = projectIPAccessListModelState.AWSSecurityGroup.ValueString()
307307
}
308308

309-
conn := r.Client.Atlas
309+
connV2 := r.Client.AtlasV2
310310
projectID := projectIPAccessListModelState.ProjectID.ValueString()
311311

312312
timeout, diags := projectIPAccessListModelState.Timeouts.Delete(ctx, projectIPAccessListTimeout)
@@ -316,7 +316,7 @@ func (r *projectIPAccessListRS) Delete(ctx context.Context, req resource.DeleteR
316316
}
317317

318318
err := retry.RetryContext(ctx, timeout, func() *retry.RetryError {
319-
httpResponse, err := conn.ProjectIPAccessList.Delete(ctx, projectID, entry)
319+
_, httpResponse, err := connV2.ProjectIPAccessListApi.DeleteProjectIpAccessList(ctx, projectID, entry).Execute()
320320
if err != nil {
321321
if httpResponse != nil && httpResponse.StatusCode == http.StatusInternalServerError {
322322
return retry.RetryableError(err)
@@ -330,7 +330,7 @@ func (r *projectIPAccessListRS) Delete(ctx context.Context, req resource.DeleteR
330330
return retry.NonRetryableError(fmt.Errorf(errorAccessListDelete, err))
331331
}
332332

333-
entry, httpResponse, err := conn.ProjectIPAccessList.Get(ctx, projectID, entry)
333+
entry, httpResponse, err := connV2.ProjectIPAccessListApi.GetProjectIpList(ctx, projectID, entry).Execute()
334334
if err != nil {
335335
if httpResponse != nil && httpResponse.StatusCode == http.StatusNotFound {
336336
return nil
@@ -368,10 +368,10 @@ func (r *projectIPAccessListRS) ImportState(ctx context.Context, req resource.Im
368368
}))...)
369369
}
370370

371-
func isEntryInProjectAccessList(ctx context.Context, conn *matlas.Client, projectID, entry string) (*matlas.ProjectIPAccessList, bool, error) {
372-
var out matlas.ProjectIPAccessList
371+
func isEntryInProjectAccessList(ctx context.Context, connV2 *admin.APIClient, projectID, entry string) (*admin.NetworkPermissionEntry, bool, error) {
372+
var out admin.NetworkPermissionEntry
373373
err := retry.RetryContext(ctx, projectIPAccessListRetry, func() *retry.RetryError {
374-
accessList, httpResponse, err := conn.ProjectIPAccessList.Get(ctx, projectID, entry)
374+
accessList, httpResponse, err := connV2.ProjectIPAccessListApi.GetProjectIpList(ctx, projectID, entry).Execute()
375375
if err != nil {
376376
switch {
377377
case httpResponse != nil && httpResponse.StatusCode == http.StatusInternalServerError:

internal/testutil/acc/project_ip_acces_list.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
func CheckProjectIPAccessListExists(resourceName string) resource.TestCheckFunc {
1414
return func(s *terraform.State) error {
15-
conn := TestMongoDBClient.(*config.MongoDBClient).Atlas
15+
connV2 := TestMongoDBClient.(*config.MongoDBClient).AtlasV2
1616

1717
rs, ok := s.RootModule().Resources[resourceName]
1818
if !ok {
@@ -25,7 +25,7 @@ func CheckProjectIPAccessListExists(resourceName string) resource.TestCheckFunc
2525

2626
ids := conversion.DecodeStateID(rs.Primary.ID)
2727

28-
_, _, err := conn.ProjectIPAccessList.Get(context.Background(), ids["project_id"], ids["entry"])
28+
_, _, err := connV2.ProjectIPAccessListApi.GetProjectIpList(context.Background(), ids["project_id"], ids["entry"]).Execute()
2929
if err != nil {
3030
return fmt.Errorf("project ip access list entry (%s) does not exist", ids["entry"])
3131
}
@@ -35,7 +35,7 @@ func CheckProjectIPAccessListExists(resourceName string) resource.TestCheckFunc
3535
}
3636

3737
func CheckDestroyProjectIPAccessList(s *terraform.State) error {
38-
conn := TestMongoDBClient.(*config.MongoDBClient).Atlas
38+
connV2 := TestMongoDBClient.(*config.MongoDBClient).AtlasV2
3939

4040
for _, rs := range s.RootModule().Resources {
4141
if rs.Type != "mongodbatlas_project_ip_access_list" {
@@ -44,7 +44,7 @@ func CheckDestroyProjectIPAccessList(s *terraform.State) error {
4444

4545
ids := conversion.DecodeStateID(rs.Primary.ID)
4646

47-
_, _, err := conn.ProjectIPAccessList.Get(context.Background(), ids["project_id"], ids["entry"])
47+
_, _, err := connV2.ProjectIPAccessListApi.GetProjectIpList(context.Background(), ids["project_id"], ids["entry"]).Execute()
4848
if err == nil {
4949
return fmt.Errorf("project ip access list entry (%s) still exists", ids["entry"])
5050
}

0 commit comments

Comments
 (0)