@@ -2,11 +2,11 @@ package grafana_test
22
33import (
44 "fmt"
5- "strings"
65 "testing"
76
87 gapi "github.com/grafana/grafana-api-golang-client"
9- "github.com/grafana/terraform-provider-grafana/internal/common"
8+ "github.com/grafana/grafana-openapi-client-go/client/playlists"
9+ "github.com/grafana/grafana-openapi-client-go/models"
1010 "github.com/grafana/terraform-provider-grafana/internal/resources/grafana"
1111 "github.com/grafana/terraform-provider-grafana/internal/testutils"
1212 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
@@ -20,15 +20,16 @@ func TestAccPlaylist_basic(t *testing.T) {
2020 testutils .CheckOSSTestsEnabled (t )
2121
2222 rName := acctest .RandomWithPrefix ("tf-acc-test" )
23+ var playlist models.Playlist
2324
2425 resource .ParallelTest (t , resource.TestCase {
2526 ProviderFactories : testutils .ProviderFactories ,
26- CheckDestroy : testAccPlaylistDestroy ,
27+ CheckDestroy : playlistCheckExists . destroyed ( & playlist , nil ) ,
2728 Steps : []resource.TestStep {
2829 {
2930 Config : testAccPlaylistConfigBasic (rName , "5m" ),
3031 Check : resource .ComposeTestCheckFunc (
31- testAccPlaylistCheckExists ( ),
32+ playlistCheckExists . exists ( paylistResource , & playlist ),
3233 resource .TestMatchResourceAttr (paylistResource , "id" , defaultOrgIDRegexp ),
3334 resource .TestCheckResourceAttr (paylistResource , "name" , rName ),
3435 resource .TestCheckResourceAttr (paylistResource , "item.#" , "2" ),
@@ -56,29 +57,30 @@ func TestAccPlaylist_update(t *testing.T) {
5657
5758 rName := acctest .RandomWithPrefix ("tf-acc-test" )
5859 updatedName := "updated name"
60+ var playlist models.Playlist
5961
6062 resource .ParallelTest (t , resource.TestCase {
6163 ProviderFactories : testutils .ProviderFactories ,
62- CheckDestroy : testAccPlaylistDestroy ,
64+ CheckDestroy : playlistCheckExists . destroyed ( & playlist , nil ) ,
6365 Steps : []resource.TestStep {
6466 {
6567 Config : testAccPlaylistConfigBasic (rName , "5m" ),
6668 Check : resource .ComposeTestCheckFunc (
67- testAccPlaylistCheckExists ( ),
69+ playlistCheckExists . exists ( paylistResource , & playlist ),
6870 resource .TestCheckResourceAttr (paylistResource , "interval" , "5m" ),
6971 ),
7072 },
7173 {
7274 Config : testAccPlaylistConfigBasic (rName , "10m" ),
7375 Check : resource .ComposeTestCheckFunc (
74- testAccPlaylistCheckExists ( ),
76+ playlistCheckExists . exists ( paylistResource , & playlist ),
7577 resource .TestCheckResourceAttr (paylistResource , "interval" , "10m" ),
7678 ),
7779 },
7880 {
7981 Config : testAccPlaylistConfigUpdate (updatedName ),
8082 Check : resource .ComposeTestCheckFunc (
81- testAccPlaylistCheckExists ( ),
83+ playlistCheckExists . exists ( paylistResource , & playlist ),
8284 resource .TestMatchResourceAttr (paylistResource , "id" , defaultOrgIDRegexp ),
8385 resource .TestCheckResourceAttr (paylistResource , "name" , updatedName ),
8486 resource .TestCheckResourceAttr (paylistResource , "item.#" , "1" ),
@@ -103,15 +105,16 @@ func TestAccPlaylist_disappears(t *testing.T) {
103105 testutils .CheckOSSTestsEnabled (t )
104106
105107 rName := acctest .RandomWithPrefix ("tf-acc-test" )
108+ var playlist models.Playlist
106109
107110 resource .ParallelTest (t , resource.TestCase {
108111 ProviderFactories : testutils .ProviderFactories ,
109- CheckDestroy : testAccPlaylistDestroy ,
112+ CheckDestroy : playlistCheckExists . destroyed ( & playlist , nil ) ,
110113 Steps : []resource.TestStep {
111114 {
112115 Config : testAccPlaylistConfigBasic (rName , "5m" ),
113116 Check : resource .ComposeTestCheckFunc (
114- testAccPlaylistCheckExists ( ),
117+ playlistCheckExists . exists ( paylistResource , & playlist ),
115118 testAccPlaylistDisappears (),
116119 ),
117120 ExpectNonEmptyPlan : true ,
@@ -121,14 +124,15 @@ func TestAccPlaylist_disappears(t *testing.T) {
121124}
122125
123126func TestAccPlaylist_inOrg (t * testing.T ) {
124- testutils .CheckOSSTestsEnabled (t )
127+ testutils .CheckOSSTestsEnabled (t , ">=9.0.0" ) // Querying org-specific playlists is broken pre-9
125128
126129 rName := acctest .RandomWithPrefix ("tf-acc-test" )
127130 var org gapi.Org
131+ var playlist models.Playlist
128132
129133 resource .ParallelTest (t , resource.TestCase {
130134 ProviderFactories : testutils .ProviderFactories ,
131- CheckDestroy : testAccPlaylistDestroy ,
135+ CheckDestroy : playlistCheckExists . destroyed ( & playlist , & org ) ,
132136 Steps : []resource.TestStep {
133137 {
134138 Config : testAccPlaylistConfigInOrg (rName , "5m" ),
@@ -138,7 +142,7 @@ func TestAccPlaylist_inOrg(t *testing.T) {
138142 testAccOrganizationCheckExists ("grafana_organization.test" , & org ),
139143 checkResourceIsInOrg (paylistResource , "grafana_organization.test" ),
140144
141- testAccPlaylistCheckExists ( ),
145+ playlistCheckExists . exists ( paylistResource , & playlist ),
142146 resource .TestCheckResourceAttr (paylistResource , "name" , rName ),
143147 resource .TestCheckResourceAttr (paylistResource , "item.#" , "2" ),
144148 resource .TestCheckTypeSetElemNestedAttrs (paylistResource , "item.*" , map [string ]string {
@@ -160,39 +164,6 @@ func TestAccPlaylist_inOrg(t *testing.T) {
160164 })
161165}
162166
163- func testAccPlaylistCheckExists () resource.TestCheckFunc {
164- return func (s * terraform.State ) error {
165- rs , ok := s .RootModule ().Resources [paylistResource ]
166- if ! ok {
167- return fmt .Errorf ("resource not found: %s\n %#v" , paylistResource , s .RootModule ().Resources )
168- }
169-
170- if rs .Primary .ID == "" {
171- return fmt .Errorf ("resource id not set" )
172- }
173-
174- client := testutils .Provider .Meta ().(* common.Client ).GrafanaAPI
175-
176- orgID , playlistID := grafana .SplitOrgResourceID (rs .Primary .ID )
177-
178- // If the org ID is set, check that the playlist doesn't exist in the default org
179- if orgID > 1 {
180- playlist , err := client .Playlist (playlistID )
181- if err == nil || playlist != nil {
182- return fmt .Errorf ("expected no playlist with ID %s in default org but found one" , playlistID )
183- }
184- client = client .WithOrgID (orgID )
185- }
186-
187- _ , err := client .Playlist (playlistID )
188- if err != nil {
189- return fmt .Errorf ("error getting playlist: %w" , err )
190- }
191-
192- return nil
193- }
194- }
195-
196167func testAccPlaylistDisappears () resource.TestCheckFunc {
197168 return func (s * terraform.State ) error {
198169 rs , ok := s .RootModule ().Resources [paylistResource ]
@@ -204,36 +175,12 @@ func testAccPlaylistDisappears() resource.TestCheckFunc {
204175 return fmt .Errorf ("resource id not set" )
205176 }
206177
207- client , _ , playlistID := grafana .ClientFromExistingOrgResource (testutils .Provider .Meta (), rs .Primary .ID )
208-
209- return client . DeletePlaylist ( playlistID )
178+ client , _ , playlistID := grafana .OAPIClientFromExistingOrgResource (testutils .Provider .Meta (), rs .Primary .ID )
179+ _ , err := client . Playlists . DeletePlaylist ( playlists . NewDeletePlaylistParams (). WithUID ( playlistID ), nil )
180+ return err
210181 }
211182}
212183
213- func testAccPlaylistDestroy (s * terraform.State ) error {
214- for _ , rs := range s .RootModule ().Resources {
215- if rs .Type != "grafana_playlist" {
216- continue
217- }
218-
219- client , _ , playlistID := grafana .ClientFromExistingOrgResource (testutils .Provider .Meta (), rs .Primary .ID )
220- playlist , err := client .Playlist (playlistID )
221-
222- if err != nil {
223- if strings .HasPrefix (err .Error (), "status: 404" ) {
224- continue
225- }
226- return err
227- }
228-
229- if playlist != nil && playlist .ID != 0 {
230- return fmt .Errorf ("Playlist still exists: %+v" , playlist )
231- }
232- }
233-
234- return nil
235- }
236-
237184func testAccPlaylistConfigBasic (name , interval string ) string {
238185 return fmt .Sprintf (`
239186resource "grafana_playlist" "test" {
0 commit comments