From 35324b2e1710fc6215ba7e39076b5d4372d1cb4a Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Thu, 12 Aug 2021 10:47:25 +0530 Subject: [PATCH] rbd: add helper function to get local state added helper function to check the local image state is up+replaying. Signed-off-by: Madhu Rajanna --- internal/rbd/mirror.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/internal/rbd/mirror.go b/internal/rbd/mirror.go index 2ce2389fb..0d010be01 100644 --- a/internal/rbd/mirror.go +++ b/internal/rbd/mirror.go @@ -128,3 +128,24 @@ func (ri *rbdImage) getImageMirroringStatus() (*librbd.GlobalMirrorImageStatus, return &statusInfo, nil } + +// getLocalState returns the local state of the image. +func (ri *rbdImage) getLocalState() (librbd.SiteMirrorImageStatus, error) { + localStatus := librbd.SiteMirrorImageStatus{} + image, err := ri.open() + if err != nil { + return localStatus, fmt.Errorf("failed to open image %q with error: %w", ri, err) + } + defer image.Close() + + statusInfo, err := image.GetGlobalMirrorStatus() + if err != nil { + return localStatus, fmt.Errorf("failed to get image mirroring status %q with error: %w", ri, err) + } + localStatus, err = statusInfo.LocalStatus() + if err != nil { + return localStatus, fmt.Errorf("failed to get local status: %w", err) + } + + return localStatus, nil +}