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
