@@ -9,22 +9,18 @@ import (
99 "github.com/scaleway/scaleway-sdk-go/scw"
1010)
1111
12- func SweepToken (scwClient * scw.Client ) error {
12+ func SweepToken (scwClient * scw.Client , region scw. Region , projectScoped bool ) error {
1313 accountAPI := accountSDK .NewProjectAPI (scwClient )
1414 cockpitAPI := cockpit .NewRegionalAPI (scwClient )
1515
16- listProjects , err := accountAPI . ListProjects ( & accountSDK. ProjectAPIListProjectsRequest {}, scw . WithAllPages () )
17- if err != nil {
18- return fmt .Errorf ("failed to list projects: %w" , err )
16+ defaultProjectID , exists := scwClient . GetDefaultProjectID ( )
17+ if projectScoped && ( ! exists || ( defaultProjectID == "" )) {
18+ return fmt .Errorf ("failed to get the default project id for a project scoped sweep" )
1919 }
20-
21- for _ , project := range listProjects .Projects {
22- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
23- continue
24- }
25-
20+ if projectScoped {
2621 listTokens , err := cockpitAPI .ListTokens (& cockpit.RegionalAPIListTokensRequest {
27- ProjectID : project .ID ,
22+ ProjectID : defaultProjectID ,
23+ Region : region ,
2824 }, scw .WithAllPages ())
2925 if err != nil {
3026 return fmt .Errorf ("failed to list tokens: %w" , err )
@@ -38,91 +34,170 @@ func SweepToken(scwClient *scw.Client) error {
3834 return fmt .Errorf ("failed to delete token: %w" , err )
3935 }
4036 }
37+ } else {
38+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
39+ if err != nil {
40+ return fmt .Errorf ("failed to list projects: %w" , err )
41+ }
42+
43+ for _ , project := range listProjects .Projects {
44+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
45+ continue
46+ }
47+
48+ listTokens , err := cockpitAPI .ListTokens (& cockpit.RegionalAPIListTokensRequest {
49+ ProjectID : project .ID ,
50+ Region : region ,
51+ }, scw .WithAllPages ())
52+ if err != nil {
53+ return fmt .Errorf ("failed to list tokens: %w" , err )
54+ }
55+
56+ for _ , token := range listTokens .Tokens {
57+ err = cockpitAPI .DeleteToken (& cockpit.RegionalAPIDeleteTokenRequest {
58+ TokenID : token .ID ,
59+ })
60+ if err != nil {
61+ return fmt .Errorf ("failed to delete token: %w" , err )
62+ }
63+ }
64+ }
4165 }
4266
4367 return nil
4468}
4569
46- func SweepGrafanaUser (scwClient * scw.Client ) error {
70+ func SweepGrafanaUser (scwClient * scw.Client , projectScoped bool ) error {
4771 accountAPI := accountSDK .NewProjectAPI (scwClient )
4872 cockpitAPI := cockpit .NewGlobalAPI (scwClient )
4973
50- listProjects , err := accountAPI . ListProjects ( & accountSDK. ProjectAPIListProjectsRequest {}, scw . WithAllPages () )
51- if err != nil {
52- return fmt .Errorf ("failed to list projects: %w" , err )
74+ defaultProjectID , exists := scwClient . GetDefaultProjectID ( )
75+ if projectScoped && ( ! exists || ( defaultProjectID == "" )) {
76+ return fmt .Errorf ("failed to get the default project id for a project scoped sweep" )
5377 }
54-
55- for _ , project := range listProjects .Projects {
56- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
57- continue
58- }
59-
78+ if projectScoped {
6079 listGrafanaUsers , err := cockpitAPI .ListGrafanaUsers (& cockpit.GlobalAPIListGrafanaUsersRequest {
61- ProjectID : project . ID ,
80+ ProjectID : defaultProjectID ,
6281 }, scw .WithAllPages ())
6382 if err != nil {
6483 return fmt .Errorf ("failed to list grafana users: %w" , err )
6584 }
6685
6786 for _ , grafanaUser := range listGrafanaUsers .GrafanaUsers {
6887 err = cockpitAPI .DeleteGrafanaUser (& cockpit.GlobalAPIDeleteGrafanaUserRequest {
69- ProjectID : project . ID ,
88+ ProjectID : defaultProjectID ,
7089 GrafanaUserID : grafanaUser .ID ,
7190 })
7291 if err != nil {
7392 return fmt .Errorf ("failed to delete grafana user: %w" , err )
7493 }
7594 }
95+ } else {
96+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
97+ if err != nil {
98+ return fmt .Errorf ("failed to list projects: %w" , err )
99+ }
100+
101+ for _ , project := range listProjects .Projects {
102+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
103+ continue
104+ }
105+
106+ listGrafanaUsers , err := cockpitAPI .ListGrafanaUsers (& cockpit.GlobalAPIListGrafanaUsersRequest {
107+ ProjectID : project .ID ,
108+ }, scw .WithAllPages ())
109+ if err != nil {
110+ return fmt .Errorf ("failed to list grafana users: %w" , err )
111+ }
112+
113+ for _ , grafanaUser := range listGrafanaUsers .GrafanaUsers {
114+ err = cockpitAPI .DeleteGrafanaUser (& cockpit.GlobalAPIDeleteGrafanaUserRequest {
115+ ProjectID : project .ID ,
116+ GrafanaUserID : grafanaUser .ID ,
117+ })
118+ if err != nil {
119+ return fmt .Errorf ("failed to delete grafana user: %w" , err )
120+ }
121+ }
122+ }
76123 }
77124
78125 return nil
79126}
80127
81- func SweepSource (scwClient * scw.Client , region scw.Region ) error {
128+ func SweepSource (scwClient * scw.Client , region scw.Region , projectScoped bool ) error {
82129 accountAPI := accountSDK .NewProjectAPI (scwClient )
83130 cockpitAPI := cockpit .NewRegionalAPI (scwClient )
84-
85- listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
86- if err != nil {
87- return fmt .Errorf ("failed to list projects: %w" , err )
131+ defaultProjectID , exists := scwClient .GetDefaultProjectID ()
132+ if projectScoped && (! exists || (defaultProjectID == "" )) {
133+ return fmt .Errorf ("failed to get the default project id for a project scoped sweep" )
88134 }
89-
90- for _ , project := range listProjects .Projects {
91- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
92- continue
93- }
94-
135+ if projectScoped {
95136 listDatasources , err := cockpitAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
96- ProjectID : project . ID ,
137+ ProjectID : defaultProjectID ,
97138 Region : region ,
98139 }, scw .WithAllPages ())
99140 if err != nil {
100141 return fmt .Errorf ("failed to list sources: %w" , err )
101142 }
102143
103- for _ , datsource := range listDatasources .DataSources {
144+ for _ , datasource := range listDatasources .DataSources {
145+ if datasource .Origin == cockpit .DataSourceOriginScaleway {
146+ continue
147+ }
104148 err = cockpitAPI .DeleteDataSource (& cockpit.RegionalAPIDeleteDataSourceRequest {
105- DataSourceID : datsource .ID ,
149+ DataSourceID : datasource .ID ,
106150 Region : region ,
107151 })
108152 if err != nil {
109153 return fmt .Errorf ("failed to delete cockpit source: %w" , err )
110154 }
111155 }
156+ } else {
157+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
158+ if err != nil {
159+ return fmt .Errorf ("failed to list projects: %w" , err )
160+ }
161+
162+ for _ , project := range listProjects .Projects {
163+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
164+ continue
165+ }
166+
167+ listDatasources , err := cockpitAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
168+ ProjectID : project .ID ,
169+ Region : region ,
170+ }, scw .WithAllPages ())
171+ if err != nil {
172+ return fmt .Errorf ("failed to list sources: %w" , err )
173+ }
174+
175+ for _ , datsource := range listDatasources .DataSources {
176+ err = cockpitAPI .DeleteDataSource (& cockpit.RegionalAPIDeleteDataSourceRequest {
177+ DataSourceID : datsource .ID ,
178+ Region : region ,
179+ })
180+ if err != nil {
181+ return fmt .Errorf ("failed to delete cockpit source: %w" , err )
182+ }
183+ }
184+ }
112185 }
113186
114187 return nil
115188}
116189
117- func SweepAllLocalities (scwClient * scw.Client ) error {
118- if err := SweepToken (scwClient ); err != nil {
119- return err
190+ func SweepAllLocalities (scwClient * scw.Client , projectScoped bool ) error {
191+ for _ , region := range (& cockpit.RegionalAPI {}).Regions () {
192+ if err := SweepToken (scwClient , region , projectScoped ); err != nil {
193+ return err
194+ }
120195 }
121- if err := SweepGrafanaUser (scwClient ); err != nil {
196+ if err := SweepGrafanaUser (scwClient , projectScoped ); err != nil {
122197 return err
123198 }
124199 for _ , region := range (& cockpit.RegionalAPI {}).Regions () {
125- if err := SweepSource (scwClient , region ); err != nil {
200+ if err := SweepSource (scwClient , region , projectScoped ); err != nil {
126201 return err
127202 }
128203 }
0 commit comments