Skip to content

Commit bcacd48

Browse files
committed
chore(authorization): migrate to new SDK structure
1 parent 0ac0074 commit bcacd48

8 files changed

Lines changed: 164 additions & 192 deletions

File tree

stackit/internal/services/authorization/authorization_acc_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1818
"github.com/hashicorp/terraform-plugin-testing/terraform"
1919
"github.com/stackitcloud/stackit-sdk-go/core/utils"
20-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
20+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
2121
"github.com/stackitcloud/stackit-sdk-go/services/resourcemanager"
2222
"github.com/stackitcloud/stackit-sdk-go/services/resourcemanager/wait"
2323

@@ -888,8 +888,8 @@ func testAccCheckOrganizationRoleAssignmentDestroy(s *terraform.State) error {
888888
orgRoleAssignmentsToDestroy = append(
889889
orgRoleAssignmentsToDestroy,
890890
authorization.Member{
891-
Role: new(terraformId[1]),
892-
Subject: new(terraformId[2]),
891+
Role: terraformId[1],
892+
Subject: terraformId[2],
893893
},
894894
)
895895
}
@@ -900,12 +900,12 @@ func testAccCheckOrganizationRoleAssignmentDestroy(s *terraform.State) error {
900900
containerParentId := testutil.OrganizationId
901901

902902
payload := authorization.RemoveMembersPayload{
903-
ResourceType: new("organization"),
904-
Members: &orgRoleAssignmentsToDestroy,
903+
ResourceType: "organization",
904+
Members: orgRoleAssignmentsToDestroy,
905905
}
906906

907907
// Ignore error. If this request errors the org role assignment has been successfully deleted by terraform itself.
908-
_, _ = client.RemoveMembers(ctx, containerParentId).RemoveMembersPayload(payload).Execute()
908+
_, _ = client.DefaultAPI.RemoveMembers(ctx, containerParentId).RemoveMembersPayload(payload).Execute()
909909
return nil
910910
}
911911

@@ -928,16 +928,16 @@ func testAccCheckServiceAccountRoleAssignmentDestroy(s *terraform.State) error {
928928

929929
resourceId := terraformId[0]
930930
payload := authorization.RemoveMembersPayload{
931-
ResourceType: new("service-account"),
932-
Members: &[]authorization.Member{
931+
ResourceType: "service-account",
932+
Members: []authorization.Member{
933933
{
934-
Role: new(terraformId[1]),
935-
Subject: new(terraformId[2]),
934+
Role: terraformId[1],
935+
Subject: terraformId[2],
936936
},
937937
},
938938
}
939939

940-
_, err = client.RemoveMembers(ctx, resourceId).RemoveMembersPayload(payload).Execute()
940+
_, err = client.DefaultAPI.RemoveMembers(ctx, resourceId).RemoveMembersPayload(payload).Execute()
941941
if err != nil && !strings.Contains(err.Error(), "400") {
942942
return fmt.Errorf("destroying assignment %s: %w", rs.Primary.ID, err)
943943
}

stackit/internal/services/authorization/customrole/datasource.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/hashicorp/terraform-plugin-framework/types"
1313
"github.com/hashicorp/terraform-plugin-log/tflog"
1414
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
15-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
15+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
1616

1717
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
1818
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
@@ -132,7 +132,7 @@ func (d *customRoleDataSource) Read(ctx context.Context, req datasource.ReadRequ
132132
ctx = tflog.SetField(ctx, "resource_id", resourceId)
133133
ctx = tflog.SetField(ctx, "role_id", roleId)
134134

135-
roleResp, err := d.client.GetRole(ctx, d.resourceType, resourceId, roleId).Execute()
135+
roleResp, err := d.client.DefaultAPI.GetRole(ctx, d.resourceType, resourceId, roleId).Execute()
136136
if err != nil {
137137
var oapiErr *oapierror.GenericOpenAPIError
138138

stackit/internal/services/authorization/customrole/resource.go

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/hashicorp/terraform-plugin-framework/types"
1919
"github.com/hashicorp/terraform-plugin-log/tflog"
2020
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
21-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
21+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
2222

2323
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
2424
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
@@ -177,7 +177,7 @@ func (r *customRoleResource) Create(ctx context.Context, req resource.CreateRequ
177177
return
178178
}
179179

180-
createResp, err := r.client.AddRole(ctx, r.resourceType, model.ResourceId.ValueString()).AddRolePayload(*payload).Execute()
180+
createResp, err := r.client.DefaultAPI.AddRole(ctx, r.resourceType, model.ResourceId.ValueString()).AddRolePayload(*payload).Execute()
181181
if err != nil {
182182
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating custom role", fmt.Sprintf("Calling API: %v", err))
183183
return
@@ -222,7 +222,7 @@ func (r *customRoleResource) Read(ctx context.Context, req resource.ReadRequest,
222222
return
223223
}
224224

225-
roleResp, err := r.client.GetRoleExecute(ctx, r.resourceType, model.ResourceId.ValueString(), roleId)
225+
roleResp, err := r.client.DefaultAPI.GetRole(ctx, r.resourceType, model.ResourceId.ValueString(), roleId).Execute()
226226
if err != nil {
227227
var oapiErr *oapierror.GenericOpenAPIError
228228

@@ -273,7 +273,7 @@ func (r *customRoleResource) Update(ctx context.Context, req resource.UpdateRequ
273273
}
274274

275275
// Update existing custom role
276-
roleResp, err := r.client.UpdateRole(ctx, r.resourceType, model.ResourceId.ValueString(), model.RoleId.ValueString()).UpdateRolePayload(*payload).Execute()
276+
roleResp, err := r.client.DefaultAPI.UpdateRole(ctx, r.resourceType, model.ResourceId.ValueString(), model.RoleId.ValueString()).UpdateRolePayload(*payload).Execute()
277277
if err != nil {
278278
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating custom role", fmt.Sprintf("Calling API: %v", err))
279279
return
@@ -311,7 +311,7 @@ func (r *customRoleResource) Delete(ctx context.Context, req resource.DeleteRequ
311311

312312
ctx = r.annotateLogger(ctx, &model)
313313

314-
_, err := r.client.DeleteRoleExecute(ctx, r.resourceType, model.ResourceId.ValueString(), model.RoleId.ValueString())
314+
_, err := r.client.DefaultAPI.DeleteRole(ctx, r.resourceType, model.ResourceId.ValueString(), model.RoleId.ValueString()).Execute()
315315
if err != nil {
316316
var oapiErr *oapierror.GenericOpenAPIError
317317
if errors.As(err, &oapiErr) && oapiErr.StatusCode == http.StatusNotFound {
@@ -351,10 +351,6 @@ func mapGetCustomRoleResponse(ctx context.Context, resp *authorization.GetRoleRe
351351
return fmt.Errorf("response input is nil")
352352
}
353353

354-
if resp.Role == nil {
355-
return fmt.Errorf("response role is nil")
356-
}
357-
358354
if resp.Role.Id == nil {
359355
return fmt.Errorf("response role id is nil")
360356
}
@@ -372,21 +368,21 @@ func mapGetCustomRoleResponse(ctx context.Context, resp *authorization.GetRoleRe
372368
return err
373369
}
374370

375-
model.Id = utils.BuildInternalTerraformId(*resp.ResourceId, *resp.Role.Id)
376-
model.ResourceId = types.StringPointerValue(resp.ResourceId)
371+
model.Id = utils.BuildInternalTerraformId(resp.ResourceId, *resp.Role.Id)
372+
model.ResourceId = types.StringValue(resp.ResourceId)
377373
model.RoleId = types.StringPointerValue(resp.Role.Id)
378-
model.Name = types.StringPointerValue(resp.Role.Name)
379-
model.Description = types.StringPointerValue(resp.Role.Description)
374+
model.Name = types.StringValue(resp.Role.Name)
375+
model.Description = types.StringValue(resp.Role.Description)
380376

381-
if len(*resp.Role.Permissions) == 0 {
377+
if len(resp.Role.Permissions) == 0 {
382378
model.Permissions = types.ListNull(types.StringType)
383379
return nil
384380
}
385381

386382
var respPermissions []string
387-
for _, p := range *resp.Role.Permissions {
383+
for _, p := range resp.Role.Permissions {
388384
if name, ok := p.GetNameOk(); ok {
389-
respPermissions = append(respPermissions, name)
385+
respPermissions = append(respPermissions, *name)
390386
}
391387
}
392388

@@ -436,13 +432,13 @@ func toCreatePayload(ctx context.Context, model *Model) (*authorization.AddRoleP
436432
return nil, fmt.Errorf("converting permission list entry to string: %w", err)
437433
}
438434

439-
permissions = append(permissions, authorization.PermissionRequest{Name: &permission})
435+
permissions = append(permissions, authorization.PermissionRequest{Name: permission})
440436
}
441437

442438
return &authorization.AddRolePayload{
443-
Name: model.Name.ValueStringPointer(),
444-
Description: model.Description.ValueStringPointer(),
445-
Permissions: &permissions,
439+
Name: model.Name.ValueString(),
440+
Description: model.Description.ValueString(),
441+
Permissions: permissions,
446442
}, nil
447443
}
448444

@@ -463,13 +459,13 @@ func toUpdatePayload(ctx context.Context, model *Model) (*authorization.UpdateRo
463459
return nil, fmt.Errorf("converting permission list entry to string: %w", err)
464460
}
465461

466-
permissions = append(permissions, authorization.PermissionRequest{Name: &permission})
462+
permissions = append(permissions, authorization.PermissionRequest{Name: permission})
467463
}
468464

469465
return &authorization.UpdateRolePayload{
470-
Name: model.Name.ValueStringPointer(),
471-
Description: model.Description.ValueStringPointer(),
472-
Permissions: &permissions,
466+
Name: model.Name.ValueString(),
467+
Description: model.Description.ValueString(),
468+
Permissions: permissions,
473469
}, nil
474470
}
475471

stackit/internal/services/authorization/customrole/resource_test.go

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"github.com/google/uuid"
1010
"github.com/hashicorp/terraform-plugin-framework/attr"
1111
"github.com/hashicorp/terraform-plugin-framework/types"
12-
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
12+
authorization "github.com/stackitcloud/stackit-sdk-go/services/authorization/v2api"
1313
)
1414

1515
var (
@@ -40,19 +40,19 @@ func TestMapFields(t *testing.T) {
4040
{
4141
description: fmt.Sprintf("full_input_%s", resourceType),
4242
input: &authorization.GetRoleResponse{
43-
ResourceId: &testResourceId,
44-
ResourceType: &resourceType,
45-
Role: new(authorization.Role{
43+
ResourceId: testResourceId,
44+
ResourceType: resourceType,
45+
Role: authorization.Role{
4646
Id: &testRoleId,
47-
Name: new("role-name"),
48-
Description: new("Some description"),
49-
Permissions: new([]authorization.Permission{
47+
Name: "role-name",
48+
Description: "Some description",
49+
Permissions: []authorization.Permission{
5050
{
51-
Name: new("iam.subject.get"),
52-
Description: new("Can read subjects."),
51+
Name: "iam.subject.get",
52+
Description: "Can read subjects.",
5353
},
54-
}),
55-
}),
54+
},
55+
},
5656
},
5757
expected: &Model{
5858
Id: types.StringValue(fmt.Sprintf("%s,%s", testResourceId, testRoleId)),
@@ -69,21 +69,25 @@ func TestMapFields(t *testing.T) {
6969
{
7070
description: fmt.Sprintf("partial_input_%s", resourceType),
7171
input: &authorization.GetRoleResponse{
72-
ResourceId: &testResourceId,
73-
ResourceType: &resourceType,
74-
Role: new(authorization.Role{
75-
Id: &testRoleId,
76-
Permissions: new([]authorization.Permission{
72+
ResourceId: testResourceId,
73+
ResourceType: resourceType,
74+
Role: authorization.Role{
75+
Id: &testRoleId,
76+
Name: "role-name",
77+
Description: "Some description",
78+
Permissions: []authorization.Permission{
7779
{
78-
Name: new("iam.subject.get"),
80+
Name: "iam.subject.get",
7981
},
80-
}),
81-
}),
82+
},
83+
},
8284
},
8385
expected: &Model{
84-
Id: types.StringValue(fmt.Sprintf("%s,%s", testResourceId, testRoleId)),
85-
RoleId: types.StringValue(testRoleId),
86-
ResourceId: types.StringValue(testResourceId),
86+
Id: types.StringValue(fmt.Sprintf("%s,%s", testResourceId, testRoleId)),
87+
RoleId: types.StringValue(testRoleId),
88+
ResourceId: types.StringValue(testResourceId),
89+
Name: types.StringValue("role-name"),
90+
Description: types.StringValue("Some description"),
8791
Permissions: types.ListValueMust(types.StringType, []attr.Value{
8892
types.StringValue("iam.subject.get"),
8993
}),
@@ -93,53 +97,53 @@ func TestMapFields(t *testing.T) {
9397
{
9498
description: fmt.Sprintf("missing_role_%s", resourceType),
9599
input: &authorization.GetRoleResponse{
96-
ResourceId: &testResourceId,
97-
ResourceType: &resourceType,
100+
ResourceId: testResourceId,
101+
ResourceType: resourceType,
98102
},
99103
expected: nil,
100104
isValid: false,
101105
},
102106
{
103107
description: fmt.Sprintf("missing_permissions_%s", resourceType),
104108
input: &authorization.GetRoleResponse{
105-
ResourceId: &testResourceId,
106-
ResourceType: &resourceType,
107-
Role: new(authorization.Role{
109+
ResourceId: testResourceId,
110+
ResourceType: resourceType,
111+
Role: authorization.Role{
108112
Id: &testRoleId,
109-
}),
113+
},
110114
},
111115
expected: nil,
112116
isValid: false,
113117
},
114118
{
115119
description: fmt.Sprintf("missing_role_id_%s", resourceType),
116120
input: &authorization.GetRoleResponse{
117-
ResourceId: &testResourceId,
118-
ResourceType: &resourceType,
119-
Role: new(authorization.Role{
120-
Permissions: new([]authorization.Permission{}),
121-
}),
121+
ResourceId: testResourceId,
122+
ResourceType: resourceType,
123+
Role: authorization.Role{
124+
Permissions: []authorization.Permission{},
125+
},
122126
},
123127
expected: nil,
124128
isValid: false,
125129
},
126130
{
127131
description: fmt.Sprintf("missing_role_%s", resourceType),
128132
input: &authorization.GetRoleResponse{
129-
ResourceId: &testResourceId,
130-
ResourceType: &resourceType,
133+
ResourceId: testResourceId,
134+
ResourceType: resourceType,
131135
},
132136
expected: nil,
133137
isValid: false,
134138
},
135139
{
136140
description: fmt.Sprintf("missing_permissions_%s", resourceType),
137141
input: &authorization.GetRoleResponse{
138-
ResourceId: &testResourceId,
139-
ResourceType: &resourceType,
140-
Role: new(authorization.Role{
142+
ResourceId: testResourceId,
143+
ResourceType: resourceType,
144+
Role: authorization.Role{
141145
Id: &testRoleId,
142-
}),
146+
},
143147
},
144148
expected: nil,
145149
isValid: false,
@@ -201,20 +205,20 @@ func TestToCreatePayload(t *testing.T) {
201205
}),
202206
},
203207
expected: authorization.AddRolePayload{
204-
Name: new("role-name"),
205-
Description: new("Some description"),
206-
Permissions: new([]authorization.PermissionRequest{
208+
Name: "role-name",
209+
Description: "Some description",
210+
Permissions: []authorization.PermissionRequest{
207211
{
208-
Name: new("iam.subject.get"),
212+
Name: "iam.subject.get",
209213
},
210-
}),
214+
},
211215
},
212216
},
213217
{
214218
description: "empty values still valid",
215219
input: &Model{},
216220
expected: authorization.AddRolePayload{
217-
Permissions: new([]authorization.PermissionRequest{}),
221+
Permissions: []authorization.PermissionRequest{},
218222
},
219223
expectError: false,
220224
},

0 commit comments

Comments
 (0)