Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: [WIP] Query to get the gluster volume size info
......................................................................

gluster: [WIP] Query to get the gluster volume size info

Query for getting the gluster volume size information like total size,
free size and used size.

Change-Id: Ide04bf31a4ee5b6579315371f09397142c58d9a3
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeSizeInfoQuery.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSizeInfo.java
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/queries/VdcQueryType.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.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/GetGlusterVolumeSizeInfoVDSCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeSizeInfoReturnForXmlRpc.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
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
14 files changed, 167 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/18890/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeSizeInfoQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeSizeInfoQuery.java
new file mode 100644
index 0000000..c2922c6
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeSizeInfoQuery.java
@@ -0,0 +1,41 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo;
+import 
org.ovirt.engine.core.common.queries.gluster.GlusterVolumeQueriesParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetGlusterVolumeSizeInfoQuery<P extends 
GlusterVolumeQueriesParameters> extends GlusterQueriesCommandBase<P> {
+    private Guid clusterId;
+    private GlusterVolumeEntity volume;
+
+    public GetGlusterVolumeSizeInfoQuery(P params) {
+        super(params);
+    }
+
+    @Override
+    public void executeQueryCommand() {
+        clusterId = getParameters().getClusterId();
+        Guid volumeId = getParameters().getVolumeId();
+
+        if (volumeId != null) {
+            volume = getGlusterVolumeDao().getById(volumeId);
+            if (volume == null) {
+                throw new RuntimeException(String.format("Invalid volume id 
%s", volumeId));
+            }
+        }
+
+        getQueryReturnValue().setReturnValue(fetchVolumeSIzeDetails());
+    }
+
+    private GlusterVolumeSizeInfo fetchVolumeSIzeDetails() {
+        VDSReturnValue returnValue =
+                runVdsCommand(VDSCommandType.GetGlusterVolumeSizeInfo,
+                        new 
GlusterVolumeVDSParameters(getUpServerId(clusterId), volume.getName()));
+
+        return (GlusterVolumeSizeInfo)returnValue.getReturnValue();
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSizeInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSizeInfo.java
new file mode 100644
index 0000000..cb0886b
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSizeInfo.java
@@ -0,0 +1,39 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.io.Serializable;
+
+public class GlusterVolumeSizeInfo implements Serializable {
+    private static final long serialVersionUID = -5145858224564431005L;
+
+    private int totalSize;
+    private int freeSize;
+    private int usedSize;
+
+    public GlusterVolumeSizeInfo() {
+    }
+
+    public GlusterVolumeSizeInfo(int totalSize, int freeSize, int usedSize) {
+        this.totalSize = totalSize;
+        this.freeSize = freeSize;
+        this.usedSize = usedSize;
+    }
+
+    public int getTotalSize() {
+        return totalSize;
+    }
+    public void setTotalSize(int totalSize) {
+        this.totalSize = totalSize;
+    }
+    public int getFreeSize() {
+        return freeSize;
+    }
+    public void setFreeSize(int freeSize) {
+        this.freeSize = freeSize;
+    }
+    public int getUsedSize() {
+        return usedSize;
+    }
+    public void setUsedSize(int usedSize) {
+        this.usedSize = usedSize;
+    }
+}
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 f87e55a..f1b22e4 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
@@ -385,6 +385,8 @@
     GlusterHookRemoveFailed(4510),
     GlusterServicesActionFailed(4550),
     GlusterServiceActionNotSupported(4551),
+    GlusterLibgfapiException(4570),
+    GlusterVolumeSizeInfoGetFailedException(4571),
 
     UnicodeArgumentException(4900),
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index cd67bbe..9123aaf 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -264,6 +264,7 @@
     GetGlusterServerServicesByClusterId,
     GetGlusterServerServicesByServerId,
     GetGlusterClusterServiceByClusterId,
+    GetGlusterVolumeSizeInfo,
 
     GetDefaultConfigurationVersion(VdcQueryAuthType.User),
     OsRepository(VdcQueryAuthType.User),
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 9c99052..4713790 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
@@ -148,6 +148,7 @@
     RemoveGlusterHook("org.ovirt.engine.core.vdsbroker.gluster"),
     ManageGlusterService("org.ovirt.engine.core.vdsbroker.gluster"),
     GetDiskAlignment("org.ovirt.engine.core.vdsbroker.vdsbroker"),
+    GetGlusterVolumeSizeInfo("org.ovirt.engine.core.vdsbroker.vdsbroker"),
     ;
 
     String packageName;
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 61c6b8f..640cdd4 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/VdsmErrors.properties
@@ -359,6 +359,8 @@
 GlusterHookRemoveFailed=Failed to remove hook
 GlusterServicesActionFailed=Gluster service action failed
 GlusterServiceActionNotSupported=Gluster service action not supported
+GlusterLibgfapiException=Gluster libgfapi failed while getting the size 
information for gluster volume
+GlusterVolumeSizeInfoGetFailedException=Failed to get size information for 
gluster volume
 
 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 87f8acc..a77a355 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
@@ -58,6 +58,8 @@
         case GlusterHookRemoveFailed:
         case GlusterServicesActionFailed:
         case GlusterServiceActionNotSupported:
+        case GlusterLibgfapiException:
+        case GlusterVolumeSizeInfoGetFailedException:
             // 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/GetGlusterVolumeSizeInfoVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeSizeInfoVDSCommand.java
new file mode 100644
index 0000000..1a41fda
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeSizeInfoVDSCommand.java
@@ -0,0 +1,28 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
+
+public class GetGlusterVolumeSizeInfoVDSCommand<P extends 
GlusterVolumeVDSParameters> extends AbstractGlusterBrokerCommand<P> {
+
+    private GlusterVolumeSizeInfoReturnForXmlRpc result;
+
+    public GetGlusterVolumeSizeInfoVDSCommand(P params) {
+        super(params);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return result.mStatus;
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        String volumeName = getParameters().getVolumeName();
+        result = getBroker().volumeSizeInfoGet(volumeName);
+        proceedProxyReturnValue();
+        if(getVDSReturnValue().getSucceeded()) {
+            setReturnValue(result.getVolumeSizeInfo());
+        }
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeSizeInfoReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeSizeInfoReturnForXmlRpc.java
new file mode 100644
index 0000000..811a75d
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeSizeInfoReturnForXmlRpc.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import java.util.Map;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo;
+import org.ovirt.engine.core.vdsbroker.irsbroker.StatusReturnForXmlRpc;
+
+public class GlusterVolumeSizeInfoReturnForXmlRpc extends 
StatusReturnForXmlRpc {
+
+    private static final String TOTAL_SIZE = "total";
+    private static final String FREE_SIZE = "free";
+    private static final String USED_SIZE = "used";
+
+    private final GlusterVolumeSizeInfo volumeSizeInfo = new 
GlusterVolumeSizeInfo();
+
+    public GlusterVolumeSizeInfoReturnForXmlRpc(Map<String, Object> innerMap) {
+        super(innerMap);
+        volumeSizeInfo.setTotalSize((Integer)innerMap.get(TOTAL_SIZE));
+        volumeSizeInfo.setFreeSize((Integer)innerMap.get(FREE_SIZE));
+        volumeSizeInfo.setUsedSize((Integer)innerMap.get(USED_SIZE));
+    }
+
+    public GlusterVolumeSizeInfo getVolumeSizeInfo() {
+        return this.volumeSizeInfo;
+    }
+}
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 4e1d310..c1f2b4a 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
@@ -11,6 +11,7 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeSizeInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
@@ -259,5 +260,7 @@
 
     GlusterServicesReturnForXmlRpc glusterServicesAction(Guid serverId, String 
[] serviceList, String actionType);
 
+    GlusterVolumeSizeInfoReturnForXmlRpc volumeSizeInfoGet(String volumeName);
+
     StoragePoolInfoReturnForXmlRpc getStoragePoolInfo(String spUUID);
 }
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 6a04cb7..5c4a3a9 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
@@ -245,5 +245,7 @@
 
     public Map<String, Object> glusterServicesAction(String[] serviceNames, 
String action);
 
+    public Map<String, Object> volumeSizeInfoGet(String volumeName);
+
     public Map<String, Object> getStoragePoolInfo(String spUUID);
 }
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 1b1dca9..a9b3619 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
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.vdsbroker.gluster.GlusterServicesReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeOptionsInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeProfileInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeSizeInfoReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumeStatusReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.gluster.GlusterVolumesListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
@@ -1245,6 +1246,17 @@
     }
 
     @Override
+    public GlusterVolumeSizeInfoReturnForXmlRpc volumeSizeInfoGet(String 
volumeName) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = 
vdsServer.volumeSizeInfoGet(volumeName);
+            GlusterVolumeSizeInfoReturnForXmlRpc wrapper = new 
GlusterVolumeSizeInfoReturnForXmlRpc(xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
+
+    @Override
     public StatusOnlyReturnForXmlRpc setMOMPolicyParameters(Map<String, 
Object> key_value_store) {
         try {
             Map<String, Object> xmlRpcReturnValue = 
vdsServer.setMOMPolicyParameters(key_value_store);
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 5b84ff3..88e0d54 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
@@ -772,4 +772,10 @@
 
     @DefaultStringValue("Gluster service action not supported")
     String GlusterServiceActionNotSupported();
+
+    @DefaultStringValue("Gluster libgfapi failed while getting the size 
information for gluster volume")
+    String GlusterLibgfapiException();
+
+    @DefaultStringValue("Failed to get size information for gluster volume")
+    String GlusterVolumeSizeInfoGetFailedException();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
index 9da0d77..4dace26 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/VdsmErrors.properties
@@ -366,3 +366,5 @@
 GlusterHookRemoveFailed=Failed to remove hook
 GlusterServicesActionFailed=Gluster service action failed
 GlusterServiceActionNotSupported=Gluster service action not supported
+GlusterLibgfapiException=Gluster libgfapi failed while getting the size 
information for gluster volume
+GlusterVolumeSizeInfoGetFailedException=Failed to get size information for 
gluster volume


-- 
To view, visit http://gerrit.ovirt.org/18890
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ide04bf31a4ee5b6579315371f09397142c58d9a3
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to