@@ -131,6 +131,27 @@ func dumpOpenStack(_ context.Context, e2eCtx *E2EContext, bootstrapClusterProxyN
131
131
if err := dumpOpenStackSubnets (e2eCtx , logPath ); err != nil {
132
132
_ , _ = fmt .Fprintf (GinkgoWriter , "error dumping OpenStack subnets: %s\n " , err )
133
133
}
134
+
135
+ if err := dumpOpenStackVolumes (e2eCtx , logPath ); err != nil {
136
+ _ , _ = fmt .Fprintf (GinkgoWriter , "error dumping OpenStack volumes: %s\n " , err )
137
+ }
138
+ }
139
+
140
+ // dumpOpenStackVolumes returns all OpenStack volumes to a file in the artifact folder.
141
+ func dumpOpenStackVolumes (e2eCtx * E2EContext , logPath string ) error {
142
+ volumesList , err := DumpOpenStackVolumes (e2eCtx , volumes.ListOpts {})
143
+ if err != nil {
144
+ return err
145
+ }
146
+ volumesJSON , err := json .MarshalIndent (volumesList , "" , " " )
147
+ if err != nil {
148
+ return fmt .Errorf ("error marshalling volumes %v: %s" , volumesList , err )
149
+ }
150
+ if err := os .WriteFile (path .Join (logPath , "volumes.json" ), volumesJSON , 0o600 ); err != nil {
151
+ return fmt .Errorf ("error writing volumes.json %s: %s" , volumesJSON , err )
152
+ }
153
+
154
+ return nil
134
155
}
135
156
136
157
func dumpOpenStackImages (providerClient * gophercloud.ProviderClient , clientOpts * clientconfig.ClientOpts , logPath string ) error {
@@ -349,6 +370,31 @@ func DumpOpenStackSecurityGroups(e2eCtx *E2EContext, filter groups.ListOpts) ([]
349
370
return groupsList , nil
350
371
}
351
372
373
+ // DumpOpenStackVolumes returns all OpenStack volumes to a file in the artifact folder.
374
+ func DumpOpenStackVolumes (e2eCtx * E2EContext , filter volumes.ListOpts ) ([]volumes.Volume , error ) {
375
+ providerClient , clientOpts , _ , err := GetTenantProviderClient (e2eCtx )
376
+ if err != nil {
377
+ return nil , err
378
+ }
379
+
380
+ blockStorageClient , err := openstack .NewBlockStorageV3 (providerClient , gophercloud.EndpointOpts {
381
+ Region : clientOpts .RegionName ,
382
+ })
383
+ if err != nil {
384
+ return nil , fmt .Errorf ("error creating block storage client: %s" , err )
385
+ }
386
+
387
+ allPages , err := volumes .List (blockStorageClient , filter ).AllPages ()
388
+ if err != nil {
389
+ return nil , fmt .Errorf ("error listing volumes: %s" , err )
390
+ }
391
+ volumesList , err := volumes .ExtractVolumes (allPages )
392
+ if err != nil {
393
+ return nil , fmt .Errorf ("error extracting volumes: %s" , err )
394
+ }
395
+ return volumesList , nil
396
+ }
397
+
352
398
func DumpOpenStackPorts (e2eCtx * E2EContext , filter ports.ListOpts ) ([]ports.Port , error ) {
353
399
providerClient , clientOpts , _ , err := GetTenantProviderClient (e2eCtx )
354
400
if err != nil {
0 commit comments