From 5465a49133fb3c714af4f7dbd298c671bca5d127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= Date: Thu, 30 Jul 2026 01:31:15 -0400 Subject: [PATCH] client: Add GetStorageVolumeBitmap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Graber --- client/incus_storage_volumes.go | 20 ++++++++++++++++++++ client/interfaces.go | 1 + 2 files changed, 21 insertions(+) diff --git a/client/incus_storage_volumes.go b/client/incus_storage_volumes.go index 5dddecfd0e..c24aa7e722 100644 --- a/client/incus_storage_volumes.go +++ b/client/incus_storage_volumes.go @@ -1566,6 +1566,26 @@ func (r *ProtocolIncus) GetStorageVolumeBitmaps(pool string, volumeType string, return bitmaps, nil } +// GetStorageVolumeBitmap returns information about a volume bitmap. +func (r *ProtocolIncus) GetStorageVolumeBitmap(pool string, volumeType string, volumeName string, bitmapName string) (*api.StorageVolumeBitmap, error) { + if !r.HasExtension("storage_volume_nbd") { + return nil, errors.New("The server is missing the required \"storage_volume_nbd\" API extension") + } + + bitmap := api.StorageVolumeBitmap{} + + path := fmt.Sprintf( + "/storage-pools/%s/volumes/%s/%s/bitmaps/%s", + url.PathEscape(pool), url.PathEscape(volumeType), url.PathEscape(volumeName), url.PathEscape(bitmapName), + ) + _, err := r.queryStruct("GET", path, nil, "", &bitmap) + if err != nil { + return nil, err + } + + return &bitmap, nil +} + // CreateStorageVolumeBitmap creates a new volume bitmap. func (r *ProtocolIncus) CreateStorageVolumeBitmap(pool string, volumeType string, volumeName string, bitmap api.StorageVolumeBitmapsPost) error { if !r.HasExtension("storage_volume_nbd") { diff --git a/client/interfaces.go b/client/interfaces.go index 0d939cbdad..7856090cc0 100644 --- a/client/interfaces.go +++ b/client/interfaces.go @@ -420,6 +420,7 @@ type InstanceServer interface { // Storage volume bitmaps manipulations functions ("storage_volume_nbd" API extension) GetStorageVolumeBitmapNames(pool string, volumeType string, volumeName string) ([]string, error) GetStorageVolumeBitmaps(pool string, volumeType string, volumeName string) ([]api.StorageVolumeBitmap, error) + GetStorageVolumeBitmap(pool string, volumeType string, volumeName string, bitmapName string) (bitmap *api.StorageVolumeBitmap, err error) CreateStorageVolumeBitmap(pool string, volumeType string, volumeName string, bitmap api.StorageVolumeBitmapsPost) error DeleteStorageVolumeBitmap(pool string, volumeType string, volumeName string, bitmapName string) error