Hello Piotr Kliczewski, Timothy Asir, Bala.FA, Dan Kenigsberg,

I'd like you to do a code review.  Please visit

    https://gerrit.ovirt.org/41217

to review the following change.

Change subject: gluster: Added volumeReplaceBrickCommitForce verb.
......................................................................

gluster: Added volumeReplaceBrickCommitForce verb.

This patch adds volumeReplaceBrickCommitForce verb,
This verb replaces a gluster brick without any data
migration.
* volumeReplaceBrickCommitForce: It takes volumeName,
currentBrick and newBrick as arguments. It returns
success/failure.

Change-Id: Id2dc16121cdba99c49d56c4e0b8e7a0194d58d14
Signed-off-by: Darshan N <[email protected]>
Reviewed-on: https://gerrit.ovirt.org/40587
Reviewed-by: Piotr Kliczewski <[email protected]>
Continuous-Integration: Jenkins CI
Tested-by: Timothy Asir <[email protected]>
Reviewed-by: Bala.FA <[email protected]>
Reviewed-by: Dan Kenigsberg <[email protected]>
---
M client/vdsClientGluster.py
M vdsm/gluster/api.py
M vdsm/gluster/apiwrapper.py
M vdsm/gluster/cli.py
M vdsm/gluster/exception.py
M vdsm/rpc/vdsmapi-gluster-schema.json
6 files changed, 67 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/17/41217/1

diff --git a/client/vdsClientGluster.py b/client/vdsClientGluster.py
index c88a73b..fa8a725 100644
--- a/client/vdsClientGluster.py
+++ b/client/vdsClientGluster.py
@@ -163,6 +163,17 @@
         status = self.s.glusterHostRemoveByUuid(hostUuid, force)
         return status['status']['code'], status['status']['message']
 
+    def do_glusterVolumeReplaceBrickCommitForce(self, args):
+        params = self._eqSplit(args)
+        volumeName = params.get('volumeName', '')
+        existingBrick = params.get('existingBrick', '')
+        newBrick = params.get('newBrick', '')
+
+        status = self.s.glusterVolumeReplaceBrickCommitForce(volumeName,
+                                                             existingBrick,
+                                                             newBrick)
+        return status['status']['code'], status['status']['message']
+
     def do_glusterVolumeRemoveBrickStart(self, args):
         params = self._eqSplit(args)
         volumeName = params.get('volumeName', '')
@@ -821,6 +832,15 @@
               'gluster cluster',
               'remove server from gluster cluster'
               )),
+         'glusterVolumeReplaceBrickCommitForce': (
+             serv.do_glusterVolumeReplaceBrickCommitForce,
+             ('volumeName=<volume_name> existingBrick=<existing_brick> '
+              'newBrick=<new_brick> \n\t'
+              '<volume_name> is existing volume name\n\t'
+              '<existing_brick> is existing brick\n\t'
+              '<new_brick> is new brick',
+              'commit volume replace brick'
+              )),
          'glusterVolumeRemoveBrickStart': (
              serv.do_glusterVolumeRemoveBrickStart,
              ('volumeName=<volume_name> bricks=<brick[,brick, ...]> '
diff --git a/vdsm/gluster/api.py b/vdsm/gluster/api.py
index d7692f8..6db6462 100644
--- a/vdsm/gluster/api.py
+++ b/vdsm/gluster/api.py
@@ -284,6 +284,13 @@
         return self.svdsmProxy.glusterVolumeRebalanceStatus(volumeName)
 
     @exportAsVerb
+    def volumeReplaceBrickCommitForce(self, volumeName, existingBrick,
+                                      newBrick, options=None):
+        self.svdsmProxy.glusterVolumeReplaceBrickCommitForce(volumeName,
+                                                             existingBrick,
+                                                             newBrick)
+
+    @exportAsVerb
     def volumeRemoveBrickStart(self, volumeName, brickList,
                                replicaCount=0, options=None):
         return self.svdsmProxy.glusterVolumeRemoveBrickStart(volumeName,
diff --git a/vdsm/gluster/apiwrapper.py b/vdsm/gluster/apiwrapper.py
index 76af453..2298ebb 100644
--- a/vdsm/gluster/apiwrapper.py
+++ b/vdsm/gluster/apiwrapper.py
@@ -164,6 +164,11 @@
         return self._gluster.volumeRemoveBrickForce(volumeName, brickList,
                                                     replicaCount)
 
+    def replaceBrickCommitForce(self, volumeName, existingBrick, newBrick):
+        return self._gluster.volumeReplaceBrickCommitForce(volumeName,
+                                                           existingBrick,
+                                                           newBrick)
+
     def profileInfo(self, volumeName, nfs=False):
         return self._gluster.volumeProfileInfo(volumeName, nfs)
 
diff --git a/vdsm/gluster/cli.py b/vdsm/gluster/cli.py
index 7620b96..5f21e0d 100644
--- a/vdsm/gluster/cli.py
+++ b/vdsm/gluster/cli.py
@@ -726,6 +726,19 @@
 
 
 @makePublic
+def volumeReplaceBrickCommitForce(volumeName, existingBrick, newBrick):
+    command = _getGlusterVolCmd() + ["replace-brick", volumeName,
+                                     existingBrick, newBrick, "commit",
+                                     "force"]
+    try:
+        _execGlusterXml(command)
+        return True
+    except ge.GlusterCmdFailedException as e:
+        raise ge.GlusterVolumeReplaceBrickCommitForceFailedException(rc=e.rc,
+                                                                     err=e.err)
+
+
+@makePublic
 def volumeRemoveBrickStart(volumeName, brickList, replicaCount=0):
     command = _getGlusterVolCmd() + ["remove-brick", volumeName]
     if replicaCount:
diff --git a/vdsm/gluster/exception.py b/vdsm/gluster/exception.py
index 7799651..8a9f538 100644
--- a/vdsm/gluster/exception.py
+++ b/vdsm/gluster/exception.py
@@ -248,6 +248,12 @@
     message = "Volume delete failed"
 
 
+class GlusterVolumeReplaceBrickCommitForceFailedException(
+        GlusterVolumeException):
+    code = 4148
+    message = "Volume replace brick commit force failed"
+
+
 class GlusterVolumesListFailedException(GlusterVolumeException):
     code = 4149
     message = "Volume list failed"
diff --git a/vdsm/rpc/vdsmapi-gluster-schema.json 
b/vdsm/rpc/vdsmapi-gluster-schema.json
index fc3dc25..79ed7ba 100644
--- a/vdsm/rpc/vdsmapi-gluster-schema.json
+++ b/vdsm/rpc/vdsmapi-gluster-schema.json
@@ -1081,6 +1081,22 @@
  'returns': 'RebalanceRemoveStatus'}
 
 ##
+# @GlusterVolume.replaceBrickCommitForce:
+#
+# Replace Gluster volume brick
+#
+# @volumeName:     Gluster volume name
+#
+# @existingBrick:  Existing brick path
+#
+# @newBrick:       New brick path
+#
+# Since: 4.17.0
+##
+{'command': {'class': 'GlusterVolume', 'name': 'replaceBrickCommitForce'},
+ 'data': {'volumeName': 'str', 'existingBrick': 'str', 'newBrick': 'str'}}
+
+##
 # @GlusterVolume.rebalanceStatus:
 #
 # Get Gluster volume Rebalance status


-- 
To view, visit https://gerrit.ovirt.org/41217
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id2dc16121cdba99c49d56c4e0b8e7a0194d58d14
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: ovirt-3.5-gluster
Gerrit-Owner: Darshan N <[email protected]>
Gerrit-Reviewer: Bala.FA <[email protected]>
Gerrit-Reviewer: Dan Kenigsberg <[email protected]>
Gerrit-Reviewer: Piotr Kliczewski <[email protected]>
Gerrit-Reviewer: Timothy Asir <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to