@@ -131,7 +131,22 @@ func (rh *CephfsReplicationHandler) EnableHandler(ctx context.Context, args ...a
131131 return err
132132 }
133133
134- err = enableMgrModule (constants .MgrModuleMirroring )
134+ dbRec , err := database .GetRemoteDb (ctx , st .ClusterState (), rh .Request .RemoteName )
135+ if err != nil {
136+ err := fmt .Errorf ("remote (%s) does not exist: %w" , rh .Request .RemoteName , err )
137+ logger .Error (err .Error ())
138+ return err
139+ }
140+
141+ logger .Infof ("REPCFS: LocalName(%s) RemoteName(%s)" , dbRec [0 ].LocalName , dbRec [0 ].Name )
142+
143+ err = verifyRemoteCephFSVolumeExists (rh .Request .Volume , dbRec [0 ].Name , dbRec [0 ].LocalName )
144+ if err != nil {
145+ logger .Errorf ("Failed to verify if remote cephfs volume %s: %v" , rh .Request .Volume , err )
146+ return err
147+ }
148+
149+ err = enableCephFSMgrModules (ctx , dbRec [0 ].Name , dbRec [0 ].LocalName )
135150 if err != nil {
136151 return err
137152 }
@@ -237,7 +252,7 @@ func (rh *CephfsReplicationHandler) StatusHandler(ctx context.Context, args ...a
237252
238253 // cannot directly modify struct fields in a map, so retrieve, modify and reassign
239254 for _ , peer := range fs .Peers {
240- responsePeer , _ := response .Peers [peer .UUID ]
255+ responsePeer := response .Peers [peer .UUID ]
241256 responsePeer .Name = peer .Remote .ClusterName
242257 response .Peers [peer .UUID ] = responsePeer
243258 }
@@ -279,9 +294,9 @@ func (rh *CephfsReplicationHandler) GetCephFSMirrorStatus(ctx context.Context) e
279294 return fmt .Errorf ("%s is not %s" , rh .Request .RequestType , types .StatusReplicationRequest )
280295 }
281296
282- volumeId , peers := GetCephFsMirrorVolumeAndPeersId (rh )
283- if volumeId < 0 || len (peers ) == 0 {
284- return fmt .Errorf ("no CephFS volume (%d) or peers (%v) found for mirroring status" , volumeId , peers )
297+ volumeID , peers := GetCephFsMirrorVolumeAndPeersId (rh )
298+ if volumeID < 0 || len (peers ) == 0 {
299+ return fmt .Errorf ("no CephFS volume (%d) or peers (%v) found for mirroring status" , volumeID , peers )
285300 }
286301
287302 // TODO: (utkarshbhatthere):
@@ -297,7 +312,7 @@ func (rh *CephfsReplicationHandler) GetCephFSMirrorStatus(ctx context.Context) e
297312 response := MirrorStatus {}
298313 for _ , peer := range peers {
299314 // Get the mirror status for each peer
300- response [peer ], err = GetCephFsMirrorPeerStatus (ctx , cephfsMirrorAdminSock , volumeId , peer )
315+ response [peer ], err = GetCephFsMirrorPeerStatus (ctx , cephfsMirrorAdminSock , volumeID , peer )
301316 if err != nil {
302317 return fmt .Errorf ("failed to get CephFS mirror status for peer %s: %w" , peer , err )
303318 }
@@ -368,6 +383,40 @@ func verifyEnableRequestData(ctx context.Context, s interfaces.CephState, reques
368383 return nil
369384}
370385
386+ func enableCephFSMgrModules (ctx context.Context , remote string , local string ) error {
387+ err := EnableMgrModule (constants .MgrModuleMirroring , "" , "" )
388+ if err != nil {
389+ err := fmt .Errorf ("failed to enable mgr module %s on local cluster: %w" , constants .MgrModuleMirroring , err )
390+ logger .Error (err .Error ())
391+ return err
392+ }
393+
394+ err = EnableMgrModule (constants .MgrModuleMirroring , remote , local )
395+ if err != nil {
396+ err := fmt .Errorf ("failed to enable mgr module %s on remote cluster %s: %w" , constants .MgrModuleMirroring , remote , err )
397+ logger .Error (err .Error ())
398+ return err
399+ }
400+
401+ return nil
402+ }
403+
404+ func verifyRemoteCephFSVolumeExists (vol string , remote string , local string ) error {
405+ volumes , err := ListRemoteCephFSVolumes (remote , local )
406+ if err != nil {
407+ logger .Errorf ("Failed to list remote cephfs volumes for remote %s: %v" , remote , err )
408+ return err
409+ }
410+
411+ for _ , volume := range volumes {
412+ if strings .Compare (string (volume ), vol ) == 0 {
413+ return nil
414+ }
415+ }
416+
417+ return fmt .Errorf ("cephfs volume %s not found on remote %s" , vol , remote )
418+ }
419+
371420func enableCephFSVolumeMirror (ctx context.Context , request types.CephfsReplicationRequest ) error {
372421 peerExists , err := cephFSSnapshotMirrorPeerExists (ctx , request .Volume , request .RemoteName )
373422 if err != nil {
0 commit comments