Sahina Bose has uploaded a new change for review.

Change subject: engine: VDS command to stop and delete geo-rep session
......................................................................

engine: VDS command to stop and delete geo-rep session

VDS command to stop and delete geo-replication session

Change-Id: Ib9f4a32783f2b119a56873b4c1290b10f8b208c8
Bug-Url: https://bugzilla.redhat.com/1125845
Signed-off-by: Sahina Bose <sab...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
M backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/DeleteGlusterVolumeGeoRepSessionVDSCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StopGlusterVolumeGeoRepSessionVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
12 files changed, 135 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/06/33006/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
index 38709ca..e7551ca 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllErrors.java
@@ -401,6 +401,8 @@
     GlfsStatvfsException(4571),
     GlfsInitException(4572),
     GlfsFiniException(4573),
+    GlusterGeoRepSessionDeleteFailedException(4594),
+    GlusterVolumeGeoRepStopFailedException(4596),
     GlusterVolumeGeoRepStatusFailed(4599),
     GlusterVolumeGeoRepStatusDetailFailed(4600),
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
index 39d5da7..9405448 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
@@ -158,6 +158,8 @@
     
GetGlusterVolumeRemoveBricksStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     GetGlusterVolumeGeoRepStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     
GetGlusterVolumeGeoRepStatusDetail("org.ovirt.engine.core.vdsbroker.gluster"),
+    StopGlusterVolumeGeoRepSession("org.ovirt.engine.core.vdsbroker.gluster"),
+    
DeleteGlusterVolumeGeoRepSession("org.ovirt.engine.core.vdsbroker.gluster"),
     SetNumberOfCpus("org.ovirt.engine.core.vdsbroker"),
     UpdateVmPolicy("org.ovirt.engine.core.vdsbroker"),
     List("org.ovirt.engine.core.vdsbroker.vdsbroker"),           // get a list 
of VMs with status only
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
index acb50fb..686d7c4 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeGeoRepSessionVDSParameters.java
@@ -6,6 +6,7 @@
 
     String slaveHost;
     String slaveVolume;
+    Boolean force = false;
 
     public GlusterVolumeGeoRepSessionVDSParameters() {
 
@@ -19,6 +20,14 @@
         super(serverId, volumeName);
         this.slaveHost = slaveHost;
         this.slaveVolume = slaveVolume;
+    }
+
+    public GlusterVolumeGeoRepSessionVDSParameters(Guid serverId, String 
volumeName, String slaveHost, String slaveVolume,
+            Boolean force) {
+        super(serverId, volumeName);
+        this.slaveHost = slaveHost;
+        this.slaveVolume = slaveVolume;
+        this.force = force;
     }
 
     public String getSlaveHost() {
@@ -36,4 +45,13 @@
     public void setSlaveVolume(String slaveVolume) {
         this.slaveVolume = slaveVolume;
     }
+
+    public Boolean getForce() {
+        return force;
+    }
+
+    public void setForce(Boolean force) {
+        this.force = force;
+    }
+
 }
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
index 200648e..e9ad31f 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -376,6 +376,8 @@
 GlfsStatvfsException=Failed to get gluster volume size info
 GlfsInitException=Command failed while mounting gluster volume
 GlfsFiniException=Command failed while unmounting gluster volume
+GlusterGeoRepSessionDeleteFailedException=Failed to delete geo-replication 
session
+GlusterVolumeGeoRepStopFailedException=Failed to stop geo-replication session
 
 CANT_RECONSTRUCT_WHEN_A_DOMAIN_IN_POOL_IS_LOCKED=Can't reconstruct the Master 
Domain when the Data Center contains Domains in Locked state.\nPlease wait 
until the operation for these Domains ends before trying to reconstruct the 
Master Domain again.
 NO_IMPLEMENTATION=Not implemented
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
index 7796a8c..77cd29e 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/AbstractGlusterBrokerCommand.java
@@ -72,6 +72,8 @@
         case GlfsStatvfsException:
         case GlfsInitException:
         case GlfsFiniException:
+        case GlusterGeoRepSessionDeleteFailedException:
+        case GlusterVolumeGeoRepStopFailedException:
             // Capture error from gluster command and record failure
             getVDSReturnValue().setVdsError(new VDSError(returnStatus, 
getReturnStatus().mMessage));
             getVDSReturnValue().setSucceeded(false);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/DeleteGlusterVolumeGeoRepSessionVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/DeleteGlusterVolumeGeoRepSessionVDSCommand.java
new file mode 100644
index 0000000..26bc7d1
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/DeleteGlusterVolumeGeoRepSessionVDSCommand.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepSessionVDSParameters;
+
+/**
+ * VDS command to delete a gluster geo-replication session
+ */
+public class DeleteGlusterVolumeGeoRepSessionVDSCommand<P extends 
GlusterVolumeGeoRepSessionVDSParameters> extends 
AbstractGlusterBrokerCommand<P> {
+
+    public DeleteGlusterVolumeGeoRepSessionVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        status = 
getBroker().glusterVolumeGeoRepSessionDelete(getParameters().getVolumeName(),
+                getParameters().getSlaveHost(),
+                getParameters().getVolumeName());
+        // Handle errors if any
+        proceedProxyReturnValue();
+
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StopGlusterVolumeGeoRepSessionVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StopGlusterVolumeGeoRepSessionVDSCommand.java
new file mode 100644
index 0000000..df33bc8
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/StopGlusterVolumeGeoRepSessionVDSCommand.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeGeoRepSessionVDSParameters;
+
+/**
+ * VDS command to stop a gluster geo-replication session
+ */
+public class StopGlusterVolumeGeoRepSessionVDSCommand<P extends 
GlusterVolumeGeoRepSessionVDSParameters> extends 
AbstractGlusterBrokerCommand<P> {
+
+    public StopGlusterVolumeGeoRepSessionVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeVdsBrokerCommand() {
+        status = 
getBroker().glusterVolumeGeoRepSessionStop(getParameters().getVolumeName(),
+                                                            
getParameters().getSlaveHost(),
+                                                            
getParameters().getVolumeName(),
+                                                            
getParameters().getForce());
+        // Handle errors if any
+        proceedProxyReturnValue();
+
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
index 6e54f17..8a47383 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
@@ -9,6 +9,7 @@
 import java.util.concurrent.FutureTask;
 
 import org.apache.commons.httpclient.HttpClient;
+import org.infinispan.util.concurrent.WithinThreadExecutor;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterHookContentInfoReturnForXmlRpc;
@@ -394,7 +395,7 @@
     }
 
     static class FutureCallable implements Callable<Map<String, Object>> {
-        private Callable<Map<String, Object>> callable;
+        private final Callable<Map<String, Object>> callable;
 
         private FutureMap map;
 
@@ -1210,6 +1211,29 @@
     }
 
     @Override
+    public StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionDelete(String 
volumeName, String remoteHost, String remoteVolumeName) {
+        JsonRpcRequest request = new 
RequestBuilder("GlusterVolume.geoRepSessionDelete")
+                                        .withParameter("volumeName", 
volumeName)
+                                        .withParameter("remoteHost", 
remoteHost)
+                                        .withParameter("remoteVolumeName", 
remoteVolumeName)
+                                        .build();
+        Map<String, Object> response = new FutureMap(this.client, request);
+        return new StatusOnlyReturnForXmlRpc(response);
+    }
+
+    @Override
+    public StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionStop(String 
volumeName, String remoteHost, String remoteVolumeName, Boolean force) {
+        JsonRpcRequest request = new 
RequestBuilder("GlusterVolume.geoRepSessionStop")
+                                        .withParameter("volumeName", 
volumeName)
+                                        .withParameter("remoteHost", 
remoteHost)
+                                        .withParameter("remoteVolumeName", 
remoteVolumeName)
+                                        .withParameter("force", force)
+                                        .build();
+        Map<String, Object> response = new FutureMap(this.client, request);
+        return new StatusOnlyReturnForXmlRpc(response);
+    }
+
+    @Override
     public GlusterServersListReturnForXmlRpc glusterServersList() {
         JsonRpcRequest request = new 
RequestBuilder("GlusterHost.list").build();
         Map<String, Object> response =
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 35d1585..cfd42d9 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -262,6 +262,10 @@
 
     GlusterServersListReturnForXmlRpc glusterServersList();
 
+    StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionDelete(String 
volumeName, String remoteHost, String remoteVolumeName);
+
+    StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionStop(String 
volumeName, String remoteHost, String remoteVolumeName, Boolean force);
+
     StatusOnlyReturnForXmlRpc diskReplicateStart(String vmUUID, Map srcDisk, 
Map dstDisk);
 
     StatusOnlyReturnForXmlRpc diskReplicateFinish(String vmUUID, Map srcDisk, 
Map dstDisk);
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index e80e93c..cf0b19c 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -246,6 +246,10 @@
 
     public Map<String, Object> glusterVolumesList();
 
+    public Map<String, Object> glusterVolumeGeoRepSessionDelete(String 
volumeName, String remoteHost, String remoteVolumeName);
+
+    public Map<String, Object> glusterVolumeGeoRepSessionStop(String 
volumeName, String remoteHost, String remoteVolumeName, Boolean force);
+
     public Map<String, Object> ping();
 
     @FutureCall(delegeteTo = "ping")
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index c7f1072..7d06098 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -1230,6 +1230,8 @@
         }
     }
 
+
+
     @Override
     public StatusOnlyReturnForXmlRpc vmUpdateDevice(String vmId, Map device) {
         try {
@@ -1420,6 +1422,24 @@
     }
 
     @Override
+    public StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionDelete(String 
volumeName, String remoteHost, String remoteVolumeName) {
+        try {
+            return new 
StatusOnlyReturnForXmlRpc(vdsServer.glusterVolumeGeoRepSessionDelete(volumeName,
 remoteVolumeName, remoteVolumeName));
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
+    public StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionStop(String 
volumeName, String remoteHost, String remoteVolumeName, Boolean force) {
+        try {
+            return new 
StatusOnlyReturnForXmlRpc(vdsServer.glusterVolumeGeoRepSessionStop(volumeName, 
remoteVolumeName, remoteVolumeName, force));
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public StatusOnlyReturnForXmlRpc setNumberOfCpus(String vmId, String 
numberOfCpus) {
         try {
             return new 
StatusOnlyReturnForXmlRpc(vdsServer.setNumberOfCpus(vmId, numberOfCpus));
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
index 269f578..fabd8c2 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/VdsmErrors.java
@@ -819,6 +819,12 @@
     @DefaultStringValue("Command failed while unmounting gluster volume")
     String GlfsFiniException();
 
+    @DefaultStringValue("Failed to delete geo-replication session")
+    String GlusterGeoRepSessionDeleteFailedException();
+
+    @DefaultStringValue("Failed to stop geo-replication session")
+    String GlusterVolumeGeoRepStopFailedException();
+
     @DefaultStringValue("Reverting back to last known saved configuration.")
     String SETUP_NETWORKS_ROLLBACK();
 


-- 
To view, visit http://gerrit.ovirt.org/33006
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib9f4a32783f2b119a56873b4c1290b10f8b208c8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to