Skip to content

Commit 22cb07f

Browse files
Tanchwankvuong
authored andcommitted
changed api to generic call without iam package
1 parent 4ac9ebe commit 22cb07f

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed

internal/providers/pluginfw/products/permission/resource_permission.go

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ import (
2121
"github.com/hashicorp/terraform-plugin-framework/types"
2222
)
2323

24-
const resourceName = "permission"
24+
const (
25+
resourceName = "permission"
26+
apiPath = fmt.Sprintf("/api/2.0/permissions/%s/%s", plan.ObjectType.ValueString(), plan.ObjectID.ValueString())
27+
)
2528

2629
var (
2730
_ resource.Resource = &permissionResource{}
@@ -37,6 +40,7 @@ type permissionResource struct {
3740
context context.Context
3841
}
3942

43+
4044
func (r *permissionResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
4145
if req.ProviderData == nil {
4246
return
@@ -110,12 +114,20 @@ func (r *permissionResource) Create(ctx context.Context, req resource.CreateRequ
110114
})
111115
}
112116

117+
113118
// create the permission
114-
acl, err := r.client.Set.(plan.ObjectID, iam.PermissionsRequest{
115-
RequestObjectId: types.StringValue(plan.ObjectID),
116-
RequestObjectType: types.StringValue(plan.ObjectType),
119+
err := r.client.Patch(ctx, apiPath, iam.PermissionsRequest{
120+
RequestObjectId: plan.ObjectID.ValueString(),
121+
RequestObjectType: plan.ObjectType.ValueString(),
117122
AccessControlList: acls,
118123
})
124+
if err != nil {
125+
resp.Diagnostics.AddError(
126+
//TODO ADD ERROR MESSAGE IN LINE WITH Provider
127+
"Unable to Create Permission",
128+
fmt.Sprintf("Error: %s", err.Error()),
129+
)
130+
119131

120132
plan.LastUpdated = types.StringValue(time.Now().Format(time.RFC850))
121133

@@ -138,21 +150,33 @@ func (r *permissionResource) Read(ctx context.Context, req resource.ReadRequest,
138150
return
139151
}
140152

153+
141154
//Get refreshed acls from API
142-
acl, err := r.client.Get(ctx, state.ObjectID)
155+
var getResponse map[string]interface{}
156+
err := r.client.Get(ctx, apiPath, nil, &getResponse)
143157
if err != nil {
144158
resp.Diagnostics.AddError(
145159
"Failed to get permission",
146-
"Unable to read permission"+state.ObjectID.ValueString()": "+err.Error(),
160+
fmt.Sprintf("Unable to read permission, %s", err.Error()),
147161
)
148162
return
149163
}
150164

151165
//Overwrite data with refreshed state
166+
//TODO: parse getResponse to permissionResourceModel
152167
state.AccessControlList = []permissionAccessControlListModel{}
168+
for _, acl := range getResponse.AccessControlList {
169+
state.AccessControlList = append(state.AccessControlList, permissionAccessControlListModel{
170+
ServicePrincipalName: types.StringValue(acl.ServicePrincipalName),
171+
GroupName: types.StringValue(acl.GroupName),
172+
UserName: types.StringValue(acl.UserName),
173+
PermissionLevel: types.StringValue(acl.PermissionLevel),
174+
})
175+
}
176+
153177

154178
//Set refreshed State
155-
diags = resp.State.Set(ctx, state)
179+
diags = resp.State.Set(ctx, &state)
156180
resp.Diagnostics.Append(diags...)
157181
if resp.Diagnostics.HasError() {
158182
return

0 commit comments

Comments
 (0)