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 <[email protected]>
---
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, 136 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/39378/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 a2d67ba..bd1fbe4 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
@@ -399,6 +399,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 c33079c..6c12539 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
@@ -160,6 +160,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 d099b29..b027f9b 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 @@
 
     private String slaveHost;
     private String slaveVolume;
+    private 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 0582156..4d1934f 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -374,6 +374,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..f96e803
--- /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().getSlaveVolume());
+        // 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..d132cd2
--- /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().getSlaveVolume(),
+                                                            
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 8842329..62943f5 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
@@ -393,7 +393,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;
 
@@ -1214,6 +1214,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 ad81acd..f22532e 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
@@ -265,6 +265,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 0ab88d9..e97444b 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 322d4c1..3ca4686 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
@@ -1426,6 +1426,28 @@
     }
 
     @Override
+    public StatusOnlyReturnForXmlRpc glusterVolumeGeoRepSessionDelete(String 
volumeName, String remoteHost,
+            String remoteVolumeName) {
+        try {
+            return new 
StatusOnlyReturnForXmlRpc(vdsServer.glusterVolumeGeoRepSessionDelete(volumeName,
+                    remoteHost, 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,
+                    remoteHost, 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 184d0b4..c796a35 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
@@ -821,6 +821,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 https://gerrit.ovirt.org/39378
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib9f4a32783f2b119a56873b4c1290b10f8b208c8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5-gluster
Gerrit-Owner: Sahina Bose <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to