@@ -8,10 +8,14 @@ import (
8
8
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9
9
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10
10
11
+ goapi "github.com/grafana/grafana-openapi-client-go/client"
12
+ "github.com/grafana/grafana-openapi-client-go/client/library_elements"
11
13
"github.com/grafana/grafana-openapi-client-go/models"
12
14
"github.com/grafana/terraform-provider-grafana/v3/internal/common"
13
15
)
14
16
17
+ const libraryPanelKind int64 = 1
18
+
15
19
func resourceLibraryPanel () * common.Resource {
16
20
schema := & schema.Resource {
17
21
@@ -111,7 +115,31 @@ Manages Grafana library panels.
111
115
"grafana_library_panel" ,
112
116
orgResourceIDString ("uid" ),
113
117
schema ,
114
- )
118
+ ).WithLister (listerFunction (listLibraryPanels ))
119
+ }
120
+
121
+ func listLibraryPanels (ctx context.Context , client * goapi.GrafanaHTTPAPI , data * ListerData ) ([]string , error ) {
122
+ orgIDs , err := data .OrgIDs (client )
123
+ if err != nil {
124
+ return nil , err
125
+ }
126
+
127
+ var ids []string
128
+ for _ , orgID := range orgIDs {
129
+ client = client .Clone ().WithOrgID (orgID )
130
+
131
+ params := library_elements .NewGetLibraryElementsParams ().WithKind (common .Ref (libraryPanelKind ))
132
+ resp , err := client .LibraryElements .GetLibraryElements (params )
133
+ if err != nil {
134
+ return nil , err
135
+ }
136
+
137
+ for _ , panel := range resp .Payload .Result .Elements {
138
+ ids = append (ids , MakeOrgResourceID (orgID , panel .UID ))
139
+ }
140
+ }
141
+
142
+ return ids , nil
115
143
}
116
144
117
145
func createLibraryPanel (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
@@ -184,7 +212,7 @@ func updateLibraryPanel(ctx context.Context, d *schema.ResourceData, meta interf
184
212
body := models.PatchLibraryElementCommand {
185
213
Name : d .Get ("name" ).(string ),
186
214
Model : panelJSON ,
187
- Kind : 1 ,
215
+ Kind : libraryPanelKind ,
188
216
Version : int64 (d .Get ("version" ).(int )),
189
217
}
190
218
_ , body .FolderUID = SplitOrgResourceID (d .Get ("folder_uid" ).(string ))
@@ -213,7 +241,7 @@ func makeLibraryPanel(d *schema.ResourceData) models.CreateLibraryElementCommand
213
241
UID : d .Get ("uid" ).(string ),
214
242
Name : d .Get ("name" ).(string ),
215
243
Model : panelJSON ,
216
- Kind : 1 ,
244
+ Kind : libraryPanelKind ,
217
245
}
218
246
_ , panel .FolderUID = SplitOrgResourceID (d .Get ("folder_uid" ).(string ))
219
247
0 commit comments