88 "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
99 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1010
11- gapi "github.com/grafana/grafana-api-golang-client"
11+ "github.com/grafana/grafana-openapi-client-go/client/library_elements"
12+ "github.com/grafana/grafana-openapi-client-go/models"
1213 "github.com/grafana/terraform-provider-grafana/internal/common"
1314)
1415
@@ -113,25 +114,28 @@ Manages Grafana library panels.
113114}
114115
115116func createLibraryPanel (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
116- client , _ := ClientFromNewOrgResource (meta , d )
117+ client , _ := OAPIClientFromNewOrgResource (meta , d )
117118
118119 panel := makeLibraryPanel (d )
119- resp , err := client .NewLibraryPanel (panel )
120+ params := library_elements .NewCreateLibraryElementParams ().WithBody (& panel )
121+ resp , err := client .LibraryElements .CreateLibraryElement (params , nil )
120122 if err != nil {
121123 return diag .FromErr (err )
122124 }
123- d .SetId (MakeOrgResourceID (resp .OrgID , resp .UID ))
125+ createdPanel := resp .Payload .Result
126+ d .SetId (MakeOrgResourceID (createdPanel .OrgID , createdPanel .UID ))
124127 return readLibraryPanel (ctx , d , meta )
125128}
126129
127130func readLibraryPanel (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
128- client , orgID , uid := ClientFromExistingOrgResource (meta , d .Id ())
131+ client , orgID , uid := OAPIClientFromExistingOrgResource (meta , d .Id ())
129132
130- panel , err := client . LibraryPanelByUID (uid )
131- var diags diag. Diagnostics
133+ params := library_elements . NewGetLibraryElementByUIDParams (). WithLibraryElementUID (uid )
134+ resp , err := client . LibraryElements . GetLibraryElementByUID ( params , nil )
132135 if err , shouldReturn := common .CheckReadError ("library panel" , d , err ); shouldReturn {
133136 return err
134137 }
138+ panel := resp .Payload .Result
135139
136140 modelJSONBytes , err := json .Marshal (panel .Model )
137141 if err != nil {
@@ -147,7 +151,7 @@ func readLibraryPanel(ctx context.Context, d *schema.ResourceData, meta interfac
147151 d .Set ("uid" , panel .UID )
148152 d .Set ("panel_id" , panel .ID )
149153 d .Set ("org_id" , strconv .FormatInt (panel .OrgID , 10 ))
150- d .Set ("folder_id" , MakeOrgResourceID (orgID , panel .Folder ))
154+ d .Set ("folder_id" , MakeOrgResourceID (orgID , panel .FolderID ))
151155 d .Set ("description" , panel .Description )
152156 d .Set ("type" , panel .Type )
153157 d .Set ("name" , panel .Name )
@@ -158,53 +162,67 @@ func readLibraryPanel(ctx context.Context, d *schema.ResourceData, meta interfac
158162 d .Set ("created" , panel .Meta .Created .String ())
159163 d .Set ("updated" , panel .Meta .Updated .String ())
160164
161- connections , err := client .LibraryPanelConnections (uid )
165+ getConnParams := library_elements .NewGetLibraryElementConnectionsParams ().WithLibraryElementUID (uid )
166+ connResp , err := client .LibraryElements .GetLibraryElementConnections (getConnParams , nil )
162167 if err != nil {
163168 return diag .FromErr (err )
164169 }
170+ connections := connResp .Payload .Result
165171
166- dashboardIds := make ([]int64 , 0 , len (* connections ))
167- for _ , connection := range * connections {
168- dashboardIds = append (dashboardIds , connection .DashboardID )
172+ dashboardIds := make ([]int64 , 0 , len (connections ))
173+ for _ , connection := range connections {
174+ dashboardIds = append (dashboardIds , connection .ConnectionID )
169175 }
170176 d .Set ("dashboard_ids" , dashboardIds )
171177
172- return diags
178+ return nil
173179}
174180
175181func updateLibraryPanel (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
176- client , _ , uid := ClientFromExistingOrgResource (meta , d .Id ())
177- panel := makeLibraryPanel (d )
182+ client , _ , uid := OAPIClientFromExistingOrgResource (meta , d .Id ())
183+
184+ modelJSON := d .Get ("model_json" ).(string )
185+ panelJSON , _ := unmarshalLibraryPanelModelJSON (modelJSON )
178186
179- resp , err := client .PatchLibraryPanel (uid , panel )
187+ _ , folderIDStr := SplitOrgResourceID (d .Get ("folder_id" ).(string ))
188+ folderID , _ := strconv .ParseInt (folderIDStr , 10 , 64 )
189+ params := library_elements .NewUpdateLibraryElementParams ().WithLibraryElementUID (uid ).WithBody (& models.PatchLibraryElementCommand {
190+ Name : d .Get ("name" ).(string ),
191+ FolderID : folderID ,
192+ Model : panelJSON ,
193+ Kind : 1 ,
194+ Version : int64 (d .Get ("version" ).(int )),
195+ })
196+ resp , err := client .LibraryElements .UpdateLibraryElement (params , nil )
180197 if err != nil {
181198 return diag .FromErr (err )
182199 }
183- d .SetId (MakeOrgResourceID (resp .OrgID , resp .UID ))
200+ updatedPanel := resp .Payload .Result
201+ d .SetId (MakeOrgResourceID (updatedPanel .OrgID , updatedPanel .UID ))
184202 return readLibraryPanel (ctx , d , meta )
185203}
186204
187205func deleteLibraryPanel (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
188- client , _ , uid := ClientFromExistingOrgResource (meta , d .Id ())
189- _ , err := client .DeleteLibraryPanel (uid )
206+ client , _ , uid := OAPIClientFromExistingOrgResource (meta , d .Id ())
207+ params := library_elements .NewDeleteLibraryElementByUIDParams ().WithLibraryElementUID (uid )
208+ _ , err := client .LibraryElements .DeleteLibraryElementByUID (params , nil )
190209 return diag .FromErr (err )
191210}
192211
193- func makeLibraryPanel (d * schema.ResourceData ) gapi. LibraryPanel {
212+ func makeLibraryPanel (d * schema.ResourceData ) models. CreateLibraryElementCommand {
194213 modelJSON := d .Get ("model_json" ).(string )
195- panelJSON , err := unmarshalLibraryPanelModelJSON (modelJSON )
214+ panelJSON , _ := unmarshalLibraryPanelModelJSON (modelJSON )
196215
197216 _ , folderIDStr := SplitOrgResourceID (d .Get ("folder_id" ).(string ))
198217 folderID , _ := strconv .ParseInt (folderIDStr , 10 , 64 )
199- panel := gapi.LibraryPanel {
200- UID : d .Get ("uid" ).(string ),
201- Name : d .Get ("name" ).(string ),
202- Folder : folderID ,
203- Model : panelJSON ,
204- }
205- if err != nil {
206- return panel
218+ panel := models.CreateLibraryElementCommand {
219+ UID : d .Get ("uid" ).(string ),
220+ Name : d .Get ("name" ).(string ),
221+ FolderID : folderID ,
222+ Model : panelJSON ,
223+ Kind : 1 ,
207224 }
225+
208226 return panel
209227}
210228
0 commit comments