Kanagaraj M has uploaded a new change for review. Change subject: gluster: add force support to create volume ......................................................................
gluster: add force support to create volume 'create volume' operation in gluster will fail, if the brick directories are in root partition. 'force' option added to skip the above check if required. Change-Id: I65b3e96d759a0b09b625da793b6c63b93f8c2131 Bug-Url: https://bugzilla.redhat.com/1008942 Signed-off-by: Kanagaraj M <kmayi...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/CreateGlusterVolumeParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/CreateGlusterVolumeVDSParameters.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/CreateGlusterVolumeVDSCommand.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 packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 9 files changed, 90 insertions(+), 6 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/21403/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java index d34c282..74cade1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/CreateGlusterVolumeCommand.java @@ -139,7 +139,7 @@ VDSReturnValue returnValue = runVdsCommand( VDSCommandType.CreateGlusterVolume, - new CreateGlusterVolumeVDSParameters(upServer.getId(), volume)); + new CreateGlusterVolumeVDSParameters(upServer.getId(), volume, getParameters().isForce())); setSucceeded(returnValue.getSucceeded()); if(!getSucceeded()) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/CreateGlusterVolumeParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/CreateGlusterVolumeParameters.java index 74e209a..a6fc589 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/CreateGlusterVolumeParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/gluster/CreateGlusterVolumeParameters.java @@ -16,11 +16,18 @@ @Valid private GlusterVolumeEntity volume; + private boolean force; + public CreateGlusterVolumeParameters() { } public CreateGlusterVolumeParameters(GlusterVolumeEntity volume) { + this(volume, false); + } + + public CreateGlusterVolumeParameters(GlusterVolumeEntity volume, boolean force) { setVolume(volume); + setForce(force); } public GlusterVolumeEntity getVolume() { @@ -30,4 +37,12 @@ public void setVolume(GlusterVolumeEntity volume) { this.volume = volume; } + + public boolean isForce() { + return force; + } + + public void setForce(boolean force) { + this.force = force; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java index d322a02..e7250ac 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java @@ -1539,5 +1539,9 @@ @DefaultValueAttribute("300") HostPreparingForMaintenanceIdleTime, + @TypeConverterAttribute(Boolean.class) + @DefaultValueAttribute("true") + GlusterSupportForceCreateVolume, + Invalid; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/CreateGlusterVolumeVDSParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/CreateGlusterVolumeVDSParameters.java index 3a156b3..4ba859d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/CreateGlusterVolumeVDSParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/CreateGlusterVolumeVDSParameters.java @@ -13,9 +13,16 @@ public class CreateGlusterVolumeVDSParameters extends VdsIdVDSCommandParametersBase { private GlusterVolumeEntity volume; + private boolean force; + public CreateGlusterVolumeVDSParameters(Guid serverId, GlusterVolumeEntity volume) { + this(serverId, volume, false); + } + + public CreateGlusterVolumeVDSParameters(Guid serverId, GlusterVolumeEntity volume, boolean force) { super(serverId); setVolume(volume); + setForce(force); } public GlusterVolumeEntity getVolume() { @@ -25,4 +32,12 @@ public void setVolume(GlusterVolumeEntity volume) { this.volume = volume; } + + public boolean isForce() { + return force; + } + + public void setForce(boolean force) { + this.force = force; + } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/CreateGlusterVolumeVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/CreateGlusterVolumeVDSCommand.java index 16e0f86..524954e 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/CreateGlusterVolumeVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/CreateGlusterVolumeVDSCommand.java @@ -4,6 +4,8 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.gluster.TransportType; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.vdscommands.gluster.CreateGlusterVolumeVDSParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc; @@ -28,11 +30,22 @@ protected void executeVdsBrokerCommand() { GlusterVolumeEntity volume = getParameters().getVolume(); - uuidReturn = getBroker().glusterVolumeCreate(volume.getName(), - volume.getBrickDirectories().toArray(new String[0]), - volume.getReplicaCount(), - volume.getStripeCount(), - getTransportTypeArr(volume)); + boolean isForce = getParameters().isForce(); + boolean supportForceCreateVolume = Config.<Boolean> GetValue( + ConfigValues.GlusterSupportForceCreateVolume, getVds().getVdsGroupCompatibilityVersion().toString()); + + uuidReturn = supportForceCreateVolume ? + getBroker().glusterVolumeCreate(volume.getName(), + volume.getBrickDirectories().toArray(new String[0]), + volume.getReplicaCount(), + volume.getStripeCount(), + getTransportTypeArr(volume), + isForce) : + getBroker().glusterVolumeCreate(volume.getName(), + volume.getBrickDirectories().toArray(new String[0]), + volume.getReplicaCount(), + volume.getStripeCount(), + getTransportTypeArr(volume)); // Handle errors if any proceedProxyReturnValue(); 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 94ab2ab..a6e3b84 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 @@ -194,6 +194,13 @@ int stripeCount, String[] transportList); + OneUuidReturnForXmlRpc glusterVolumeCreate(String volumeName, + String[] brickList, + int replicaCount, + int stripeCount, + String[] transportList, + boolean force); + StatusOnlyReturnForXmlRpc glusterVolumeSet(String volumeName, String key, String value); StatusOnlyReturnForXmlRpc glusterVolumeStart(String volumeName, Boolean force); 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 39d88bb..90a14f9 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 @@ -173,6 +173,13 @@ int stripeCount, String[] transportList); + public Map<String, Object> glusterVolumeCreate(String volumeName, + String[] brickList, + int replicaCount, + int stripeCount, + String[] transportList, + boolean force); + public Map<String, Object> glusterVolumeSet(String volumeName, String key, String value); public Map<String, Object> glusterVolumeStart(String volumeName, Boolean force); 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 613b17b..6f7996e 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 @@ -909,6 +909,25 @@ } @Override + public OneUuidReturnForXmlRpc glusterVolumeCreate(String volumeName, + String[] brickList, + int replicaCount, + int stripeCount, + String[] transportList, + boolean force) { + try { + return new OneUuidReturnForXmlRpc(vdsServer.glusterVolumeCreate(volumeName, + brickList, + replicaCount, + stripeCount, + transportList, + force)); + } catch (UndeclaredThrowableException ute) { + throw new XmlRpcRunTimeException(ute); + } + } + + @Override public StatusOnlyReturnForXmlRpc glusterVolumeSet(String volumeName, String key, String value) { try { return new StatusOnlyReturnForXmlRpc(vdsServer.glusterVolumeSet(volumeName, key, value)); diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql index effc925..aa1ffc7 100644 --- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -148,6 +148,10 @@ select fn_db_add_config_value('GlusterServicesEnabled', 'false', '3.1'); select fn_db_add_config_value('GlusterServicesEnabled', 'false', '3.2'); select fn_db_add_config_value('GlusterSupport', 'false', '3.0'); +select fn_db_add_config_value('GlusterSupportForceCreateVolume', 'false', '3.0'); +select fn_db_add_config_value('GlusterSupportForceCreateVolume', 'false', '3.1'); +select fn_db_add_config_value('GlusterSupportForceCreateVolume', 'false', '3.2'); +select fn_db_add_config_value('GlusterSupportForceCreateVolume', 'false', '3.3'); select fn_db_add_config_value('GlusterVolumeOptionGroupVirtValue','virt','general'); select fn_db_add_config_value('GlusterVolumeOptionOwnerUserVirtValue','36','general'); select fn_db_add_config_value('GlusterVolumeOptionOwnerGroupVirtValue','36','general'); -- To view, visit http://gerrit.ovirt.org/21403 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I65b3e96d759a0b09b625da793b6c63b93f8c2131 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kanagaraj M <kmayi...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches