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

Reply via email to