Skip to content

Commit e240980

Browse files
fix(snapshot-instances): use block api
1 parent 80e1c50 commit e240980

File tree

3 files changed

+17
-22
lines changed

3 files changed

+17
-22
lines changed

jobs/instances-snapshot/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ module github.com/scaleway/serverless-examples/jobs/instances-snapshot
22

33
go 1.24
44

5-
require github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32
5+
require github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33
66

77
require (
88
github.com/kr/pretty v0.3.1 // indirect
9-
github.com/rogpeppe/go-internal v1.13.1 // indirect
9+
github.com/rogpeppe/go-internal v1.14.1 // indirect
1010
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
1111
gopkg.in/yaml.v2 v2.4.0 // indirect
1212
)

jobs/instances-snapshot/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1010
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
1111
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
1212
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
13-
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
14-
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
15-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32 h1:4+LP7qmsLSGbmc66m1s5dKRMBwztRppfxFKlYqYte/c=
16-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.32/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
13+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
14+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
15+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0=
16+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk=
1717
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1818
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
1919
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

jobs/instances-snapshot/main.go

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package main
33
import (
44
"fmt"
55
"os"
6-
"time"
76

7+
"github.com/scaleway/scaleway-sdk-go/api/block/v1"
88
"github.com/scaleway/scaleway-sdk-go/api/instance/v1"
99
"github.com/scaleway/scaleway-sdk-go/scw"
1010
)
@@ -13,6 +13,7 @@ const (
1313
envOrgID = "SCW_DEFAULT_ORGANIZATION_ID"
1414
envAccessKey = "SCW_ACCESS_KEY"
1515
envSecretKey = "SCW_SECRET_KEY"
16+
envProjectID = "SCW_DEFAULT_PROJECT_ID"
1617
envInstanceID = "INSTANCE_ID"
1718
envInstanceZone = "INSTANCE_ZONE"
1819
)
@@ -39,12 +40,14 @@ func main() {
3940
// Create SDK objects for Scaleway Instance product
4041
instanceAPI := instance.NewAPI(client)
4142

42-
if err := createSnapshots(instanceAPI); err != nil {
43+
blockAPI := block.NewAPI(client)
44+
45+
if err := createSnapshots(instanceAPI, blockAPI); err != nil {
4346
panic(err)
4447
}
4548
}
4649

47-
func createSnapshots(instanceAPI *instance.API) error {
50+
func createSnapshots(instanceAPI *instance.API, blockAPI *block.API) error {
4851
gotInstance, err := instanceAPI.GetServer(&instance.GetServerRequest{
4952
ServerID: os.Getenv("INSTANCE_ID"),
5053
Zone: scw.Zone(os.Getenv("INSTANCE_ZONE")),
@@ -53,25 +56,17 @@ func createSnapshots(instanceAPI *instance.API) error {
5356
return fmt.Errorf("error while getting instance %w", err)
5457
}
5558

56-
now := time.Now().Format(time.DateOnly)
57-
5859
for _, volume := range gotInstance.Server.Volumes {
59-
snapshotName := fmt.Sprintf("snap-vol-%s-%s-%s",
60-
volume.VolumeType.String(),
61-
now,
62-
os.Getenv(envInstanceZone))
63-
64-
snapshotResp, err := instanceAPI.CreateSnapshot(&instance.CreateSnapshotRequest{
65-
Name: snapshotName,
66-
VolumeID: &volume.ID,
67-
VolumeType: instance.SnapshotVolumeType(volume.VolumeType),
68-
Zone: scw.Zone(os.Getenv(envInstanceZone)),
60+
snapshotResp, err := blockAPI.CreateSnapshot(&block.CreateSnapshotRequest{
61+
Zone: scw.Zone(os.Getenv(envInstanceZone)),
62+
VolumeID: volume.ID,
63+
ProjectID: os.Getenv(envProjectID),
6964
})
7065
if err != nil {
7166
return fmt.Errorf("error while creating snapshot %w", err)
7267
}
7368

74-
fmt.Println("created snapshot ", snapshotResp.Snapshot.ID)
69+
fmt.Println("created snapshot ", snapshotResp.ID)
7570
}
7671

7772
return nil

0 commit comments

Comments
 (0)