11package cockpittestfuncs
22
33import (
4- "fmt"
5- "strings"
6-
74 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8- accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
9- "github.com/scaleway/scaleway-sdk-go/api/cockpit/v1"
5+ "github.com/scaleway/scaleway-sdk-go/api/cockpit/v1/sweepers"
106 "github.com/scaleway/scaleway-sdk-go/scw"
117 "github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
12- "github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
138)
149
1510func AddTestSweepers () {
16- resource .AddTestSweepers ("scaleway_cockpit" , & resource.Sweeper {
17- Name : "scaleway_cockpit" ,
18- F : testSweepCockpit ,
19- })
2011 resource .AddTestSweepers ("scaleway_cockpit_grafana_user" , & resource.Sweeper {
2112 Name : "scaleway_cockpit_grafana_user" ,
2213 F : testSweepCockpitGrafanaUser ,
@@ -32,161 +23,13 @@ func AddTestSweepers() {
3223}
3324
3425func testSweepCockpitToken (_ string ) error {
35- return acctest .Sweep (func (scwClient * scw.Client ) error {
36- accountAPI := accountSDK .NewProjectAPI (scwClient )
37- cockpitAPI := cockpit .NewRegionalAPI (scwClient )
38-
39- listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
40- if err != nil {
41- return fmt .Errorf ("failed to list projects: %w" , err )
42- }
43-
44- for _ , project := range listProjects .Projects {
45- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
46- continue
47- }
48-
49- listTokens , err := cockpitAPI .ListTokens (& cockpit.RegionalAPIListTokensRequest {
50- ProjectID : project .ID ,
51- }, scw .WithAllPages ())
52- if err != nil {
53- if httperrors .Is404 (err ) {
54- return nil
55- }
56-
57- return fmt .Errorf ("failed to list tokens: %w" , err )
58- }
59-
60- for _ , token := range listTokens .Tokens {
61- err = cockpitAPI .DeleteToken (& cockpit.RegionalAPIDeleteTokenRequest {
62- TokenID : token .ID ,
63- })
64- if err != nil {
65- if ! httperrors .Is404 (err ) {
66- return fmt .Errorf ("failed to delete token: %w" , err )
67- }
68- }
69- }
70- }
71-
72- return nil
73- })
26+ return acctest .Sweep (sweepers .SweepToken )
7427}
7528
7629func testSweepCockpitGrafanaUser (_ string ) error {
77- return acctest .Sweep (func (scwClient * scw.Client ) error {
78- accountAPI := accountSDK .NewProjectAPI (scwClient )
79- cockpitAPI := cockpit .NewGlobalAPI (scwClient )
80-
81- listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
82- if err != nil {
83- return fmt .Errorf ("failed to list projects: %w" , err )
84- }
85-
86- for _ , project := range listProjects .Projects {
87- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
88- continue
89- }
90-
91- listGrafanaUsers , err := cockpitAPI .ListGrafanaUsers (& cockpit.GlobalAPIListGrafanaUsersRequest {
92- ProjectID : project .ID ,
93- }, scw .WithAllPages ())
94- if err != nil {
95- if httperrors .Is404 (err ) {
96- return nil
97- }
98-
99- return fmt .Errorf ("failed to list grafana users: %w" , err )
100- }
101-
102- for _ , grafanaUser := range listGrafanaUsers .GrafanaUsers {
103- err = cockpitAPI .DeleteGrafanaUser (& cockpit.GlobalAPIDeleteGrafanaUserRequest {
104- ProjectID : project .ID ,
105- GrafanaUserID : grafanaUser .ID ,
106- })
107- if err != nil {
108- if ! httperrors .Is404 (err ) {
109- return fmt .Errorf ("failed to delete grafana user: %w" , err )
110- }
111- }
112- }
113- }
114-
115- return nil
116- })
117- }
118-
119- func testSweepCockpit (_ string ) error {
120- return acctest .Sweep (func (scwClient * scw.Client ) error {
121- accountAPI := accountSDK .NewProjectAPI (scwClient )
122-
123- listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
124- if err != nil {
125- return fmt .Errorf ("failed to list projects: %w" , err )
126- }
127-
128- for _ , project := range listProjects .Projects {
129- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
130- continue
131- }
132-
133- if err != nil {
134- if ! httperrors .Is404 (err ) {
135- return fmt .Errorf ("failed to deactivate cockpit: %w" , err )
136- }
137- }
138-
139- if err != nil {
140- if ! httperrors .Is404 (err ) {
141- return fmt .Errorf ("failed to deactivate cockpit: %w" , err )
142- }
143- }
144- }
145-
146- return nil
147- })
30+ return acctest .Sweep (sweepers .SweepGrafanaUser )
14831}
14932
15033func testSweepCockpitSource (_ string ) error {
151- return acctest .SweepRegions (scw .AllRegions , func (scwClient * scw.Client , region scw.Region ) error {
152- accountAPI := accountSDK .NewProjectAPI (scwClient )
153- cockpitAPI := cockpit .NewRegionalAPI (scwClient )
154-
155- listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
156- if err != nil {
157- return fmt .Errorf ("failed to list projects: %w" , err )
158- }
159-
160- for _ , project := range listProjects .Projects {
161- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
162- continue
163- }
164-
165- listDatasources , err := cockpitAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
166- ProjectID : project .ID ,
167- Region : region ,
168- }, scw .WithAllPages ())
169- if err != nil {
170- if httperrors .Is404 (err ) {
171- return nil
172- }
173-
174- return fmt .Errorf ("failed to list sources: %w" , err )
175- }
176-
177- for _ , datsource := range listDatasources .DataSources {
178- err = cockpitAPI .DeleteDataSource (& cockpit.RegionalAPIDeleteDataSourceRequest {
179- DataSourceID : datsource .ID ,
180- Region : region ,
181- })
182- if err != nil {
183- if ! httperrors .Is404 (err ) {
184- return fmt .Errorf ("failed to delete cockpit source: %w" , err )
185- }
186- }
187- }
188- }
189-
190- return nil
191- })
34+ return acctest .SweepRegions (scw .AllRegions , sweepers .SweepSource )
19235}
0 commit comments