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