Gilad Chaplik has uploaded a new change for review. Change subject: engine: allow to fetch all QoS for REST ......................................................................
engine: allow to fetch all QoS for REST Added All QoS Dao object & relaxed common and dal. Change-Id: I1e55d3e7643c42f48c971400b15f6eb92e50ccaa Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllQosByStoragePoolIdQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/QosQueryBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/AllQosBaseDaoFacadeImpl.java A backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/StorageQosDaoDbFacadeImpl.java M backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties M packaging/dbscripts/qos_sp.sql 12 files changed, 111 insertions(+), 11 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/28767/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllQosByStoragePoolIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllQosByStoragePoolIdQuery.java new file mode 100644 index 0000000..7d1ba46 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllQosByStoragePoolIdQuery.java @@ -0,0 +1,17 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.common.queries.QosQueryParameterBase; + +public class GetAllQosByStoragePoolIdQuery extends QosQueryBase { + + public GetAllQosByStoragePoolIdQuery(QosQueryParameterBase parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getDbFacade().getQosBaseDao() + .getAllForStoragePoolId(getParameters().getId())); + } + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/QosQueryBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/QosQueryBase.java index 0f3ee1c..8201657 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/QosQueryBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/QosQueryBase.java @@ -16,7 +16,7 @@ protected QosDao<?> getQosDao() { QosType qosType = getParameters().getQosType(); if (qosType == null) { - qosType = QosType.STORAGE; + return getDbFacade().getQosBaseDao(); } switch (qosType) { case STORAGE: diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java index 43708b6..8b4be25 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java @@ -32,7 +32,7 @@ || missingCategoryValues(getQos().getMaxIops(), getQos().getMaxReadIops(), getQos().getMaxWriteIops())) { - return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_VALUES); + return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_QOS_MISSING_VALUES); } return ValidationResult.VALID; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosBase.java index c466030..9d35ad2 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosBase.java @@ -12,10 +12,9 @@ import org.ovirt.engine.core.compat.Guid; /** - * Base abstract class for QoS objects - * derived class will hold qos limit according to type. + * Base class for QoS objects derived class will hold qos limit according to type. */ -public abstract class QosBase extends IVdcQueryable implements BusinessEntity<Guid>, Serializable { +public class QosBase extends IVdcQueryable implements BusinessEntity<Guid>, Serializable { private static final long serialVersionUID = 1122772549710787678L; private Guid id = Guid.Empty; private QosType qosType; @@ -53,7 +52,9 @@ * * @return object summary */ - public abstract String getString(); + public String getString() { + return toString(); + } /** * Check whether specific derived QoS values are equal. @@ -61,7 +62,9 @@ * @param other * @return are equals */ - public abstract boolean equalValues(QosBase other); + public boolean equalValues(QosBase other) { + return false; + } @Override public Guid getId() { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.java index dd08f5a..8425713 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.common.businessentities.Identifiable; public enum QosType implements Identifiable { + ALL(0), STORAGE(1); private int value; 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 27b1915..610ea8f 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 @@ -337,6 +337,7 @@ // QoS GetQosById, + GetAllQosByStoragePoolId, GetAllQosByStoragePoolIdAndType, GetWatchdog(VdcQueryAuthType.User), diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java index 3f715b6..73e62df 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java @@ -135,6 +135,7 @@ import org.ovirt.engine.core.dao.network.VnicProfileViewDao; import org.ovirt.engine.core.dao.profiles.DiskProfileDao; import org.ovirt.engine.core.dao.provider.ProviderDao; +import org.ovirt.engine.core.dao.qos.QosBaseDao; import org.ovirt.engine.core.dao.qos.StorageQosDao; import org.ovirt.engine.core.dao.scheduling.AffinityGroupDao; import org.ovirt.engine.core.dao.scheduling.ClusterPolicyDao; @@ -956,6 +957,9 @@ return getDao(StorageQosDao.class); } + public QosBaseDao getQosBaseDao() { + return getDao(QosBaseDao.class); + } /** * Returns the singleton instance of {@link PolicyUnitDao}. * diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/AllQosBaseDaoFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/AllQosBaseDaoFacadeImpl.java new file mode 100644 index 0000000..02ef2b4 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/AllQosBaseDaoFacadeImpl.java @@ -0,0 +1,57 @@ +package org.ovirt.engine.core.dao.qos; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.qos.QosBase; +import org.ovirt.engine.core.common.businessentities.qos.QosType; +import org.ovirt.engine.core.compat.Guid; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; + +public class AllQosBaseDaoFacadeImpl extends QosBaseDaoFacadeImpl<QosBase> implements QosBaseDao { + + public AllQosBaseDaoFacadeImpl() { + super(QosType.ALL); + } + + @Override + /** + * qosType can be null in order to fetch all entities + */ + public List<QosBase> getAllForStoragePoolId(Guid storagePoolId) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("storage_pool_id", storagePoolId.getUuid()); + return getCallsHandler().executeReadList("GetAllQosForStoragePool", + createEntityRowMapper(), + parameterSource); + } + + @Override + protected RowMapper<QosBase> createEntityRowMapper() { + return AllQosBaseDaoFacadaeImplMapper.MAPPER; + } + + protected static class AllQosBaseDaoFacadaeImplMapper extends QosBaseDaoFacadaeImplMapper<QosBase> { + public final static AllQosBaseDaoFacadaeImplMapper MAPPER = new AllQosBaseDaoFacadaeImplMapper(); + + @Override + public QosBase mapRow(ResultSet rs, int rowNum) throws SQLException { + return super.mapRow(rs, rowNum); + } + + @Override + protected QosBase createQosEntity(ResultSet rs) throws SQLException { + switch (QosType.forValue(rs.getInt("qos_type"))) { + case STORAGE: + return StorageQosDaoDbFacadeImpl.StorageDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs); + default: + break; + } + + return null; + } + } + +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDao.java new file mode 100644 index 0000000..fc7dbc9 --- /dev/null +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDao.java @@ -0,0 +1,7 @@ +package org.ovirt.engine.core.dao.qos; + +import org.ovirt.engine.core.common.businessentities.qos.QosBase; + +public interface QosBaseDao extends QosDao<QosBase> { + +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/StorageQosDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/StorageQosDaoDbFacadeImpl.java index b881a8f..e9fd57f 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/StorageQosDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/StorageQosDaoDbFacadeImpl.java @@ -9,8 +9,6 @@ import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; public class StorageQosDaoDbFacadeImpl extends QosBaseDaoFacadeImpl<StorageQos> implements StorageQosDao { - private static final StorageDaoDbFacadaeImplMapper MAPPER = new StorageDaoDbFacadaeImplMapper(); - public StorageQosDaoDbFacadeImpl() { super(QosType.STORAGE); } @@ -30,10 +28,11 @@ @Override protected RowMapper<StorageQos> createEntityRowMapper() { - return MAPPER; + return StorageDaoDbFacadaeImplMapper.MAPPER; } protected static class StorageDaoDbFacadaeImplMapper extends QosBaseDaoFacadaeImplMapper<StorageQos> { + public static final StorageDaoDbFacadaeImplMapper MAPPER = new StorageDaoDbFacadaeImplMapper(); @Override protected StorageQos createQosEntity(ResultSet rs) throws SQLException { diff --git a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties index 3dfb63d..d3d6a3c 100644 --- a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties +++ b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties @@ -69,6 +69,7 @@ GlusterServerDao=org.ovirt.engine.core.dao.gluster.GlusterServerDaoDbFacadeImpl NetworkQoSDao=org.ovirt.engine.core.dao.network.NetworkQoSDaoFacadeImpl StorageQosDao=org.ovirt.engine.core.dao.qos.StorageQosDaoDbFacadeImpl +QosBaseDao=org.ovirt.engine.core.dao.qos.AllQosBaseDaoFacadeImpl PolicyUnitDao=org.ovirt.engine.core.dao.scheduling.PolicyUnitDaoImpl ClusterPolicyDao=org.ovirt.engine.core.dao.scheduling.ClusterPolicyDaoImpl DwhHistoryTimekeepingDao=org.ovirt.engine.core.dao.dwh.DwhHistoryTimekeepingDaoDbFacadeImpl diff --git a/packaging/dbscripts/qos_sp.sql b/packaging/dbscripts/qos_sp.sql index bbdaca6..42779a0 100644 --- a/packaging/dbscripts/qos_sp.sql +++ b/packaging/dbscripts/qos_sp.sql @@ -66,7 +66,17 @@ RETURN QUERY SELECT * FROM qos WHERE storage_pool_id = v_storage_pool_id - AND qos_type = v_qos_type; + AND (v_qos_type IS NULL OR qos_type = v_qos_type); END; $procedure$ LANGUAGE plpgsql; +Create or replace FUNCTION GetAllQosForStoragePool(v_storage_pool_id UUID) RETURNS SETOF qos STABLE + AS $procedure$ +BEGIN +RETURN QUERY SELECT * + FROM qos + WHERE storage_pool_id = v_storage_pool_id; +END; $procedure$ +LANGUAGE plpgsql; + + -- To view, visit http://gerrit.ovirt.org/28767 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1e55d3e7643c42f48c971400b15f6eb92e50ccaa Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches