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