@@ -9,22 +9,17 @@ import (
99 "github.com/scaleway/scaleway-sdk-go/scw"
1010)
1111
12- func SweepToken (scwClient * scw.Client ) error {
12+ func SweepToken (scwClient * scw.Client , 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 ,
2823 }, scw .WithAllPages ())
2924 if err != nil {
3025 return fmt .Errorf ("failed to list tokens: %w" , err )
@@ -38,91 +33,164 @@ func SweepToken(scwClient *scw.Client) error {
3833 return fmt .Errorf ("failed to delete token: %w" , err )
3934 }
4035 }
36+ } else {
37+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
38+ if err != nil {
39+ return fmt .Errorf ("failed to list projects: %w" , err )
40+ }
41+
42+ for _ , project := range listProjects .Projects {
43+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
44+ continue
45+ }
46+
47+ listTokens , err := cockpitAPI .ListTokens (& cockpit.RegionalAPIListTokensRequest {
48+ ProjectID : project .ID ,
49+ }, scw .WithAllPages ())
50+ if err != nil {
51+ return fmt .Errorf ("failed to list tokens: %w" , err )
52+ }
53+
54+ for _ , token := range listTokens .Tokens {
55+ err = cockpitAPI .DeleteToken (& cockpit.RegionalAPIDeleteTokenRequest {
56+ TokenID : token .ID ,
57+ })
58+ if err != nil {
59+ return fmt .Errorf ("failed to delete token: %w" , err )
60+ }
61+ }
62+ }
4163 }
4264
4365 return nil
4466}
4567
46- func SweepGrafanaUser (scwClient * scw.Client ) error {
68+ func SweepGrafanaUser (scwClient * scw.Client , projectScoped bool ) error {
4769 accountAPI := accountSDK .NewProjectAPI (scwClient )
4870 cockpitAPI := cockpit .NewGlobalAPI (scwClient )
4971
50- listProjects , err := accountAPI . ListProjects ( & accountSDK. ProjectAPIListProjectsRequest {}, scw . WithAllPages () )
51- if err != nil {
52- return fmt .Errorf ("failed to list projects: %w" , err )
72+ defaultProjectID , exists := scwClient . GetDefaultProjectID ( )
73+ if projectScoped && ( ! exists || ( defaultProjectID == "" )) {
74+ return fmt .Errorf ("failed to get the default project id for a project scoped sweep" )
5375 }
54-
55- for _ , project := range listProjects .Projects {
56- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
57- continue
58- }
59-
76+ if projectScoped {
6077 listGrafanaUsers , err := cockpitAPI .ListGrafanaUsers (& cockpit.GlobalAPIListGrafanaUsersRequest {
61- ProjectID : project . ID ,
78+ ProjectID : defaultProjectID ,
6279 }, scw .WithAllPages ())
6380 if err != nil {
6481 return fmt .Errorf ("failed to list grafana users: %w" , err )
6582 }
6683
6784 for _ , grafanaUser := range listGrafanaUsers .GrafanaUsers {
6885 err = cockpitAPI .DeleteGrafanaUser (& cockpit.GlobalAPIDeleteGrafanaUserRequest {
69- ProjectID : project . ID ,
86+ ProjectID : defaultProjectID ,
7087 GrafanaUserID : grafanaUser .ID ,
7188 })
7289 if err != nil {
7390 return fmt .Errorf ("failed to delete grafana user: %w" , err )
7491 }
7592 }
93+ } else {
94+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
95+ if err != nil {
96+ return fmt .Errorf ("failed to list projects: %w" , err )
97+ }
98+
99+ for _ , project := range listProjects .Projects {
100+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
101+ continue
102+ }
103+
104+ listGrafanaUsers , err := cockpitAPI .ListGrafanaUsers (& cockpit.GlobalAPIListGrafanaUsersRequest {
105+ ProjectID : project .ID ,
106+ }, scw .WithAllPages ())
107+ if err != nil {
108+ return fmt .Errorf ("failed to list grafana users: %w" , err )
109+ }
110+
111+ for _ , grafanaUser := range listGrafanaUsers .GrafanaUsers {
112+ err = cockpitAPI .DeleteGrafanaUser (& cockpit.GlobalAPIDeleteGrafanaUserRequest {
113+ ProjectID : project .ID ,
114+ GrafanaUserID : grafanaUser .ID ,
115+ })
116+ if err != nil {
117+ return fmt .Errorf ("failed to delete grafana user: %w" , err )
118+ }
119+ }
120+ }
76121 }
77122
78123 return nil
79124}
80125
81- func SweepSource (scwClient * scw.Client , region scw.Region ) error {
126+ func SweepSource (scwClient * scw.Client , region scw.Region , projectScoped bool ) error {
82127 accountAPI := accountSDK .NewProjectAPI (scwClient )
83128 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 )
129+ defaultProjectID , exists := scwClient .GetDefaultProjectID ()
130+ if projectScoped && (! exists || (defaultProjectID == "" )) {
131+ return fmt .Errorf ("failed to get the default project id for a project scoped sweep" )
88132 }
89-
90- for _ , project := range listProjects .Projects {
91- if ! strings .HasPrefix (project .Name , "tf_tests" ) {
92- continue
93- }
94-
133+ if projectScoped {
95134 listDatasources , err := cockpitAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
96- ProjectID : project . ID ,
135+ ProjectID : defaultProjectID ,
97136 Region : region ,
98137 }, scw .WithAllPages ())
99138 if err != nil {
100139 return fmt .Errorf ("failed to list sources: %w" , err )
101140 }
102141
103- for _ , datsource := range listDatasources .DataSources {
142+ for _ , datasource := range listDatasources .DataSources {
104143 err = cockpitAPI .DeleteDataSource (& cockpit.RegionalAPIDeleteDataSourceRequest {
105- DataSourceID : datsource .ID ,
144+ DataSourceID : datasource .ID ,
106145 Region : region ,
107146 })
108147 if err != nil {
109148 return fmt .Errorf ("failed to delete cockpit source: %w" , err )
110149 }
111150 }
151+ } else {
152+ listProjects , err := accountAPI .ListProjects (& accountSDK.ProjectAPIListProjectsRequest {}, scw .WithAllPages ())
153+ if err != nil {
154+ return fmt .Errorf ("failed to list projects: %w" , err )
155+ }
156+
157+ for _ , project := range listProjects .Projects {
158+ if ! strings .HasPrefix (project .Name , "tf_tests" ) {
159+ continue
160+ }
161+
162+ listDatasources , err := cockpitAPI .ListDataSources (& cockpit.RegionalAPIListDataSourcesRequest {
163+ ProjectID : project .ID ,
164+ Region : region ,
165+ }, scw .WithAllPages ())
166+ if err != nil {
167+ return fmt .Errorf ("failed to list sources: %w" , err )
168+ }
169+
170+ for _ , datsource := range listDatasources .DataSources {
171+ err = cockpitAPI .DeleteDataSource (& cockpit.RegionalAPIDeleteDataSourceRequest {
172+ DataSourceID : datsource .ID ,
173+ Region : region ,
174+ })
175+ if err != nil {
176+ return fmt .Errorf ("failed to delete cockpit source: %w" , err )
177+ }
178+ }
179+ }
112180 }
113181
114182 return nil
115183}
116184
117- func SweepAllLocalities (scwClient * scw.Client ) error {
118- if err := SweepToken (scwClient ); err != nil {
185+ func SweepAllLocalities (scwClient * scw.Client , projectScoped bool ) error {
186+ if err := SweepToken (scwClient , projectScoped ); err != nil {
119187 return err
120188 }
121- if err := SweepGrafanaUser (scwClient ); err != nil {
189+ if err := SweepGrafanaUser (scwClient , projectScoped ); err != nil {
122190 return err
123191 }
124192 for _ , region := range (& cockpit.RegionalAPI {}).Regions () {
125- if err := SweepSource (scwClient , region ); err != nil {
193+ if err := SweepSource (scwClient , region , projectScoped ); err != nil {
126194 return err
127195 }
128196 }
0 commit comments