Skip to content

Commit b5154f5

Browse files
authored
Merge branch 'scaleway:master' into master
2 parents 5748d2f + 865b37a commit b5154f5

File tree

34 files changed

+97896
-16569
lines changed

34 files changed

+97896
-16569
lines changed

cmd/scw-sweeper/main.go

Lines changed: 63 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"fmt"
45
"log"
56
"os"
67

@@ -65,190 +66,175 @@ func mainNoExit() int {
6566
log.Fatalf("Cannot create Scaleway client: %s", err)
6667
}
6768

69+
var errors []string
70+
6871
err = accountSweeper.SweepAll(client)
6972
if err != nil {
70-
log.Fatalf("Error sweeping account: %s", err)
71-
72-
return -1
73+
log.Printf("Error sweeping account: %s", err)
74+
errors = append(errors, fmt.Sprintf("account: %s", err))
7375
}
7476

7577
err = applesiliconSweeper.SweepAllLocalities(client)
7678
if err != nil {
77-
log.Fatalf("Error sweeping applesilicon: %s", err)
78-
79-
return -1
79+
log.Printf("Error sweeping applesilicon: %s", err)
80+
errors = append(errors, fmt.Sprintf("applesilicon: %s", err))
8081
}
8182

8283
err = baremetalSweeper.SweepAllLocalities(client)
8384
if err != nil {
84-
log.Fatalf("Error sweeping baremetal: %s", err)
85-
86-
return -1
85+
log.Printf("Error sweeping baremetal: %s", err)
86+
errors = append(errors, fmt.Sprintf("baremetal: %s", err))
8787
}
8888

8989
err = cockpitSweeper.SweepAllLocalities(client)
9090
if err != nil {
91-
log.Fatalf("Error sweeping cockpit: %s", err)
92-
93-
return -1
91+
log.Printf("Error sweeping cockpit: %s", err)
92+
errors = append(errors, fmt.Sprintf("cockpit: %s", err))
9493
}
9594

9695
err = containerSweeper.SweepAllLocalities(client)
9796
if err != nil {
98-
log.Fatalf("Error sweeping container: %s", err)
99-
100-
return -1
97+
log.Printf("Error sweeping container: %s", err)
98+
errors = append(errors, fmt.Sprintf("container: %s", err))
10199
}
102100

103101
err = flexibleipSweeper.SweepAllLocalities(client)
104102
if err != nil {
105-
log.Fatalf("Error sweeping flexibleip: %s", err)
106-
107-
return -1
103+
log.Printf("Error sweeping flexibleip: %s", err)
104+
errors = append(errors, fmt.Sprintf("flexibleip: %s", err))
108105
}
109106

110107
err = functionSweeper.SweepAllLocalities(client)
111108
if err != nil {
112-
log.Fatalf("Error sweeping function: %s", err)
113-
114-
return -1
109+
log.Printf("Error sweeping function: %s", err)
110+
errors = append(errors, fmt.Sprintf("function: %s", err))
115111
}
116112

117113
err = iamSweeper.SweepSSHKey(client)
118114
if err != nil {
119-
log.Fatalf("Error sweeping iam: %s", err)
120-
121-
return -1
115+
log.Printf("Error sweeping iam: %s", err)
116+
errors = append(errors, fmt.Sprintf("iam: %s", err))
122117
}
123118

124119
err = inferenceSweeper.SweepAllLocalities(client)
125120
if err != nil {
126-
log.Fatalf("Error sweeping inference: %s", err)
127-
128-
return -1
121+
log.Printf("Error sweeping inference: %s", err)
122+
errors = append(errors, fmt.Sprintf("inference: %s", err))
129123
}
130124

131125
err = instanceSweeper.SweepAllLocalities(client)
132126
if err != nil {
133-
log.Fatalf("Error sweeping instance: %s", err)
134-
135-
return -1
127+
log.Printf("Error sweeping instance: %s", err)
128+
errors = append(errors, fmt.Sprintf("instance: %s", err))
136129
}
137130

138131
// Instance servers need to be swept before volumes and snapshots can be swept
139132
// because volumes and snapshots are attached to servers.
140133
err = blockSweeper.SweepAllLocalities(client)
141134
if err != nil {
142-
log.Fatalf("Error sweeping block: %s", err)
143-
144-
return -1
135+
log.Printf("Error sweeping block: %s", err)
136+
errors = append(errors, fmt.Sprintf("block: %s", err))
145137
}
146138

147139
err = iotSweeper.SweepAllLocalities(client)
148140
if err != nil {
149-
log.Fatalf("Error sweeping iot: %s", err)
150-
151-
return -1
141+
log.Printf("Error sweeping iot: %s", err)
142+
errors = append(errors, fmt.Sprintf("iot: %s", err))
152143
}
153144

154145
err = jobsSweeper.SweepAllLocalities(client)
155146
if err != nil {
156-
log.Fatalf("Error sweeping jobs: %s", err)
157-
158-
return -1
147+
log.Printf("Error sweeping jobs: %s", err)
148+
errors = append(errors, fmt.Sprintf("jobs: %s", err))
159149
}
160150

161151
err = k8sSweeper.SweepAllLocalities(client)
162152
if err != nil {
163-
log.Fatalf("Error sweeping k8s: %s", err)
164-
165-
return -1
153+
log.Printf("Error sweeping k8s: %s", err)
154+
errors = append(errors, fmt.Sprintf("k8s: %s", err))
166155
}
167156

168157
err = lbSweeper.SweepAllLocalities(client)
169158
if err != nil {
170-
log.Fatalf("Error sweeping lb: %s", err)
171-
172-
return -1
159+
log.Printf("Error sweeping lb: %s", err)
160+
errors = append(errors, fmt.Sprintf("lb: %s", err))
173161
}
174162

175163
err = mongodbSweeper.SweepAllLocalities(client)
176164
if err != nil {
177-
log.Fatalf("Error sweeping mongodb: %s", err)
178-
179-
return -1
165+
log.Printf("Error sweeping mongodb: %s", err)
166+
errors = append(errors, fmt.Sprintf("mongodb: %s", err))
180167
}
181168

182169
err = mnqSweeper.SweepAllLocalities(client)
183170
if err != nil {
184-
log.Fatalf("Error sweeping mnq: %s", err)
185-
186-
return -1
171+
log.Printf("Error sweeping mnq: %s", err)
172+
errors = append(errors, fmt.Sprintf("mnq: %s", err))
187173
}
188174

189175
err = rdbSweeper.SweepAllLocalities(client)
190176
if err != nil {
191-
log.Fatalf("Error sweeping rdb: %s", err)
192-
193-
return -1
177+
log.Printf("Error sweeping rdb: %s", err)
178+
errors = append(errors, fmt.Sprintf("rdb: %s", err))
194179
}
195180

196181
err = redisSweeper.SweepAllLocalities(client)
197182
if err != nil {
198-
log.Fatalf("Error sweeping redis: %s", err)
199-
200-
return -1
183+
log.Printf("Error sweeping redis: %s", err)
184+
errors = append(errors, fmt.Sprintf("redis: %s", err))
201185
}
202186

203187
err = registrySweeper.SweepAllLocalities(client)
204188
if err != nil {
205-
log.Fatalf("Error sweeping registry: %s", err)
206-
207-
return -1
189+
log.Printf("Error sweeping registry: %s", err)
190+
errors = append(errors, fmt.Sprintf("registry: %s", err))
208191
}
209192

210193
err = secretSweeper.SweepAllLocalities(client)
211194
if err != nil {
212-
log.Fatalf("Error sweeping secret: %s", err)
213-
214-
return -1
195+
log.Printf("Error sweeping secret: %s", err)
196+
errors = append(errors, fmt.Sprintf("secret: %s", err))
215197
}
216198

217199
err = sdbSweeper.SweepAllLocalities(client)
218200
if err != nil {
219-
log.Fatalf("Error sweeping sdb: %s", err)
220-
221-
return -1
201+
log.Printf("Error sweeping sdb: %s", err)
202+
errors = append(errors, fmt.Sprintf("sdb: %s", err))
222203
}
223204

224205
err = vpcSweeper.SweepAllLocalities(client)
225206
if err != nil {
226-
log.Fatalf("Error sweeping vpc: %s", err)
227-
228-
return -1
207+
log.Printf("Error sweeping vpc: %s", err)
208+
errors = append(errors, fmt.Sprintf("vpc: %s", err))
229209
}
230210

231211
err = vpcgwSweeper.SweepAllLocalities(client)
232212
if err != nil {
233-
log.Fatalf("Error sweeping vpcgw: %s", err)
234-
235-
return -1
213+
log.Printf("Error sweeping vpcgw: %s", err)
214+
errors = append(errors, fmt.Sprintf("vpcgw: %s", err))
236215
}
237216

238217
err = webhostingSweeper.SweepAllLocalities(client)
239218
if err != nil {
240-
log.Fatalf("Error sweeping webhosting: %s", err)
241-
242-
return -1
219+
log.Printf("Error sweeping webhosting: %s", err)
220+
errors = append(errors, fmt.Sprintf("webhosting: %s", err))
243221
}
244222

245223
// IPAM IPs need to be swept in the end because we need to be sure
246224
// that every resource with an attached ip is destroyed before executing it.
247225
err = ipamSweeper.SweepAllLocalities(client)
248226
if err != nil {
249-
log.Fatalf("Error sweeping ipam: %s", err)
227+
log.Printf("Error sweeping ipam: %s", err)
228+
errors = append(errors, fmt.Sprintf("ipam: %s", err))
229+
}
250230

251-
return -1
231+
// If there were any errors, log them all and exit with fatal
232+
if len(errors) > 0 {
233+
log.Printf("Sweeper completed with %d errors:", len(errors))
234+
for _, errMsg := range errors {
235+
log.Printf(" - %s", errMsg)
236+
}
237+
log.Fatalf("Sweeper failed with %d errors", len(errors))
252238
}
253239

254240
return 0

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.24.0
44

55
require (
66
github.com/aws/aws-sdk-go-v2 v1.36.5
7-
github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0
7+
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0
88
github.com/buildpacks/pack v0.34.2
99
github.com/c-bata/go-prompt v0.2.6
1010
github.com/charmbracelet/bubbletea v1.3.6

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzRE
9090
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4=
9191
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17 h1:qcLWgdhq45sDM9na4cvXax9dyLitn8EYBRl8Ak4XtG4=
9292
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.17/go.mod h1:M+jkjBFZ2J6DJrjMv2+vkBbuht6kxJYtJiwoVgX4p4U=
93-
github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0 h1:5Y75q0RPQoAbieyOuGLhjV9P3txvYgXv2lg0UwJOfmE=
94-
github.com/aws/aws-sdk-go-v2/service/s3 v1.83.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU=
93+
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0 h1:0reDqfEN+tB+sozj2r92Bep8MEwBZgtAXTND1Kk9OXg=
94+
github.com/aws/aws-sdk-go-v2/service/s3 v1.84.0/go.mod h1:kUklwasNoCn5YpyAqC/97r6dzTA1SRKJfKq16SXeoDU=
9595
github.com/aws/aws-sdk-go-v2/service/sso v1.20.2 h1:XOPfar83RIRPEzfihnp+U6udOveKZJvPQ76SKWrLRHc=
9696
github.com/aws/aws-sdk-go-v2/service/sso v1.20.2/go.mod h1:Vv9Xyk1KMHXrR3vNQe8W5LMFdTjSeWk0gBZBzvf3Qa0=
9797
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.2 h1:pi0Skl6mNl2w8qWZXcdOyg197Zsf4G97U7Sso9JXGZE=

internal/namespaces/baremetal/v1/custom_offer.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import (
88
"github.com/scaleway/scaleway-cli/v2/core"
99
"github.com/scaleway/scaleway-cli/v2/core/human"
1010
"github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
11-
product_catalog "github.com/scaleway/scaleway-sdk-go/api/product_catalog/v2alpha1"
11+
productcatalog "github.com/scaleway/scaleway-sdk-go/api/product_catalog/v2alpha1"
12+
"github.com/scaleway/scaleway-sdk-go/scw"
1213
)
1314

1415
var offerAvailabilityMarshalSpecs = human.EnumMarshalSpecs{
@@ -84,30 +85,28 @@ func serverOfferListBuilder(c *core.Command) *core.Command {
8485

8586
c.Interceptor = func(ctx context.Context, argsI any, runner core.CommandRunner) (any, error) {
8687
req := argsI.(*baremetal.ListOffersRequest)
87-
rawResp, err := runner(ctx, argsI)
88-
if err != nil {
89-
return nil, err
90-
}
9188

92-
offers, _ := rawResp.([]*baremetal.Offer)
9389
client := core.ExtractClient(ctx)
90+
baremetalAPI := baremetal.NewAPI(client)
91+
offers, _ := baremetalAPI.ListOffers(req, scw.WithAllPages())
9492

95-
productAPI := product_catalog.NewPublicCatalogAPI(client)
93+
productAPI := productcatalog.NewPublicCatalogAPI(client)
9694
environmentalImpact, _ := productAPI.ListPublicCatalogProducts(
97-
&product_catalog.PublicCatalogAPIListPublicCatalogProductsRequest{
98-
ProductTypes: []product_catalog.ListPublicCatalogProductsRequestProductType{
99-
product_catalog.ListPublicCatalogProductsRequestProductTypeElasticMetal,
95+
&productcatalog.PublicCatalogAPIListPublicCatalogProductsRequest{
96+
ProductTypes: []productcatalog.ListPublicCatalogProductsRequestProductType{
97+
productcatalog.ListPublicCatalogProductsRequestProductTypeElasticMetal,
10098
},
10199
Zone: &req.Zone,
102100
},
101+
scw.WithAllPages(),
103102
)
104103

105-
unitOfMeasure := product_catalog.PublicCatalogProductUnitOfMeasureCountableUnitMonth
106-
if req.SubscriptionPeriod == "hour" {
107-
unitOfMeasure = product_catalog.PublicCatalogProductUnitOfMeasureCountableUnitHour
104+
unitOfMeasure := productcatalog.PublicCatalogProductUnitOfMeasureCountableUnitHour
105+
if req.SubscriptionPeriod == "month" {
106+
unitOfMeasure = productcatalog.PublicCatalogProductUnitOfMeasureCountableUnitMonth
108107
}
109108

110-
impactMap := make(map[string]*product_catalog.PublicCatalogProduct)
109+
impactMap := make(map[string]*productcatalog.PublicCatalogProduct)
111110
for _, impact := range environmentalImpact.Products {
112111
if impact != nil && impact.UnitOfMeasure.Unit == unitOfMeasure {
113112
key := strings.TrimSpace(strings.TrimPrefix(impact.Product, "Elastic Metal "))
@@ -116,9 +115,15 @@ func serverOfferListBuilder(c *core.Command) *core.Command {
116115
}
117116

118117
var customOfferRes []customOffer
119-
for _, offer := range offers {
118+
for _, offer := range offers.Offers {
120119
impact, ok := impactMap[offer.Name]
121-
if !ok || impact == nil {
120+
if !ok {
121+
customOfferRes = append(customOfferRes, customOffer{
122+
Offer: offer,
123+
KgCo2Equivalent: nil,
124+
M3WaterUsage: nil,
125+
})
126+
122127
continue
123128
}
124129
customOfferRes = append(customOfferRes, customOffer{

internal/namespaces/baremetal/v1/custom_offer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func Test_baremetalGetOffer(t *testing.T) {
1717
}
1818

1919
func Test_baremetalListOffer(t *testing.T) {
20-
t.Run("Monthly", core.Test(&core.TestConfig{
20+
t.Run("Simple", core.Test(&core.TestConfig{
2121
Commands: baremetal.GetCommands(),
2222
Cmd: "scw baremetal offer list",
2323
Check: core.TestCheckGolden(),

0 commit comments

Comments
 (0)