@@ -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
2629var (
2730 _ resource.Resource = & permissionResource {}
@@ -37,6 +40,7 @@ type permissionResource struct {
3740 context context.Context
3841}
3942
43+
4044func (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