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