Dhandapani Gopal has uploaded a new change for review.

Change subject: [WIP] engine: Get Volume Status Query
......................................................................

[WIP] engine: Get Volume Status Query

 - New entity classes for Volume Status
 - New Gluster Volume Status parameter class
 - New XmlRpc class for volume status
 - New bll and vds query

  TODO: Will send another patch set with Junit test

Change-Id: If6b590eaebeb1d06b7278300d5e12b2dab9eb093
Signed-off-by: Dhandapani <dgo...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeStatusQuery.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickDetails.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickProperties.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterClientInfo.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMallInfo.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMempool.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusEntity.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusOption.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/MemoryStatus.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeStatusParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/VDSCommandType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeStatusVDSParameters.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeStatusVDSCommand.java
A 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeStatusReturnForXmlRpc.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
17 files changed, 1,142 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/7807/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeStatusQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeStatusQuery.java
new file mode 100644
index 0000000..70ccc72
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeStatusQuery.java
@@ -0,0 +1,39 @@
+package org.ovirt.engine.core.bll.gluster;
+
+import org.ovirt.engine.core.bll.Backend;
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.bll.utils.ClusterUtils;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import 
org.ovirt.engine.core.common.queries.gluster.GlusterVolumeStatusParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeStatusVDSParameters;
+
+/**
+ * Query to get given volume status
+ */
+public class GetGlusterVolumeStatusQuery<P extends 
GlusterVolumeStatusParameters> extends QueriesCommandBase<P> {
+
+    public GetGlusterVolumeStatusQuery(P params) {
+        super(params);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        VDSReturnValue returnValue = 
getBackendInstance().RunVdsCommand(VDSCommandType.GetGlusterVolumeStatus,
+                new GlusterVolumeStatusVDSParameters(getClusterUtils()
+                        .getUpServer(getParameters().getClusterId()).getId(), 
getParameters().getClusterId(),
+                        getParameters().getVolumeName(), 
getParameters().getBrickName(), getParameters().isDetails()));
+
+        getQueryReturnValue().setReturnValue(returnValue.getReturnValue());
+    }
+
+    public ClusterUtils getClusterUtils() {
+        return ClusterUtils.getInstance();
+    }
+
+    public VDSBrokerFrontend getBackendInstance() {
+        return Backend.getInstance()
+                .getResourceManager();
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickDetails.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickDetails.java
new file mode 100644
index 0000000..f629a8e
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickDetails.java
@@ -0,0 +1,39 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.util.List;
+
+/**
+ * GlusterFS provides lot of volume status information about the volume brick.
+ * This will consolidate all the status inforamtion
+ *
+ * @see BrickProperties
+ * @see GlusterClientInfo
+ * @see MemoryStatus
+
+ */
+public class BrickDetails extends BrickProperties {
+
+    private static final long serialVersionUID = -1134758927239004412L;
+
+    public BrickDetails() {
+    }
+
+    List<GlusterClientInfo> clientInfo;
+    MemoryStatus memoryStatus;
+
+    public List<GlusterClientInfo> getClientInfo() {
+        return clientInfo;
+    }
+
+    public void setClientInfo(List<GlusterClientInfo> clientInfo) {
+        this.clientInfo = clientInfo;
+    }
+
+    public MemoryStatus getMemoryStatus() {
+        return memoryStatus;
+    }
+
+    public void setMemoryStatus(MemoryStatus memoryStatus) {
+        this.memoryStatus = memoryStatus;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickProperties.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickProperties.java
new file mode 100644
index 0000000..be5e5cc
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/BrickProperties.java
@@ -0,0 +1,118 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import javax.validation.constraints.NotNull;
+
+import org.ovirt.engine.core.common.validation.group.gluster.RemoveBrick;
+import org.ovirt.engine.core.compat.Guid;
+
+
+/**
+ * The gluster volume status detail.
+ *
+ */
+public class BrickProperties {
+
+    @NotNull(message = "VALIDATION.GLUSTER.BRICK.ID.NOT_NULL", groups = { 
RemoveBrick.class })
+    private Guid brickId;
+
+    private Integer port;
+
+    private Integer pid;
+
+    private GlusterStatus status;
+
+    private Double totalSize;
+
+    private Double freeSize;
+
+    private String device;
+
+    private Integer blockSize;
+
+    private String mntOptions;
+
+    private String fsName;
+
+    public BrickProperties() {
+    }
+
+    public Guid getBrickId() {
+        return brickId;
+    }
+
+    public void setBrickId(Guid brickId) {
+        this.brickId = brickId;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public Integer getPid() {
+        return pid;
+    }
+
+    public void setPid(Integer pid) {
+        this.pid = pid;
+    }
+
+    public GlusterStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(GlusterStatus shdStatus) {
+        this.status = shdStatus;
+    }
+
+    public Double getTotalSize() {
+        return totalSize;
+    }
+
+    public void setTotalSize(Double totalSize) {
+        this.totalSize = totalSize;
+    }
+
+    public Double getFreeSize() {
+        return freeSize;
+    }
+
+    public void setFreeSize(Double freeSize) {
+        this.freeSize = freeSize;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public Integer getBlockSize() {
+        return blockSize;
+    }
+
+    public void setBlockSize(Integer blockSize) {
+        this.blockSize = blockSize;
+    }
+
+    public String getMntOptions() {
+        return mntOptions;
+    }
+
+    public void setMntOptions(String mntOptions) {
+        this.mntOptions = mntOptions;
+    }
+
+    public String getFsName() {
+        return fsName;
+    }
+
+    public void setFsName(String fsName) {
+        this.fsName = fsName;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterClientInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterClientInfo.java
new file mode 100644
index 0000000..8a9584a
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterClientInfo.java
@@ -0,0 +1,54 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+
+/**
+ * The gluster volume status clients info.
+
+ */
+public class GlusterClientInfo{
+
+    private static final long serialVersionUID = 4426819375609665363L;
+
+    private String hostname;
+
+    private Integer clientPort;
+
+    private Integer bytesRead;
+
+    private Integer bytesWrite;
+
+    public GlusterClientInfo() {
+    }
+
+    public String getHostname() {
+        return hostname;
+    }
+
+    public void setHostname(String hostname) {
+        this.hostname = hostname;
+    }
+
+    public Integer getClientPort() {
+        return clientPort;
+    }
+
+    public void setClientPort(Integer clientPort) {
+        this.clientPort = clientPort;
+    }
+
+    public Integer getBytesRead() {
+        return bytesRead;
+    }
+
+    public void setBytesRead(Integer bytesRead) {
+        this.bytesRead = bytesRead;
+    }
+
+    public Integer getBytesWrite() {
+        return bytesWrite;
+    }
+
+    public void setBytesWrite(Integer bytesWrite) {
+        this.bytesWrite = bytesWrite;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMallInfo.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMallInfo.java
new file mode 100644
index 0000000..489db04
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMallInfo.java
@@ -0,0 +1,113 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+
+/**
+ * The gluster volume memory status Mall Info.
+ *
+ */
+public class GlusterMallInfo{
+
+    private Integer arena;
+
+    private Integer ordblks;
+
+    private Integer smblks;
+
+    private Integer hblks;
+
+    private Integer hblkhd;
+
+    private Integer usmblks;
+
+    private Integer fsmblks;
+
+    private Integer uordblks;
+
+    private Integer fordblks;
+
+    private Integer keepcost;
+
+
+    public GlusterMallInfo() {
+    }
+
+    public Integer getArena() {
+        return arena;
+    }
+
+    public void setArena(Integer arena) {
+        this.arena = arena;
+    }
+
+    public Integer getOrdblks() {
+        return ordblks;
+    }
+
+    public void setOrdblks(Integer ordblks) {
+        this.ordblks = ordblks;
+    }
+
+    public Integer getSmblks() {
+        return smblks;
+    }
+
+    public void setSmblks(Integer smblks) {
+        this.smblks = smblks;
+    }
+
+    public Integer getHblks() {
+        return hblks;
+    }
+
+    public void setHblks(Integer hblks) {
+        this.hblks = hblks;
+    }
+
+    public Integer getHblkhd() {
+        return hblkhd;
+    }
+
+    public void setHblkhd(Integer hblkhd) {
+        this.hblkhd = hblkhd;
+    }
+
+    public Integer getUsmblks() {
+        return usmblks;
+    }
+
+    public void setUsmblks(Integer usmblks) {
+        this.usmblks = usmblks;
+    }
+
+    public Integer getFsmblks() {
+        return fsmblks;
+    }
+
+    public void setFsmblks(Integer fsmblks) {
+        this.fsmblks = fsmblks;
+    }
+
+    public Integer getUordblks() {
+        return uordblks;
+    }
+
+    public void setUordblks(Integer uordblks) {
+        this.uordblks = uordblks;
+    }
+
+    public Integer getFordblks() {
+        return fordblks;
+    }
+
+    public void setFordblks(Integer fordblks) {
+        this.fordblks = fordblks;
+    }
+
+    public Integer getKeepcost() {
+        return keepcost;
+    }
+
+    public void setKeepcost(Integer keepcost) {
+        this.keepcost = keepcost;
+    }
+ }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMempool.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMempool.java
new file mode 100644
index 0000000..694bd24
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterMempool.java
@@ -0,0 +1,94 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+
+/**
+ * The gluster volume memory status Mem pool.
+ *
+ */
+public class GlusterMempool{
+
+    private static final long serialVersionUID = 4426819375609665363L;
+
+    private String name;
+
+    private Integer hotCount;
+
+    private Integer coldCount;
+
+    private Integer padddedSize;
+
+    private Integer allocCount;
+
+    private Integer maxAlloc;
+
+    private Integer poolMisses;
+
+    private Integer maxStdAlloc;
+
+    public GlusterMempool() {
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getHotCount() {
+        return hotCount;
+    }
+
+    public void setHotCount(Integer hotCount) {
+        this.hotCount = hotCount;
+    }
+
+    public Integer getColdCount() {
+        return coldCount;
+    }
+
+    public void setColdCount(Integer coldCount) {
+        this.coldCount = coldCount;
+    }
+
+    public Integer getPadddedSize() {
+        return padddedSize;
+    }
+
+    public void setPadddedSize(Integer padddedSize) {
+        this.padddedSize = padddedSize;
+    }
+
+    public Integer getAllocCount() {
+        return allocCount;
+    }
+
+    public void setAllocCount(Integer allocCount) {
+        this.allocCount = allocCount;
+    }
+
+    public Integer getMaxAlloc() {
+        return maxAlloc;
+    }
+
+    public void setMaxAlloc(Integer maxAlloc) {
+        this.maxAlloc = maxAlloc;
+    }
+
+    public Integer getPoolMisses() {
+        return poolMisses;
+    }
+
+    public void setPoolMisses(Integer poolMisses) {
+        this.poolMisses = poolMisses;
+    }
+
+    public Integer getMaxStdAlloc() {
+        return maxStdAlloc;
+    }
+
+    public void setMaxStdAlloc(Integer maxStdAlloc) {
+        this.maxStdAlloc = maxStdAlloc;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusEntity.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusEntity.java
new file mode 100644
index 0000000..0be6015
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusEntity.java
@@ -0,0 +1,195 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import org.ovirt.engine.core.common.businessentities.BusinessEntity;
+import org.ovirt.engine.core.common.validation.group.RemoveEntity;
+import org.ovirt.engine.core.compat.Guid;
+
+/**
+ * The gluster volume status info. GlusterFS provides lot of status 
information about the volume brick.
+ * This will consolidate all the status inforamtion
+ *
+ * @see BrickProperties
+ * @see GlusterClientInfo
+ * @see MemoryStatus
+
+ */
+public class GlusterVolumeStatusEntity implements BusinessEntity<Guid> {
+
+    private static final long serialVersionUID = -1134758927239004412L;
+
+    public GlusterVolumeStatusEntity() {
+    }
+
+    @NotNull(message = "VALIDATION.GLUSTER.VOLUME.ID.NOT_NULL", groups = { 
RemoveEntity.class })
+    private Guid volumeId;
+
+    List<BrickDetails> brickDetails;
+    List<VolumeStatusNfs> volumeStatusNfs;
+    List<VolumeStatusShd> volumeStatusShd;
+
+    public Guid getId() {
+        return volumeId;
+    }
+
+    public void setId(Guid volumeId) {
+        this.volumeId = volumeId;
+    }
+
+    public List<BrickDetails> getBrickDetails() {
+        return brickDetails;
+    }
+
+    public void setBrickDetails(List<BrickDetails> brickDetails) {
+        this.brickDetails = brickDetails;
+    }
+
+    public List<VolumeStatusNfs> getVolumeStatusNfs() {
+        return volumeStatusNfs;
+    }
+
+    public void setVolumeStatusNfs(List<VolumeStatusNfs> volumeStatusNfs) {
+        this.volumeStatusNfs = volumeStatusNfs;
+    }
+
+    public List<VolumeStatusShd> getVolumeStatusShd() {
+        return volumeStatusShd;
+    }
+
+    public void setVolumeStatusShd(List<VolumeStatusShd> volumeStatusShd) {
+        this.volumeStatusShd = volumeStatusShd;
+    }
+
+    public class VolumeStatusNfs {
+        public VolumeStatusNfs() {
+
+        }
+
+        private String hostName;
+        private int port;
+        private int pid;
+        private GlusterStatus status;
+
+        public String getHostName() {
+            return hostName;
+        }
+
+        public void setHostName(String hostName) {
+            this.hostName = hostName;
+        }
+
+        public int getPort() {
+            return port;
+        }
+
+        public void setPort(int port) {
+            this.port = port;
+        }
+
+        public int getPid() {
+            return pid;
+        }
+
+        public void setPid(int pid) {
+            this.pid = pid;
+        }
+
+        public GlusterStatus getStatus() {
+            return status;
+        }
+
+        public void setStatus(GlusterStatus status) {
+            this.status = status;
+        }
+    }
+
+    public class VolumeStatusShd {
+        public VolumeStatusShd() {
+        }
+
+        private String hostName;
+
+        private Integer pid;
+
+        private GlusterStatus status;
+
+        public String getHostName() {
+            return hostName;
+        }
+
+        public void setHostName(String hostName) {
+            this.hostName = hostName;
+        }
+
+        public Integer getPid() {
+            return pid;
+        }
+
+        public void setPid(Integer pid) {
+            this.pid = pid;
+        }
+
+        public GlusterStatus getStatus() {
+            return status;
+        }
+
+        public void setStatus(GlusterStatus status) {
+            this.status = status;
+        }
+    }
+
+    public void copyDetailsFrom(GlusterVolumeStatusEntity entity) {
+        // Copy all the fields which received for "DETAIL"
+        for (BrickDetails entityBrick : entity.getBrickDetails()) {
+            for (BrickDetails brick : getBrickDetails()) {
+                if (entityBrick.getBrickId().equals(brick.getBrickId())) {
+                    brick = copyBrickDetails(brick, entityBrick);
+                }
+            }
+        }
+    }
+
+    private BrickDetails copyBrickDetails(BrickDetails brick, BrickDetails 
entityBrick) {
+        brick.setTotalSize( entityBrick.getTotalSize());
+        brick.setFreeSize(entityBrick.getFreeSize());
+        brick.setDevice(entityBrick.getDevice());
+        brick.setBlockSize(entityBrick.getBlockSize());
+        brick.setMntOptions(entityBrick.getMntOptions());
+        brick.setFsName(entityBrick.getFsName());
+        return brick;
+    }
+
+    public void copyClientsFrom(GlusterVolumeStatusEntity entity) {
+        // Copy all the fields which received for "Clients"
+        for (BrickDetails entityBrick : entity.getBrickDetails()) {
+            for (BrickDetails brick : getBrickDetails()) {
+                if (entityBrick.getBrickId().equals(brick.getBrickId())) {
+                    brick = copyClientDetails(brick, entityBrick);
+                }
+            }
+        }
+    }
+
+    private BrickDetails copyClientDetails(BrickDetails brick, BrickDetails 
entityBrick) {
+        brick.setClientInfo(entityBrick.getClientInfo());
+        return brick;
+    }
+
+    public void copyMemoryFrom(GlusterVolumeStatusEntity entity) {
+        for (BrickDetails entityBrick : entity.getBrickDetails()) {
+            for (BrickDetails brick : getBrickDetails()) {
+                if (entityBrick.getBrickId().equals(brick.getBrickId())) {
+                    brick = copyMemoryDetails(brick, entityBrick);
+                }
+            }
+        }
+    }
+
+    private BrickDetails copyMemoryDetails(BrickDetails brick, BrickDetails 
entityBrick) {
+        brick.setMemoryStatus(entityBrick.getMemoryStatus());
+        return brick;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusOption.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusOption.java
new file mode 100644
index 0000000..b4f0377
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/GlusterVolumeStatusOption.java
@@ -0,0 +1,12 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+
+/**
+ * Enum of Gluster volume Statuses
+ *
+ */
+public enum GlusterVolumeStatusOption {
+   DETAIL,
+   CLIENTS,
+   MEM;
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/MemoryStatus.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/MemoryStatus.java
new file mode 100644
index 0000000..bc799af
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/gluster/MemoryStatus.java
@@ -0,0 +1,36 @@
+package org.ovirt.engine.core.common.businessentities.gluster;
+
+import java.util.List;
+
+
+/**
+ * The gluster volume Memory status info.
+ *
+ */
+public class MemoryStatus{
+
+    public MemoryStatus() {
+    }
+
+    private GlusterMallInfo glusterMallInfo;
+
+    private List<GlusterMempool> glusterMemPool;
+
+     public GlusterMallInfo getGlusterMallInfo() {
+        return glusterMallInfo;
+    }
+
+    public void setGlusterMallInfo(GlusterMallInfo glusterMallInfo) {
+        this.glusterMallInfo = glusterMallInfo;
+    }
+
+    public List<GlusterMempool> getGlusterMemPool() {
+        return glusterMemPool;
+    }
+
+    public void setGlusterMemPool(List<GlusterMempool> glusterMemPool) {
+        this.glusterMemPool = glusterMemPool;
+    }
+
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeStatusParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeStatusParameters.java
new file mode 100644
index 0000000..8f763b1
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/gluster/GlusterVolumeStatusParameters.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.core.common.queries.gluster;
+
+import org.ovirt.engine.core.compat.Guid;
+
+/**
+ * Parameter class with volume name, brick name and details as parameters. <br>
+ * This will be used by gluster volume status query. <br>
+ */
+public class GlusterVolumeStatusParameters extends GlusterParameters {
+    private static final long serialVersionUID = -1224829720081853632L;
+    private String volumeName;
+    private String brickName;
+    private boolean details;
+
+    public GlusterVolumeStatusParameters(Guid clusterId, String volumeName, 
String brickName, boolean details) {
+        super(clusterId);
+        setVolumeName(volumeName);
+        setBrickName(brickName);
+        setDetails(details);
+    }
+
+    public String getVolumeName() {
+        return volumeName;
+    }
+
+    public void setVolumeName(String volumeName) {
+        this.volumeName = volumeName;
+    }
+
+    public String getBrickName() {
+        return brickName;
+    }
+
+    public void setBrickName(String brickName) {
+        this.brickName = brickName;
+    }
+
+    public boolean isDetails() {
+        return details;
+    }
+
+    public void setDetails(boolean details) {
+        this.details = details;
+    }
+}
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 7d0d18a6..aacddd9 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
@@ -137,6 +137,7 @@
     GlusterHostRemove("org.ovirt.engine.core.vdsbroker.gluster"),
     GlusterHostAdd("org.ovirt.engine.core.vdsbroker.gluster"),
     GlusterServersList("org.ovirt.engine.core.vdsbroker.gluster"),
+    GetGlusterVolumeStatus("org.ovirt.engine.core.vdsbroker.gluster"),
     ;
 
     String packageName;
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeStatusVDSParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeStatusVDSParameters.java
new file mode 100644
index 0000000..4063cb3
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/gluster/GlusterVolumeStatusVDSParameters.java
@@ -0,0 +1,37 @@
+package org.ovirt.engine.core.common.vdscommands.gluster;
+
+import org.ovirt.engine.core.compat.Guid;
+
+/**
+ * VDS parameter class with clusterId, volume name, brick name, details as 
parameter. <br>
+ * This will be used directly by Get Volume Status Query <br>
+ */
+public class GlusterVolumeStatusVDSParameters extends 
GlusterVolumeVDSParameters {
+    private final Guid clusterId;
+    private final String brickName;
+    private final boolean details;
+
+    public GlusterVolumeStatusVDSParameters(Guid upServerId,
+            Guid clusterId,
+            String volumeName,
+            String brickName,
+            boolean details) {
+        super(upServerId, volumeName);
+        this.clusterId = clusterId;
+        this.brickName = brickName;
+        this.details = details;
+    }
+
+    public Guid getClusterId() {
+        return clusterId;
+    }
+
+    public boolean isDetails() {
+        return details;
+    }
+
+    public String getBrickName() {
+        return brickName;
+    }
+
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeStatusVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeStatusVDSCommand.java
new file mode 100644
index 0000000..e38a92f
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/gluster/GetGlusterVolumeStatusVDSCommand.java
@@ -0,0 +1,68 @@
+package org.ovirt.engine.core.vdsbroker.gluster;
+
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeStatusEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeStatusOption;
+import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeStatusVDSParameters;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeStatusReturnForXmlRpc;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
+
+public class GetGlusterVolumeStatusVDSCommand<P extends 
GlusterVolumeStatusVDSParameters> extends AbstractGlusterBrokerCommand<P> {
+    private GlusterVolumeStatusReturnForXmlRpc result;
+
+    public GetGlusterVolumeStatusVDSCommand(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected StatusForXmlRpc getReturnStatus() {
+        return result.mStatus;
+    }
+
+    private boolean getSucceeded() {
+        return (result.mStatus.mCode == 0);
+    }
+
+    @Override
+    protected void ExecuteVdsBrokerCommand() {
+        GlusterVolumeStatusEntity volumeStatusEntity = new 
GlusterVolumeStatusEntity();
+        if (!getParameters().isDetails()) {
+            result = executeVolumeStatusInfo(volumeStatusEntity, "");
+            volumeStatusEntity = result.getVolumeStatus();
+        } else {
+            result = executeVolumeStatusInfo(volumeStatusEntity, "");
+            if (getSucceeded()) {
+                volumeStatusEntity = result.getVolumeStatus();
+                result =
+                        executeVolumeStatusInfo(volumeStatusEntity, 
GlusterVolumeStatusOption.DETAIL.name()
+                                .toLowerCase());
+                if (getSucceeded()) {
+                    
volumeStatusEntity.copyDetailsFrom(result.getVolumeStatus());
+
+                    result =
+                            executeVolumeStatusInfo(volumeStatusEntity, 
GlusterVolumeStatusOption.CLIENTS.name()
+                                    .toLowerCase());
+                    if (getSucceeded()) {
+                        
volumeStatusEntity.copyClientsFrom(result.getVolumeStatus());
+
+                        result =
+                                executeVolumeStatusInfo(volumeStatusEntity, 
GlusterVolumeStatusOption.MEM.name()
+                                        .toLowerCase());
+                        if (getSucceeded()) {
+                            
volumeStatusEntity.copyMemoryFrom(result.getVolumeStatus());
+                        }
+                    }
+                }
+            }
+        }
+
+        ProceedProxyReturnValue();
+        setReturnValue(volumeStatusEntity);
+    }
+
+    private GlusterVolumeStatusReturnForXmlRpc 
executeVolumeStatusInfo(GlusterVolumeStatusEntity entity,
+            String volumeStatusOption) {
+        return getBroker().glusterVolumeStatus(getParameters().getClusterId(),
+                getParameters().getVolumeName(), 
getParameters().getBrickName(),
+                volumeStatusOption);
+    }
+}
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeStatusReturnForXmlRpc.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeStatusReturnForXmlRpc.java
new file mode 100644
index 0000000..da6c450
--- /dev/null
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/GlusterVolumeStatusReturnForXmlRpc.java
@@ -0,0 +1,272 @@
+package org.ovirt.engine.core.vdsbroker.irsbroker;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.gluster.BrickDetails;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterClientInfo;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterMallInfo;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterMempool;
+import org.ovirt.engine.core.common.businessentities.gluster.GlusterStatus;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeStatusEntity;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeStatusEntity.VolumeStatusNfs;
+import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeStatusEntity.VolumeStatusShd;
+import org.ovirt.engine.core.common.businessentities.gluster.MemoryStatus;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
+import org.ovirt.engine.core.vdsbroker.vdsbroker.StatusForXmlRpc;
+
+@SuppressWarnings("unchecked")
+public class GlusterVolumeStatusReturnForXmlRpc extends StatusReturnForXmlRpc {
+    private static final String STATUS = "status";
+    private static final String VOLUME_STATUS = "volumeStatus";
+    private static final String VOLUME_NAME = "name";
+    private static final String PORT = "port";
+    private static final String PID = "pid";
+    private static final String ONLINE = "ONLINE";
+    private static final String BRICKS = "bricks";
+    private static final String BRICK = "brick";
+    private static final String NFS = "nfs";
+    private static final String SHD = "shd";
+    private static final String HOSTNAME = "hostname";
+
+    private static final String DETAIL_SIZE_TOTAL = "sizeTotal";
+    private static final String DETAIL_SIZE_FREE = "sizeFree";
+    private static final String DETAIL_DEVICE = "device";
+    private static final String DETAIL_BLOCK_SIZE = "blockSize";
+    private static final String DETAIL_MNT_OPTIONS = "mntOptions";
+    private static final String DETAIL_FS_NAME = "fsName";
+
+    private static final String CLIENTS_STATUS = "clientsStatus";
+    private static final String CLIENTS_HOST_NAME = "hostname";
+    private static final String CLIENTS_BYTES_READ = "bytesRead";
+    private static final String CLIENTS_BYTES_WRITE = "bytesWrite";
+
+    private static final String MEMORY_STATUS = "memStatus";
+    private static final String MEMORY_MALL_INFO = "mallinfo";
+    private static final String MEMORY_ARENA = "arena";
+    private static final String MEMORY_ORDBLKS = "ordblks";
+    private static final String MEMORY_SMBLKS = "smblks";
+    private static final String MEMORY_HBLKS = "hblks";
+    private static final String MEMORY_HBLKHD = "hblkhd";
+    private static final String MEMORY_USMBLKS = "usmblks";
+    private static final String MEMORY_FSMBLKS = "fsmblks";
+    private static final String MEMORY_UORDBLKS = "uordblks";
+    private static final String MEMORY_FORDBLKS = "fordblks";
+    private static final String MEMORY_KEEPCOST = "keepcost";
+
+    private static final String MEMORY_MEM_POOL = "mempool";
+    private static final String MEMORY_NAME = "name";
+    private static final String MEMORY_HOTCOUNT = "hotCount";
+    private static final String MEMORY_COLDCOUNT = "coldCount";
+    private static final String MEMORY_PADDDEDSIZEOF = "padddedSizeOf";
+    private static final String MEMORY_ALLOCCOUNT = "allocCount";
+    private static final String MEMORY_MAXALLOC = "maxAlloc";
+    private static final String MEMORY_POOLMISSES = "poolMisses";
+    private static final String MEMORY_MAXSTDALLOC = "maxStdAlloc";
+
+    // We are ignoring missing fields after the status, because on failure it 
is
+    // not sent.
+    // [XmlRpcMissingMapping(MappingAction.Ignore), 
XmlRpcMember("volumeStatus")]
+
+    // [XmlRpcMember("status")]
+    public StatusForXmlRpc mStatus;
+
+    GlusterVolumeStatusEntity volumeStatusEntity;
+    List<BrickDetails> brickDetails;
+    private GlusterVolumeEntity volume;
+    List<VolumeStatusNfs> volumeStatusNfs;
+    List<VolumeStatusShd> volumeStatusShd;
+
+    public GlusterVolumeStatusReturnForXmlRpc(Guid clusterId, Map<String, 
Object> innerMap) {
+        super(innerMap);
+        mStatus = new StatusForXmlRpc((Map<String, Object>) 
innerMap.get(STATUS));
+        Map<String, Object> statusInfo = (Map<String, Object>) 
innerMap.get(VOLUME_STATUS);
+
+        if (statusInfo != null) {
+            String volumeName = (String) statusInfo.get(VOLUME_NAME);
+            volume = getGlusterVolumeDao().getByName(clusterId, volumeName);
+
+            prepareVolumeStatusInfoEntity((Map<String, Object>) 
statusInfo.get(BRICKS));
+
+            if (statusInfo.get(NFS) != null && ((String) 
statusInfo.get(NFS)).length() > 0) {
+                prepareVolumeNfsStatus((Map<String, Object>) 
statusInfo.get(NFS));
+                volumeStatusEntity.setVolumeStatusNfs(volumeStatusNfs);
+            }
+            if ( statusInfo.get(SHD) != null && ((String) 
statusInfo.get(SHD)).length() > 0) {
+                prepareVolumeShdStatus((Map<String, Object>) 
statusInfo.get(SHD));
+                volumeStatusEntity.setVolumeStatusShd(volumeStatusShd);
+            }
+            volumeStatusEntity.setId(volume.getId());
+            volumeStatusEntity.setBrickDetails(brickDetails);
+        }
+    }
+
+    public GlusterVolumeStatusEntity getVolumeStatus() {
+        return volumeStatusEntity;
+    }
+
+    private void prepareVolumeNfsStatus(Map<String, Object> nfsInfo) {
+        for (int i = 0; i < nfsInfo.size(); i++) {
+            VolumeStatusNfs nfsStatus = volumeStatusEntity.new 
VolumeStatusNfs();
+            nfsStatus.setHostName((String) nfsInfo.get(HOSTNAME));
+            nfsStatus.setPort(Integer.valueOf((String) nfsInfo.get(PORT)));
+            nfsStatus.setPid(Integer.valueOf((String) nfsInfo.get(PID)));
+
+            String brickStatus = (String) nfsInfo.get(STATUS);
+            if (brickStatus.toUpperCase().equals(ONLINE)) {
+                nfsStatus.setStatus(GlusterStatus.UP);
+            } else {
+                nfsStatus.setStatus(GlusterStatus.DOWN);
+            }
+            volumeStatusNfs.add(nfsStatus);
+        }
+    }
+
+    private void prepareVolumeShdStatus(Map<String, Object> shdInfo) {
+        for (int i = 0; i < shdInfo.size(); i++) {
+            VolumeStatusShd shdStatus = volumeStatusEntity.new 
VolumeStatusShd();
+            shdStatus.setHostName((String) shdInfo.get(HOSTNAME));
+            shdStatus.setPid(Integer.valueOf((String) shdInfo.get(PID)));
+            String brickStatus = (String) shdInfo.get(STATUS);
+            if (brickStatus.toUpperCase().equals(ONLINE)) {
+                shdStatus.setStatus(GlusterStatus.UP);
+            } else {
+                shdStatus.setStatus(GlusterStatus.DOWN);
+            }
+            volumeStatusShd.add(shdStatus);
+        }
+    }
+
+    private void prepareVolumeStatusInfoEntity(Map<String, Object> bricksList) 
{
+        for (int i = 0; i < bricksList.size(); i++) {
+            BrickDetails volumeBrickDetails = new BrickDetails();
+            volumeBrickDetails.setBrickId(getBrickId(volume.getBricks(), 
(String) bricksList.get(BRICK)));
+            volumeBrickDetails.setPort(Integer.valueOf((String) 
bricksList.get(PORT)));
+            volumeBrickDetails.setPid(Integer.valueOf((String) 
bricksList.get(PID)));
+
+            String brickStatus = (String) bricksList.get(STATUS);
+            if (brickStatus.toUpperCase().equals(ONLINE)) {
+                volumeBrickDetails.setStatus(GlusterStatus.UP);
+            } else {
+                volumeBrickDetails.setStatus(GlusterStatus.DOWN);
+            }
+
+            // Fetch the volume status detail
+            if (bricksList.get(DETAIL_SIZE_TOTAL) != null && ((String) 
bricksList.get(DETAIL_SIZE_TOTAL)).length() > 0) {
+                volumeBrickDetails.setTotalSize(Double.valueOf((String) 
bricksList.get(DETAIL_SIZE_TOTAL)));
+            }
+            if (bricksList.get(DETAIL_SIZE_FREE) != null && ((String) 
bricksList.get(DETAIL_SIZE_FREE)).length() > 0) {
+                volumeBrickDetails.setFreeSize(Double.valueOf((String) 
bricksList.get(DETAIL_SIZE_FREE)));
+            }
+
+            if (bricksList.get(DETAIL_DEVICE) != null && ((String) 
bricksList.get(DETAIL_DEVICE)).length() > 0) {
+                volumeBrickDetails.setDevice((String) 
bricksList.get(DETAIL_DEVICE));
+            }
+
+            if (bricksList.get(DETAIL_BLOCK_SIZE) != null && ((String) 
bricksList.get(DETAIL_BLOCK_SIZE)).length() > 0) {
+                volumeBrickDetails.setBlockSize(Integer.valueOf((String) 
bricksList.get(DETAIL_BLOCK_SIZE)));
+            }
+
+            if (bricksList.get(DETAIL_MNT_OPTIONS) != null
+                    && ((String) bricksList.get(DETAIL_MNT_OPTIONS)).length() 
> 0) {
+                volumeBrickDetails.setMntOptions((String) 
bricksList.get(DETAIL_MNT_OPTIONS));
+            }
+
+            if (bricksList.get(DETAIL_FS_NAME) != null && ((String) 
bricksList.get(DETAIL_FS_NAME)).length() > 0) {
+                volumeBrickDetails.setFsName((String) 
bricksList.get(DETAIL_FS_NAME));
+            }
+
+            // Fetch Clients Details
+            if (bricksList.get(CLIENTS_STATUS) != null && ((String) 
bricksList.get(CLIENTS_STATUS)).length() > 0) {
+                
volumeBrickDetails.setClientInfo(prepareClientInfo((Map<String, Object>) 
bricksList.get(CLIENTS_STATUS)));
+            }
+
+            // Fetch Memory Details
+            if (bricksList.get(MEMORY_STATUS) != null && ((String) 
bricksList.get(MEMORY_STATUS)).length() > 0) {
+                
volumeBrickDetails.setMemoryStatus(prepareMemoryStatus((Map<String, Object>) 
bricksList.get(MEMORY_STATUS)));
+            }
+
+            brickDetails.add(volumeBrickDetails);
+        }
+    }
+
+    private MemoryStatus prepareMemoryStatus(Map<String, Object> memStatus) {
+        MemoryStatus memoryStatus = new MemoryStatus();
+        memoryStatus.setGlusterMallInfo(prepareMallInfo((Map<String, Object>) 
memStatus.get(MEMORY_MALL_INFO)));
+        memoryStatus.setGlusterMemPool(prepareMemPool((Map<String, Object>) 
memStatus.get(MEMORY_MEM_POOL)));
+        return memoryStatus;
+    }
+
+    private List<GlusterMempool> prepareMemPool(Map<String, Object> memPool) {
+        List<GlusterMempool> memPoolList = new ArrayList<GlusterMempool>();
+        for (int i = 0; i < memPool.size(); i++) {
+            GlusterMempool glusterMemoryPool = new GlusterMempool();
+            glusterMemoryPool.setName((String) memPool.get(MEMORY_NAME));
+            glusterMemoryPool.setHotCount(Integer.valueOf((String) 
memPool.get(MEMORY_HOTCOUNT)));
+            glusterMemoryPool.setColdCount(Integer.valueOf((String) 
memPool.get(MEMORY_COLDCOUNT)));
+            glusterMemoryPool.setPadddedSize(Integer.valueOf((String) 
memPool.get(MEMORY_PADDDEDSIZEOF)));
+            glusterMemoryPool.setAllocCount(Integer.valueOf((String) 
memPool.get(MEMORY_ALLOCCOUNT)));
+            glusterMemoryPool.setMaxAlloc(Integer.valueOf((String) 
memPool.get(MEMORY_MAXALLOC)));
+            glusterMemoryPool.setPoolMisses(Integer.valueOf((String) 
memPool.get(MEMORY_POOLMISSES)));
+            glusterMemoryPool.setMaxStdAlloc(Integer.valueOf((String) 
memPool.get(MEMORY_MAXSTDALLOC)));
+            memPoolList.add(glusterMemoryPool);
+        }
+        return memPoolList;
+    }
+
+    private GlusterMallInfo prepareMallInfo(Map<String, Object> mallInfo) {
+        GlusterMallInfo glusterMallInfo = new GlusterMallInfo();
+        glusterMallInfo.setArena(Integer.valueOf((String) 
mallInfo.get(MEMORY_ARENA)));
+        glusterMallInfo.setOrdblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_ORDBLKS)));
+        glusterMallInfo.setSmblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_SMBLKS)));
+        glusterMallInfo.setHblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_HBLKS)));
+        glusterMallInfo.setHblkhd(Integer.valueOf((String) 
mallInfo.get(MEMORY_HBLKHD)));
+        glusterMallInfo.setUsmblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_USMBLKS)));
+        glusterMallInfo.setFsmblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_FSMBLKS)));
+        glusterMallInfo.setUordblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_UORDBLKS)));
+        glusterMallInfo.setFordblks(Integer.valueOf((String) 
mallInfo.get(MEMORY_FORDBLKS)));
+        glusterMallInfo.setKeepcost(Integer.valueOf((String) 
mallInfo.get(MEMORY_KEEPCOST)));
+        return glusterMallInfo;
+    }
+
+    private List<GlusterClientInfo> prepareClientInfo(Map<String, Object> 
clientsStatus) {
+        List<GlusterClientInfo> clientInfoList = new 
ArrayList<GlusterClientInfo>();
+        for (int i = 0; i < clientsStatus.size(); i++) {
+            GlusterClientInfo clientInfo = new GlusterClientInfo();
+            String hostName = (String) clientsStatus.get(CLIENTS_HOST_NAME);
+            String[] hostNameArr = hostName.split(":", -1);
+
+            clientInfo.setHostname(hostNameArr[0]);
+            clientInfo.setClientPort(Integer.valueOf(hostNameArr[1]));
+            clientInfo.setBytesRead(Integer.valueOf((String) 
clientsStatus.get(CLIENTS_BYTES_READ)));
+            clientInfo.setBytesWrite(Integer.valueOf((String) 
clientsStatus.get(CLIENTS_BYTES_WRITE)));
+            clientInfoList.add(clientInfo);
+        }
+        return clientInfoList;
+    }
+
+    private Guid getBrickId(List<GlusterBrickEntity> bricksList, String 
qualifiedBrickName) {
+        String[] brickParts = qualifiedBrickName.split(":", -1);
+
+        if (brickParts.length != 2) {
+            throw new RuntimeException("Invalid brick representation [" + 
qualifiedBrickName + "]");
+        }
+        for (GlusterBrickEntity brick : bricksList) {
+            // Compare the brickname with the existing volume brick
+            if (brick.getQualifiedName().equals(qualifiedBrickName)) {
+                return brick.getId();
+            }
+        }
+        return null;
+    }
+
+    protected GlusterVolumeDao getGlusterVolumeDao() {
+        return DbFacade.getInstance().getGlusterVolumeDao();
+    }
+
+}
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 f04e32e..fe76154 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
@@ -4,8 +4,10 @@
 import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 
+import org.ovirt.engine.core.compat.Guid;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterServersListReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeOptionsInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeStatusReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct;
@@ -236,4 +238,5 @@
 
     GlusterServersListReturnForXmlRpc glusterServersList();
 
+    GlusterVolumeStatusReturnForXmlRpc glusterVolumeStatus(Guid clusterId, 
String volumeName, String brickName, String volumeStatusOption);
 }
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 246da01..076b122 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
@@ -231,4 +231,6 @@
     @FutureCall(delegeteTo = "ping")
     public FutureTask<Map<String, Object>> futurePing();
 
+    public Map<String, Object> glusterVolumeStatus(String volumeName, String 
brickName, String volumeStatusOption);
+
 }
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 a711e24..5c227ad 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
@@ -6,8 +6,10 @@
 import java.util.concurrent.FutureTask;
 
 import org.apache.commons.httpclient.HttpClient;
+import org.ovirt.engine.core.compat.Guid;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterServersListReturnForXmlRpc;
 import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeOptionsInfoReturnForXmlRpc;
+import 
org.ovirt.engine.core.vdsbroker.irsbroker.GlusterVolumeStatusReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.IsoListReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.irsbroker.OneUuidReturnForXmlRpc;
 import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcRunTimeException;
@@ -1149,4 +1151,16 @@
         }
     }
 
+    @Override
+    public GlusterVolumeStatusReturnForXmlRpc glusterVolumeStatus(Guid 
clusterId,
+            String volumeName, String brickName, String volumeStatusOption) {
+        try {
+            Map<String, Object> xmlRpcReturnValue = 
vdsServer.glusterVolumeStatus(volumeName, brickName, volumeStatusOption);
+            GlusterVolumeStatusReturnForXmlRpc wrapper =
+                    new GlusterVolumeStatusReturnForXmlRpc(clusterId, 
xmlRpcReturnValue);
+            return wrapper;
+        } catch (UndeclaredThrowableException ute) {
+            throw new XmlRpcRunTimeException(ute);
+        }
+    }
 }


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

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

Reply via email to