From 19e4146fab67cc4840f176e91811bace81e0fd4d Mon Sep 17 00:00:00 2001 From: Rakshith R Date: Mon, 15 Aug 2022 10:53:50 +0530 Subject: [PATCH] rbd: add replication capability & service to csiaddons server csi-addons server will advertise replication capability and replication service will run with csi-addons server too. Signed-off-by: Rakshith R --- internal/csi-addons/rbd/identity.go | 6 ++++++ internal/rbd/driver/driver.go | 5 +++++ internal/rbd/replicationcontrollerserver.go | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/internal/csi-addons/rbd/identity.go b/internal/csi-addons/rbd/identity.go index ef0486da5..c6c60d1d2 100644 --- a/internal/csi-addons/rbd/identity.go +++ b/internal/csi-addons/rbd/identity.go @@ -90,6 +90,12 @@ func (is *IdentityServer) GetCapabilities( Type: identity.Capability_NetworkFence_NETWORK_FENCE, }, }, + }, &identity.Capability{ + Type: &identity.Capability_VolumeReplication_{ + VolumeReplication: &identity.Capability_VolumeReplication{ + Type: identity.Capability_VolumeReplication_VOLUME_REPLICATION, + }, + }, }) } diff --git a/internal/rbd/driver/driver.go b/internal/rbd/driver/driver.go index 72fb46807..76c2dcc84 100644 --- a/internal/rbd/driver/driver.go +++ b/internal/rbd/driver/driver.go @@ -159,6 +159,8 @@ func (r *Driver) Run(conf *util.Config) { r.cs = NewControllerServer(r.cd) r.cs.ClusterName = conf.ClusterName r.cs.SetMetadata = conf.SetMetadata + log.WarningLogMsg("replication service running on controller server is deprecated " + + "and replaced by CSI-Addons, see https://github.com/ceph/ceph-csi/issues/3314 for more details") r.rs = NewReplicationServer(r.cs) } if !conf.IsControllerServer && !conf.IsNodeServer { @@ -223,6 +225,9 @@ func (r *Driver) setupCSIAddonsServer(conf *util.Config) error { fcs := casrbd.NewFenceControllerServer() r.cas.RegisterService(fcs) + + rcs := NewReplicationServer(NewControllerServer(r.cd)) + r.cas.RegisterService(rcs) } if conf.IsNodeServer { diff --git a/internal/rbd/replicationcontrollerserver.go b/internal/rbd/replicationcontrollerserver.go index 4e428082a..b5b132392 100644 --- a/internal/rbd/replicationcontrollerserver.go +++ b/internal/rbd/replicationcontrollerserver.go @@ -32,6 +32,7 @@ import ( librbd "github.com/ceph/go-ceph/rbd" "github.com/ceph/go-ceph/rbd/admin" "github.com/csi-addons/spec/lib/go/replication" + "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -91,6 +92,10 @@ type ReplicationServer struct { *ControllerServer } +func (rs *ReplicationServer) RegisterService(server grpc.ServiceRegistrar) { + replication.RegisterControllerServer(server, rs) +} + // getForceOption extracts the force option from the GRPC request parameters. // If not set, the default will be set to false. func getForceOption(ctx context.Context, parameters map[string]string) (bool, error) {