4
4
"testing"
5
5
6
6
"github.com/scaleway/scaleway-cli/v2/core"
7
+ block "github.com/scaleway/scaleway-cli/v2/internal/namespaces/block/v1alpha1"
7
8
"github.com/scaleway/scaleway-cli/v2/internal/namespaces/instance/v1"
8
9
"github.com/scaleway/scaleway-cli/v2/internal/testhelpers"
9
10
instanceSDK "github.com/scaleway/scaleway-sdk-go/api/instance/v1"
@@ -111,6 +112,50 @@ func createImage(metaKey string) core.BeforeFunc {
111
112
)
112
113
}
113
114
115
+ func createImageWithSBSRootVolume (metaKey string ) core.BeforeFunc {
116
+ return core .BeforeFuncCombine (
117
+ core .ExecStoreBeforeCmd (
118
+ "Server" ,
119
+ testServerCommand ("stopped=true image=ubuntu-jammy root-volume=sbs:20G:5000 --wait" ),
120
+ ),
121
+ core .ExecStoreBeforeCmd (
122
+ "Snapshot" ,
123
+ `scw block snapshot create volume-id={{ (index .Server.Volumes "0").ID }} --wait` ,
124
+ ),
125
+ core .ExecStoreBeforeCmd (
126
+ metaKey ,
127
+ `scw instance image create snapshot-id={{ .Snapshot.ID }} arch=x86_64` ,
128
+ ),
129
+ )
130
+ }
131
+
132
+ func createImageWithSBSAdditionalVolumes (metaKey string ) core.BeforeFunc {
133
+ return core .BeforeFuncCombine (
134
+ core .ExecStoreBeforeCmd (
135
+ "Server" ,
136
+ testServerCommand (
137
+ "stopped=true image=ubuntu-jammy root-volume=local:20G additional-volumes.0=sbs:10GB:5000 additional-volumes.1=sbs:15GB:15000 --wait" ,
138
+ ),
139
+ ),
140
+ core .ExecStoreBeforeCmd (
141
+ "SnapshotRoot" ,
142
+ `scw instance snapshot create volume-id={{ (index .Server.Volumes "0").ID }} --wait` ,
143
+ ),
144
+ core .ExecStoreBeforeCmd (
145
+ "SnapshotAdditional1" ,
146
+ `scw block snapshot create volume-id={{ (index .Server.Volumes "1").ID }} --wait` ,
147
+ ),
148
+ core .ExecStoreBeforeCmd (
149
+ "SnapshotAdditional2" ,
150
+ `scw block snapshot create volume-id={{ (index .Server.Volumes "2").ID }} --wait` ,
151
+ ),
152
+ core .ExecStoreBeforeCmd (
153
+ metaKey ,
154
+ `scw instance image create snapshot-id={{ .SnapshotRoot.ID }} additional-volumes.0.id={{ .SnapshotAdditional1.ID }} additional-volumes.1.id={{ .SnapshotAdditional2.ID }} arch=x86_64` ,
155
+ ),
156
+ )
157
+ }
158
+
114
159
func deleteImage (metaKey string ) core.AfterFunc {
115
160
return core .ExecAfterCmd (
116
161
`scw instance image delete {{ .` + metaKey + `.Image.ID }} with-snapshots=true` ,
@@ -128,6 +173,34 @@ func Test_ImageList(t *testing.T) {
128
173
),
129
174
AfterFunc : deleteImage ("Image" ),
130
175
}))
176
+
177
+ t .Run ("With SBS root volume" , core .Test (& core.TestConfig {
178
+ BeforeFunc : createImageWithSBSRootVolume ("ImageSBSRoot" ),
179
+ Commands : core .NewCommandsMerge (
180
+ instance .GetCommands (),
181
+ block .GetCommands (),
182
+ ),
183
+ Cmd : "scw instance image list" ,
184
+ Check : core .TestCheckCombine (
185
+ core .TestCheckGolden (),
186
+ core .TestCheckExitCode (0 ),
187
+ ),
188
+ AfterFunc : deleteImage ("ImageSBSRoot" ),
189
+ }))
190
+
191
+ t .Run ("With SBS additional volumes" , core .Test (& core.TestConfig {
192
+ BeforeFunc : createImageWithSBSAdditionalVolumes ("ImageSBSAdditional" ),
193
+ Commands : core .NewCommandsMerge (
194
+ instance .GetCommands (),
195
+ block .GetCommands (),
196
+ ),
197
+ Cmd : "scw instance image list" ,
198
+ Check : core .TestCheckCombine (
199
+ core .TestCheckGolden (),
200
+ core .TestCheckExitCode (0 ),
201
+ ),
202
+ AfterFunc : deleteImage ("ImageSBSAdditional" ),
203
+ }))
131
204
}
132
205
133
206
func Test_ImageUpdate (t * testing.T ) {
0 commit comments