Ramesh N has uploaded a new change for review.

Change subject: gluster: vdsm change for fetching volume capacity info
......................................................................

gluster: vdsm change for fetching volume capacity info

   Fetch the volume capacity information as part of
gluster volume advanced details.

Change-Id: I126eb7057ee1cc9abb31c0a9579c48a5cccb8be0
Signed-off-by: Ramesh Nachimuthu <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeAdvancedDetails.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.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/vdscommands/gluster/GlusterVolumeAdvancedDetailsVDSParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeAdvancedDetailsVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
7 files changed, 229 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/24444/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeAdvancedDetails.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeAdvancedDetails.java
index 9ca1ead..01af250 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeAdvancedDetails.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeAdvancedDetails.java
@@ -1,8 +1,10 @@
 package org.ovirt.engine.core.common.businessentities.gluster;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
+import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.compat.Guid;
 
 /**
@@ -21,11 +23,14 @@
 
     private List<BrickDetails> brickDetails;
     private List<GlusterServerService> serviceInfo;
+    private GlusterVolumeSizeInfo capacityInfo;
+    private Date updatedAt;
 
     public GlusterVolumeAdvancedDetails() {
     }
 
     public void copyDetailsFrom(GlusterVolumeAdvancedDetails 
volumeAdvancedDetails) {
+        setCapacityInfo(volumeAdvancedDetails.getCapacityInfo());
         for (BrickDetails newBrickDetails : 
volumeAdvancedDetails.getBrickDetails()) {
             Guid newBrickId = 
newBrickDetails.getBrickProperties().getBrickId();
             if (newBrickId != null) {
@@ -105,4 +110,66 @@
     public void setServiceInfo(List<GlusterServerService> serviceInfo) {
         this.serviceInfo = serviceInfo;
     }
+
+    public GlusterVolumeSizeInfo getCapacityInfo() {
+        return capacityInfo;
+    }
+
+    public void setCapacityInfo(GlusterVolumeSizeInfo capacityInfo) {
+        this.capacityInfo = capacityInfo;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((capacityInfo == null) ? 0 : 
capacityInfo.hashCode());
+        result = prime * result + ((serviceInfo == null) ? 0 : 
serviceInfo.hashCode());
+        result = prime * result + ((brickDetails == null) ? 0 : 
brickDetails.hashCode());
+        result = prime * result + ((volumeId == null) ? 0 : 
volumeId.hashCode());
+        result = prime * result + ((updatedAt == null) ? 0 : 
updatedAt.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof GlusterVolumeAdvancedDetails)) {
+            return false;
+        }
+
+        if (this == obj)
+            return true;
+
+        GlusterVolumeAdvancedDetails otherVolumeAdvancedDetails = 
(GlusterVolumeAdvancedDetails) obj;
+
+        if (!ObjectUtils.objectsEqual(capacityInfo, 
otherVolumeAdvancedDetails.getCapacityInfo())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(brickDetails, 
otherVolumeAdvancedDetails.getBrickDetails())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(serviceInfo, 
otherVolumeAdvancedDetails.getServiceInfo())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(updatedAt, 
otherVolumeAdvancedDetails.getUpdatedAt())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(volumeId, 
otherVolumeAdvancedDetails.getVolumeId())) {
+            return false;
+        }
+        return true;
+    }
+
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
index e7fc8c2..5a0f113 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeEntity.java
@@ -77,6 +77,8 @@
 
     private GlusterAsyncTask asyncTask;
 
+    private GlusterVolumeAdvancedDetails advancedDetails;
+
     public GlusterVolumeEntity() {
         options = new LinkedHashMap<String, GlusterVolumeOptionEntity>();
         bricks = new ArrayList<GlusterBrickEntity>();
@@ -86,6 +88,7 @@
         transportTypes = new LinkedHashSet<TransportType>();
         volumeType = GlusterVolumeType.DISTRIBUTE;
         asyncTask = new GlusterAsyncTask();
+        advancedDetails = new GlusterVolumeAdvancedDetails();
     }
 
     @Override
@@ -374,6 +377,7 @@
         result = prime * result + ((accessProtocols == null) ? 0 : 
accessProtocols.hashCode());
         result = prime * result + ((bricks == null) ? 0 : bricks.hashCode());
         result = prime * result + ((asyncTask == null) ? 0 : 
asyncTask.hashCode());
+        result = prime * result + ((advancedDetails == null) ? 0 : 
advancedDetails.hashCode());
         return result;
     }
 
@@ -417,6 +421,10 @@
             return false;
         }
 
+        if (!ObjectUtils.objectsEqual(getAdvancedDetails(), 
volume.getAdvancedDetails())) {
+            return false;
+        }
+
         return true;
     }
 
@@ -453,4 +461,12 @@
     public void setAsyncTask(GlusterAsyncTask asyncTask) {
         this.asyncTask = asyncTask;
     }
+
+    public GlusterVolumeAdvancedDetails getAdvancedDetails() {
+        return advancedDetails;
+    }
+
+    public void setAdvancedDetails(GlusterVolumeAdvancedDetails 
advancedDetails) {
+        this.advancedDetails = advancedDetails;
+    }
 }
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..6bb0da7
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeSizeInfo.java
@@ -0,0 +1,96 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.io.Serializable;
+
+import org.ovirt.engine.core.common.utils.ObjectUtils;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GlusterVolumeSizeInfo implements Serializable {
+    private static final long serialVersionUID = -5145858224564431005L;
+
+    private Guid volumeId;
+
+    private Long totalSize;
+
+    private Long freeSize;
+
+    private Long usedSize;
+
+    public GlusterVolumeSizeInfo() {
+    }
+
+    public GlusterVolumeSizeInfo(Long totalSize, Long freeSize, Long usedSize) 
{
+        this.totalSize = totalSize;
+        this.freeSize = freeSize;
+        this.usedSize = usedSize;
+    }
+
+    public Guid getVolumeId() {
+        return this.volumeId;
+    }
+
+    public void setVolumeId(Guid id) {
+        this.volumeId = id;
+    }
+
+    public Long getTotalSize() {
+        return totalSize;
+    }
+
+    public void setTotalSize(Long totalSize) {
+        this.totalSize = totalSize;
+    }
+
+    public Long getFreeSize() {
+        return freeSize;
+    }
+
+    public void setFreeSize(Long freeSize) {
+        this.freeSize = freeSize;
+    }
+
+    public Long getUsedSize() {
+        return usedSize;
+    }
+
+    public void setUsedSize(Long usedSize) {
+        this.usedSize = usedSize;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((volumeId == null) ? 0 : 
volumeId.hashCode());
+        result = prime * result + ((totalSize == null) ? 0 : 
totalSize.hashCode());
+        result = prime * result + ((freeSize == null) ? 0 : 
freeSize.hashCode());
+        result = prime * result + ((usedSize == null) ? 0 : 
usedSize.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof GlusterVolumeSizeInfo)) {
+            return false;
+        }
+        GlusterVolumeSizeInfo sizeInfo = (GlusterVolumeSizeInfo) obj;
+
+        if (!ObjectUtils.objectsEqual(volumeId, sizeInfo.getVolumeId())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(totalSize, sizeInfo.getTotalSize())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(freeSize, sizeInfo.getFreeSize())) {
+            return false;
+        }
+
+        if (!ObjectUtils.objectsEqual(usedSize, sizeInfo.getUsedSize())) {
+            return false;
+        }
+
+        return true;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeAdvancedDetailsVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeAdvancedDetailsVDSParameters.java
index ad81e4e..83ff6e9 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeAdvancedDetailsVDSParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeAdvancedDetailsVDSParameters.java
@@ -10,6 +10,20 @@
     private Guid clusterId;
     private String brickName;
     private boolean detailRequired;
+    private boolean capacityInfoRequired;
+
+    public GlusterVolumeAdvancedDetailsVDSParameters(Guid upServerId,
+            Guid clusterId,
+            String volumeName,
+            String brickName,
+            boolean detailRequired,
+            boolean capacityInfoRequired) {
+        super(upServerId, volumeName);
+        this.clusterId = clusterId;
+        this.brickName = brickName;
+        this.detailRequired = detailRequired;
+        this.capacityInfoRequired = capacityInfoRequired;
+    }
 
     public GlusterVolumeAdvancedDetailsVDSParameters(Guid upServerId,
             Guid clusterId,
@@ -37,4 +51,12 @@
         return brickName;
     }
 
+    public boolean isCapacityInfoRequired() {
+        return capacityInfoRequired;
+    }
+
+    public void setCapacityInfoRequired(boolean capacityInfoRequired) {
+        this.capacityInfoRequired = capacityInfoRequired;
+    }
+
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeAdvancedDetailsVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeAdvancedDetailsVDSCommand.java
index e0db016..c9b5ead 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeAdvancedDetailsVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeAdvancedDetailsVDSCommand.java
@@ -25,20 +25,23 @@
     protected void executeVdsBrokerCommand() {
         executeVolumeStatusInfo("");
         GlusterVolumeAdvancedDetails volumeAdvancedDetails = 
result.getVolumeAdvancedDetails();
-
-        if (getParameters().isDetailRequired()) {
+        if (getParameters().isCapacityInfoRequired() || 
getParameters().isDetailRequired()) {
             if (getSucceeded()) {
                 
executeVolumeStatusInfo(GlusterVolumeStatusOption.DETAIL.name().toLowerCase());
                 if (getSucceeded()) {
                     
volumeAdvancedDetails.copyDetailsFrom(result.getVolumeAdvancedDetails());
-                    
executeVolumeStatusInfo(GlusterVolumeStatusOption.CLIENTS.name().toLowerCase());
-                    if (getSucceeded()) {
-                        
volumeAdvancedDetails.copyClientsFrom(result.getVolumeAdvancedDetails());
-                        
executeVolumeStatusInfo(GlusterVolumeStatusOption.MEM.name().toLowerCase());
+                }
+            }
+        }
+        if (getParameters().isDetailRequired()) {
+            if (getSucceeded()) {
+                
executeVolumeStatusInfo(GlusterVolumeStatusOption.CLIENTS.name().toLowerCase());
+                if (getSucceeded()) {
+                    
volumeAdvancedDetails.copyClientsFrom(result.getVolumeAdvancedDetails());
+                    
executeVolumeStatusInfo(GlusterVolumeStatusOption.MEM.name().toLowerCase());
 
-                        if (getSucceeded()) {
-                            
volumeAdvancedDetails.copyMemoryFrom(result.getVolumeAdvancedDetails());
-                        }
+                    if (getSucceeded()) {
+                        
volumeAdvancedDetails.copyMemoryFrom(result.getVolumeAdvancedDetails());
                     }
                 }
             }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java
index 0b6896b..5e2a5bb 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GlusterVolumeStatusReturnForXmlRpc.java
@@ -14,6 +14,7 @@
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeAdvancedDetails;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeSizeInfo;
 import org.ovirt.engine.core.common.businessentities.gluster.MallInfo;
 import org.ovirt.engine.core.common.businessentities.gluster.MemoryStatus;
 import org.ovirt.engine.core.common.businessentities.gluster.Mempool;
@@ -29,6 +30,7 @@
 public class GlusterVolumeStatusReturnForXmlRpc extends StatusReturnForXmlRpc {
     private static final String STATUS = "status";
     private static final String VOLUME_STATUS = "volumeStatus";
+    private static final String VOLUME_STATUS_INFO = "volumeStatsInfo";
     private static final String VOLUME_NAME = "name";
     private static final String PORT = "port";
     private static final String PID = "pid";
@@ -42,6 +44,7 @@
 
     private static final String DETAIL_SIZE_TOTAL = "sizeTotal";
     private static final String DETAIL_SIZE_FREE = "sizeFree";
+    private static final String DETAIL_SIZE_USED = "sizeUsed";
     private static final String DETAIL_DEVICE = "device";
     private static final String DETAIL_BLOCK_SIZE = "blockSize";
     private static final String DETAIL_MNT_OPTIONS = "mntOptions";
@@ -90,6 +93,18 @@
             List<BrickDetails> brickDetails = prepareBrickDetails(volume, 
(Object[]) statusInfo.get(BRICKS));
             volumeAdvancedDetails.setBrickDetails(brickDetails);
             
volumeAdvancedDetails.setServiceInfo(prepareServiceInfo(statusInfo));
+            GlusterVolumeSizeInfo capacityInfo = null;
+
+            // Fetch the volume capacity detail
+            if (statusInfo.containsKey(VOLUME_STATUS_INFO)) {
+                Map<String, Object> volumeStatusInfo = (Map<String, Object>) 
statusInfo.get("volumeStatsInfo");
+                capacityInfo = new GlusterVolumeSizeInfo();
+                capacityInfo.setVolumeId(volume.getId());
+                capacityInfo.setTotalSize(Long.valueOf((String) 
volumeStatusInfo.get(DETAIL_SIZE_TOTAL)));
+                capacityInfo.setUsedSize(Long.valueOf((String) 
volumeStatusInfo.get(DETAIL_SIZE_USED)));
+                capacityInfo.setFreeSize(Long.valueOf((String) 
volumeStatusInfo.get(DETAIL_SIZE_FREE)));
+                volumeAdvancedDetails.setCapacityInfo(capacityInfo);
+            }
         }
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
index eb8e734..05e6623 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
@@ -289,6 +289,7 @@
                <include 
name="common/businessentities/gluster/GlusterHookStatus.java"/>
                <include 
name="common/businessentities/gluster/GlusterHookContentType.java"/>
                <include 
name="common/businessentities/gluster/GlusterHookConflictFlags.java"/>
+               <include 
name="common/businessentities/gluster/GlusterVolumeSizeInfo.java"/>
                <include 
name="common/asynctasks/gluster/GlusterAsyncTask.java"/>
                <include 
name="common/asynctasks/gluster/GlusterTaskStatus.java"/>
                <include name="common/asynctasks/gluster/GlusterTaskType.java"/>


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I126eb7057ee1cc9abb31c0a9579c48a5cccb8be0
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Ramesh N <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to