From 233954bc1026cdccd667b78020fed6b53e992edc Mon Sep 17 00:00:00 2001 From: Madhu Rajanna Date: Wed, 17 Mar 2021 13:24:19 +0530 Subject: [PATCH] rbd: make replication operations as rbdImage methods added replication related operations as a method of rbdImage as these methods can be easily used when we introduce volumesnaphot mirroring operations. Signed-off-by: Madhu Rajanna --- internal/rbd/mirror.go | 60 +++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/internal/rbd/mirror.go b/internal/rbd/mirror.go index 171e0e181..d37b85333 100644 --- a/internal/rbd/mirror.go +++ b/internal/rbd/mirror.go @@ -27,88 +27,88 @@ import ( ) // enableImageMirroring enables mirroring on an image. -func (rv *rbdVolume) enableImageMirroring(mode librbd.ImageMirrorMode) error { - image, err := rv.open() +func (ri *rbdImage) enableImageMirroring(mode librbd.ImageMirrorMode) error { + image, err := ri.open() if err != nil { - return fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() err = image.MirrorEnable(mode) if err != nil { - return fmt.Errorf("failed to enable mirroring on %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to enable mirroring on %q with error: %w", ri.String(), err) } return nil } // disableImageMirroring disables mirroring on an image. -func (rv *rbdVolume) disableImageMirroring(force bool) error { - image, err := rv.open() +func (ri *rbdImage) disableImageMirroring(force bool) error { + image, err := ri.open() if err != nil { - return fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() err = image.MirrorDisable(force) if err != nil { - return fmt.Errorf("failed to disable mirroring on %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to disable mirroring on %q with error: %w", ri.String(), err) } return nil } // getImageMirroringInfo gets mirroring information of an image. -func (rv *rbdVolume) getImageMirroringInfo() (*librbd.MirrorImageInfo, error) { - image, err := rv.open() +func (ri *rbdImage) getImageMirroringInfo() (*librbd.MirrorImageInfo, error) { + image, err := ri.open() if err != nil { - return nil, fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return nil, fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() info, err := image.GetMirrorImageInfo() if err != nil { - return nil, fmt.Errorf("failed to get mirroring info of %q with error: %w", rv.String(), err) + return nil, fmt.Errorf("failed to get mirroring info of %q with error: %w", ri.String(), err) } return info, nil } // promoteImage promotes image to primary. -func (rv *rbdVolume) promoteImage(force bool) error { - image, err := rv.open() +func (ri *rbdImage) promoteImage(force bool) error { + image, err := ri.open() if err != nil { - return fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() err = image.MirrorPromote(force) if err != nil { - return fmt.Errorf("failed to promote image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to promote image %q with error: %w", ri.String(), err) } return nil } // demoteImage demotes image to secondary. -func (rv *rbdVolume) demoteImage() error { - image, err := rv.open() +func (ri *rbdImage) demoteImage() error { + image, err := ri.open() if err != nil { - return fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() err = image.MirrorDemote() if err != nil { - return fmt.Errorf("failed to demote image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to demote image %q with error: %w", ri.String(), err) } return nil } // resyncImage resync image to correct the split-brain. -func (rv *rbdVolume) resyncImage() error { - image, err := rv.open() +func (ri *rbdImage) resyncImage() error { + image, err := ri.open() if err != nil { - return fmt.Errorf("failed to open image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to open image %q with error: %w", ri.String(), err) } defer image.Close() err = image.MirrorResync() if err != nil { - return fmt.Errorf("failed to resync image %q with error: %w", rv.String(), err) + return fmt.Errorf("failed to resync image %q with error: %w", ri.String(), err) } return nil } @@ -122,23 +122,23 @@ type imageMirrorStatus struct { // FIXME: once https://github.com/ceph/go-ceph/issues/460 is fixed use go-ceph. // getImageMirroingStatus get the mirroring status of an image. -func (rv *rbdVolume) getImageMirroingStatus() (*imageMirrorStatus, error) { +func (ri *rbdImage) getImageMirroingStatus() (*imageMirrorStatus, error) { // rbd mirror image status --format=json info [image-spec | snap-spec] var imgStatus imageMirrorStatus stdout, stderr, err := util.ExecCommand( context.TODO(), "rbd", - "-m", rv.Monitors, - "--id", rv.conn.Creds.ID, - "--keyfile="+rv.conn.Creds.KeyFile, + "-m", ri.Monitors, + "--id", ri.conn.Creds.ID, + "--keyfile="+ri.conn.Creds.KeyFile, "-c", util.CephConfigPath, "--format="+"json", "mirror", "image", "status", - rv.String()) + ri.String()) if err != nil { - if strings.Contains(stderr, "rbd: error opening image "+rv.RbdImageName+ + if strings.Contains(stderr, "rbd: error opening image "+ri.RbdImageName+ ": (2) No such file or directory") { return nil, util.JoinErrors(ErrImageNotFound, err) }