@@ -92,18 +92,24 @@ func resourceSumologicMonitorsLibraryFolder() *schema.Resource {
9292 Type : schema .TypeString ,
9393 Required : true ,
9494 },
95+
9596 "post_request_map" : {
9697 Type : schema .TypeMap ,
9798 Optional : true ,
9899 Elem : & schema.Schema {
99100 Type : schema .TypeString ,
100101 },
101102 },
103+
104+ "obj_permission" : GetCmfFgpObjPermSetSchema (),
102105 },
103106 }
104107}
105108
109+ const fgpTargetType = "monitors"
110+
106111func resourceSumologicMonitorsLibraryFolderCreate (d * schema.ResourceData , meta interface {}) error {
112+
107113 c := meta .(* Client )
108114 if d .Id () == "" {
109115 folder := resourceToMonitorsLibraryFolder (d )
@@ -122,12 +128,24 @@ func resourceSumologicMonitorsLibraryFolderCreate(d *schema.ResourceData, meta i
122128 return err
123129 }
124130
131+ permStmts , convErr := ResourceToCmfFgpPermStmts (d , monitorDefinitionID )
132+ if convErr != nil {
133+ return convErr
134+ }
135+ _ , fgpErr := c .SetCmfFgp (fgpTargetType , CmfFgpRequest {
136+ PermissionStatements : permStmts ,
137+ })
138+ if fgpErr != nil {
139+ return fgpErr
140+ }
141+
125142 d .SetId (monitorDefinitionID )
126143 }
127144 return resourceSumologicMonitorsLibraryFolderRead (d , meta )
128145}
129146
130147func resourceSumologicMonitorsLibraryFolderRead (d * schema.ResourceData , meta interface {}) error {
148+
131149 c := meta .(* Client )
132150
133151 folder , err := c .GetMonitorsLibraryFolder (d .Id ())
@@ -141,6 +159,18 @@ func resourceSumologicMonitorsLibraryFolderRead(d *schema.ResourceData, meta int
141159 return nil
142160 }
143161
162+ fgpResponse , fgpErr := c .GetCmfFgp (fgpTargetType , folder .ID )
163+ if fgpErr != nil {
164+ // if FGP endpoint is not enabled (not implemented), we should suppress this error
165+ if ! HasErrorCode (fgpErr .Error (), "not_implemented_yet" ) {
166+ return fgpErr
167+ } else {
168+ log .Printf ("[WARN] FGP Feature has not been enabled yet. Suppressing \" not_implemented_yet\" error under GetCmfFgp operation." )
169+ }
170+ } else {
171+ CmfFgpPermStmtsSetToResource (d , fgpResponse .PermissionStatements )
172+ }
173+
144174 d .Set ("created_by" , folder .CreatedBy )
145175 d .Set ("created_at" , folder .CreatedAt )
146176 d .Set ("modified_by" , folder .ModifiedBy )
@@ -158,13 +188,44 @@ func resourceSumologicMonitorsLibraryFolderRead(d *schema.ResourceData, meta int
158188}
159189
160190func resourceSumologicMonitorsLibraryFolderUpdate (d * schema.ResourceData , meta interface {}) error {
191+
161192 c := meta .(* Client )
162- monitor := resourceToMonitorsLibraryFolder (d )
163- monitor .Type = "MonitorsLibraryFolderUpdate"
164- err := c .UpdateMonitorsLibraryFolder (monitor )
193+ monitorFolder := resourceToMonitorsLibraryFolder (d )
194+ monitorFolder .Type = "MonitorsLibraryFolderUpdate"
195+ err := c .UpdateMonitorsLibraryFolder (monitorFolder )
165196 if err != nil {
166197 return err
167198 }
199+
200+ // converting Reource FGP to Struct
201+ permStmts , convErr := ResourceToCmfFgpPermStmts (d , monitorFolder .ID )
202+ if convErr != nil {
203+ return convErr
204+ }
205+
206+ // reading FGP from Backend to reconcille
207+ fgpGetResponse , fgpGetErr := c .GetCmfFgp (fgpTargetType , monitorFolder .ID )
208+ if fgpGetErr != nil {
209+ // if FGP endpoint is not enabled (not implemented) and FGP feature is not used,
210+ // we should suppress this error
211+ if ! HasErrorCode (fgpGetErr .Error (), "not_implemented_yet" ) && len (permStmts ) == 0 {
212+ return fgpGetErr
213+ } else {
214+ log .Printf ("[WARN] FGP Feature has not been enabled yet. Suppressing \" not_implemented_yet\" error under GetCmfFgp operation." )
215+ }
216+ }
217+
218+ if len (permStmts ) > 0 || fgpGetResponse != nil {
219+ _ , fgpSetErr := c .SetCmfFgp (fgpTargetType , CmfFgpRequest {
220+ PermissionStatements : ReconcileFgpPermStmtsWithEmptyPerms (
221+ permStmts , fgpGetResponse .PermissionStatements ,
222+ ),
223+ })
224+ if fgpSetErr != nil {
225+ return fgpSetErr
226+ }
227+ }
228+
168229 return resourceSumologicMonitorsLibraryFolderRead (d , meta )
169230}
170231
0 commit comments