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

Reply via email to