Gilad Chaplik has uploaded a new change for review.

Change subject: core, db: Adding Cpu Qos DB config
......................................................................

core, db: Adding Cpu Qos DB config

Adding the Cpu Qos db config,
the Cpu Qos consists of one parameter: cpu_limit.
The parameter will be added to the qos table.
support for this feature is for all 3.x versions.

Also changed Storage Qos insert and update stored proc to fit common
behavior ("insert"+"storage"/"cpu"+"qos").

Change-Id: I533bcc601ac44289c51f5d56a6da0dd2455116d6
Bug-Url: https://bugzilla.redhat.com/1084930
Signed-off-by: Gilad Chaplik <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DefaultGenericDaoDbFacade.java
M 
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/CpuQosDao.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDaoFacadeImpl.java
M backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
A 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/qos/CpuQosDaoTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M packaging/dbscripts/qos_sp.sql
A packaging/dbscripts/upgrade/03_06_0980_add_cpu_limit_to_qos_table.sql
M packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
16 files changed, 250 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/31820/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
index cfd143d..b537a05 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/FeatureSupported.java
@@ -199,6 +199,15 @@
         return supportedInConfig(ConfigValues.StorageQosSupported, version);
     }
 
+    /**
+     * @param version
+     *            Compatibility version to check for.
+     * @return <code>true</code> if Cpu QoS is supported for the cluster 
version.
+     */
+    public static boolean cpuQoS(Version version) {
+        return supportedInConfig(ConfigValues.CpuQosSupported, version);
+    }
+
     public static boolean hostNetworkQos(Version version) {
         return supportedInConfig(ConfigValues.HostNetworkQosSupported, 
version);
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
index 24eab1d..b788376 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
@@ -1606,6 +1606,10 @@
 
     @TypeConverterAttribute(Boolean.class)
     @DefaultValueAttribute("true")
+    CpuQosSupported,
+
+    @TypeConverterAttribute(Boolean.class)
+    @DefaultValueAttribute("true")
     HostNetworkQosSupported,
 
     @TypeConverterAttribute(Boolean.class)
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index 1c53536..d8bc5e4 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -104,6 +104,7 @@
     MemorySnapshotSupported(ConfigAuthType.User),
     HostNetworkQosSupported,
     StorageQosSupported,
+    CpuQosSupported,
     MaxAverageNetworkQoSValue,
     MaxPeakNetworkQoSValue,
     MaxBurstNetworkQoSValue,
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 a825ab0..588c6c7 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
@@ -139,6 +139,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.CpuQosDao;
 import org.ovirt.engine.core.dao.qos.QosBaseDao;
 import org.ovirt.engine.core.dao.qos.StorageQosDao;
 import org.ovirt.engine.core.dao.scheduling.AffinityGroupDao;
@@ -971,6 +972,10 @@
         return getDao(StorageQosDao.class);
     }
 
+    public CpuQosDao getCpuQosDao() {
+        return getDao(CpuQosDao.class);
+    }
+
     public QosBaseDao getQosBaseDao() {
         return getDao(QosBaseDao.class);
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DefaultGenericDaoDbFacade.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DefaultGenericDaoDbFacade.java
index d4f8d29..99e388a 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DefaultGenericDaoDbFacade.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DefaultGenericDaoDbFacade.java
@@ -18,9 +18,9 @@
 public abstract class DefaultGenericDaoDbFacade<T extends BusinessEntity<ID>, 
ID extends Serializable>
         extends DefaultReadDaoDbFacade<T, ID> implements GenericDao<T, ID> {
 
-    private static final String DEFAULT_SAVE_PROCEDURE_FORMAT = "Insert{0}";
+    protected static final String DEFAULT_SAVE_PROCEDURE_FORMAT = "Insert{0}";
 
-    private static final String DEFAULT_UPDATE_PROCEDURE_FORMAT = "Update{0}";
+    protected static final String DEFAULT_UPDATE_PROCEDURE_FORMAT = 
"Update{0}";
 
     private static final String DEFAULT_REMOVE_PROCEDURE_FORMAT = "Delete{0}";
 
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
index 7ced2cf..cc42638 100644
--- 
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
@@ -47,6 +47,8 @@
             switch (qosType) {
             case STORAGE:
                 return 
StorageQosDaoDbFacadeImpl.StorageDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs);
+            case CPU:
+                return 
CpuQosDaoDbFacadeImpl.CpuDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs);
                 default:
                     log.debugFormat("not handled/missing qos_type", qosType);
                     break;
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDao.java
new file mode 100644
index 0000000..88e633a
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDao.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.core.dao.qos;
+
+import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
+
+public interface CpuQosDao extends QosDao<CpuQos> {
+
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDaoDbFacadeImpl.java
new file mode 100644
index 0000000..34d54dd
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/CpuQosDaoDbFacadeImpl.java
@@ -0,0 +1,40 @@
+package org.ovirt.engine.core.dao.qos;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
+import org.ovirt.engine.core.common.businessentities.qos.QosType;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+
+public class CpuQosDaoDbFacadeImpl extends QosBaseDaoFacadeImpl<CpuQos> 
implements CpuQosDao {
+    public CpuQosDaoDbFacadeImpl() {
+        super(QosType.CPU);
+    }
+
+    @Override
+    protected MapSqlParameterSource createFullParametersMapper(CpuQos obj) {
+        MapSqlParameterSource map = super.createFullParametersMapper(obj);
+        map.addValue("cpu_limit", obj.getCpuLimit());
+
+        return map;
+    }
+
+    @Override
+    protected RowMapper<CpuQos> createEntityRowMapper() {
+        return CpuDaoDbFacadaeImplMapper.MAPPER;
+    }
+
+    protected static class CpuDaoDbFacadaeImplMapper extends 
QosBaseDaoFacadaeImplMapper<CpuQos> {
+        public static final CpuDaoDbFacadaeImplMapper MAPPER = new 
CpuDaoDbFacadaeImplMapper();
+
+        @Override
+        protected CpuQos createQosEntity(ResultSet rs) throws SQLException {
+            CpuQos entity = new CpuQos();
+            entity.setCpuLimit(getInteger(rs, "cpu_limit"));
+            return entity;
+        }
+    }
+
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDaoFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDaoFacadeImpl.java
index cf1eef5..b10c3ed 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDaoFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/QosBaseDaoFacadeImpl.java
@@ -2,6 +2,7 @@
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.text.MessageFormat;
 import java.util.List;
 
 import org.ovirt.engine.core.common.businessentities.qos.QosBase;
@@ -12,11 +13,14 @@
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 
 public abstract class QosBaseDaoFacadeImpl<T extends QosBase> extends 
DefaultGenericDaoDbFacade<T, Guid> implements QosDao<T> {
+    private static final String QOS = "qos";
     private final QosType qosType;
 
     public QosBaseDaoFacadeImpl(QosType qosType) {
-        super("qos");
+        super(QOS);
         this.qosType = qosType;
+        
setProcedureNameForSave(MessageFormat.format(DEFAULT_SAVE_PROCEDURE_FORMAT, 
qosType.name() + QOS));
+        
setProcedureNameForUpdate(MessageFormat.format(DEFAULT_UPDATE_PROCEDURE_FORMAT, 
qosType.name() + QOS));
     }
 
     /**
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 093897f..44cce07 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
@@ -70,6 +70,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
+CpuQosDao=org.ovirt.engine.core.dao.qos.CpuQosDaoDbFacadeImpl
 QosBaseDao=org.ovirt.engine.core.dao.qos.AllQosBaseDaoFacadeImpl
 PolicyUnitDao=org.ovirt.engine.core.dao.scheduling.PolicyUnitDaoImpl
 ClusterPolicyDao=org.ovirt.engine.core.dao.scheduling.ClusterPolicyDaoImpl
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
index 05b3de8..e4f1a2b 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
@@ -10,7 +10,7 @@
     /**
      * Predefined NFS storage pool.
      */
-    protected static final Guid STORAGE_POOL_NFS = new 
Guid("72b9e200-f48b-4687-83f2-62828f249a47");
+    public static final Guid STORAGE_POOL_NFS = new 
Guid("72b9e200-f48b-4687-83f2-62828f249a47");
 
     /**
      * Predefined mixed types storage pool.
@@ -619,6 +619,11 @@
 
     public static final Guid QOS_ID_3 = new 
Guid("ae956031-6be2-43d6-bb90-5191c9253316");
 
+    public static final Guid QOS_ID_4 = new 
Guid("ae956031-6be2-43d6-bb90-5191c9253317");
+
+    public static final Guid QOS_ID_5 = new 
Guid("ae956031-6be2-43d6-bb90-5191c9253318");
+
+    public static final Guid QOS_ID_6 = new 
Guid("ae956031-6be2-43d6-bb90-5191c9253319");
     /**
      * Number of VMs on clusters
      */
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/qos/CpuQosDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/qos/CpuQosDaoTest.java
new file mode 100644
index 0000000..09a4584
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/qos/CpuQosDaoTest.java
@@ -0,0 +1,85 @@
+package org.ovirt.engine.core.dao.qos;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.BaseDAOTestCase;
+import org.ovirt.engine.core.dao.FixturesTool;
+
+public class CpuQosDaoTest extends BaseDAOTestCase {
+
+    private final CpuQosDao dao = getDbFacade().getCpuQosDao();
+
+    /**
+     * Ensures that retrieving with an invalid ID returns null.
+     */
+    @Test
+    public void testGetWithInvalidId() {
+        assertNull(dao.get(Guid.newGuid()));
+    }
+
+    @Test
+    public void getCpuQos() {
+        CpuQos cpuQos = new CpuQos();
+        cpuQos.setId(FixturesTool.QOS_ID_4);
+        cpuQos.setName("qos_d");
+        cpuQos.setDescription("desc1");
+        cpuQos.setStoragePoolId(FixturesTool.STORAGE_POOL_NFS);
+        cpuQos.setCpuLimit(50);
+
+        CpuQos fetched = dao.get(FixturesTool.QOS_ID_4);
+        assertNotNull(fetched);
+        assertEquals(cpuQos, fetched);
+    }
+
+    @Test
+    public void updateCpuQos() {
+        CpuQos cpuQos = dao.get(FixturesTool.QOS_ID_5);
+        assertNotNull(cpuQos);
+        cpuQos.setName("newB");
+        cpuQos.setDescription("desc2");
+        cpuQos.setCpuLimit(30);
+        assertFalse(cpuQos.equals(dao.get(FixturesTool.QOS_ID_5)));
+        dao.update(cpuQos);
+        CpuQos fetched = dao.get(FixturesTool.QOS_ID_5);
+        assertNotNull(fetched);
+        assertEquals(cpuQos, fetched);
+    }
+
+    @Test
+    public void removeCpuQos() {
+        assertNotNull(dao.get(FixturesTool.QOS_ID_6));
+        dao.remove(FixturesTool.QOS_ID_6);
+        assertNull(dao.get(FixturesTool.QOS_ID_6));
+    }
+
+    @Test
+    public void saveCpuQos() {
+        CpuQos cpuQos = new CpuQos();
+        cpuQos.setId(Guid.newGuid());
+        assertNull(dao.get(cpuQos.getId()));
+        cpuQos.setName("qos_d");
+        cpuQos.setDescription("desc3");
+        cpuQos.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
+        cpuQos.setCpuLimit(40);
+        dao.save(cpuQos);
+        CpuQos fetched = dao.get(cpuQos.getId());
+        assertNotNull(fetched);
+        assertEquals(cpuQos, fetched);
+    }
+
+    @Test
+    public void getAllCpuQosForCpuPool() {
+        List<CpuQos> allForCpuPoolId = 
dao.getAllForStoragePoolId(FixturesTool.STORAGE_POOL_NFS);
+        assertNotNull(allForCpuPoolId);
+        assertEquals(3, allForCpuPoolId.size());
+    }
+
+}
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 76efdb6..d1b5ab3 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -1159,6 +1159,7 @@
         <column>max_iops</column>
         <column>max_read_iops</column>
         <column>max_write_iops</column>
+        <column>cpu_limit</column>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253314</value>
             <value>1</value>
@@ -1171,6 +1172,7 @@
             <value>1000</value>
             <value>2000</value>
             <value>500</value>
+            <null />
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253315</value>
@@ -1184,6 +1186,7 @@
             <value>1200</value>
             <value>2400</value>
             <value>500</value>
+            <null />
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253316</value>
@@ -1197,6 +1200,49 @@
             <value>700</value>
             <value>1400</value>
             <value>500</value>
+            <null />
+        </row>
+        <row>
+            <value>ae956031-6be2-43d6-bb90-5191c9253317</value>
+            <value>2</value>
+            <value>qos_d</value>
+            <value>desc1</value>
+            <value>72b9e200-f48b-4687-83f2-62828f249a47</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>50</value>
+        </row>
+        <row>
+            <value>ae956031-6be2-43d6-bb90-5191c9253318</value>
+            <value>2</value>
+            <value>qos_e</value>
+            <value></value>
+            <value>72b9e200-f48b-4687-83f2-62828f249a47</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>60</value>
+        </row>
+        <row>
+            <value>ae956031-6be2-43d6-bb90-5191c9253319</value>
+            <value>2</value>
+            <value>qos_f</value>
+            <value></value>
+            <value>72b9e200-f48b-4687-83f2-62828f249a47</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>88</value>
         </row>
     </table>
 
diff --git a/packaging/dbscripts/qos_sp.sql b/packaging/dbscripts/qos_sp.sql
index 01cb4a5..2f761c5 100644
--- a/packaging/dbscripts/qos_sp.sql
+++ b/packaging/dbscripts/qos_sp.sql
@@ -2,7 +2,7 @@
 -- [qos] Table
 ----------------------------------------------------------------
 
-Create or replace FUNCTION InsertQos(v_id uuid,
+Create or replace FUNCTION InsertStorageQos(v_id uuid,
   v_qos_type SMALLINT,
   v_name VARCHAR(50),
   v_description TEXT,
@@ -21,7 +21,21 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
-Create or replace FUNCTION UpdateQos(v_id uuid,
+Create or replace FUNCTION InsertCpuQos(v_id uuid,
+  v_qos_type SMALLINT,
+  v_name VARCHAR(50),
+  v_description TEXT,
+  v_storage_pool_id uuid,
+  v_cpu_limit INTEGER)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+INSERT INTO qos(id, qos_type, name, description, storage_pool_id, cpu_limit)
+  VALUES(v_id, v_qos_type, v_name, v_description, v_storage_pool_id, 
v_cpu_limit);
+END; $procedure$
+LANGUAGE plpgsql;
+
+Create or replace FUNCTION UpdateStorageQos(v_id uuid,
   v_qos_type SMALLINT,
   v_name VARCHAR(50),
   v_description TEXT,
@@ -43,6 +57,22 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION UpdateCpuQos(v_id uuid,
+  v_qos_type SMALLINT,
+  v_name VARCHAR(50),
+  v_description TEXT,
+  v_storage_pool_id uuid,
+  v_cpu_limit INTEGER)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+      UPDATE qos
+      SET qos_type = v_qos_type, name = v_name, description = v_description, 
storage_pool_id = v_storage_pool_id, cpu_limit = v_cpu_limit,
+      _update_date = LOCALTIMESTAMP
+      WHERE id = v_id;
+END; $procedure$
+LANGUAGE plpgsql;
+
 Create or replace FUNCTION DeleteQos(v_id UUID) RETURNS VOID
    AS $procedure$
 BEGIN
diff --git 
a/packaging/dbscripts/upgrade/03_06_0980_add_cpu_limit_to_qos_table.sql 
b/packaging/dbscripts/upgrade/03_06_0980_add_cpu_limit_to_qos_table.sql
new file mode 100644
index 0000000..bd9d9c4
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_0980_add_cpu_limit_to_qos_table.sql
@@ -0,0 +1 @@
+SELECT fn_db_add_column('qos', 'cpu_limit', 'SMALLINT DEFAULT NULL');
diff --git a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
index e54c1f3..c0a4e9f 100644
--- a/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/packaging/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -240,6 +240,10 @@
 select fn_db_add_config_value('StorageQosSupported','false','3.1');
 select fn_db_add_config_value('StorageQosSupported','false','3.3');
 select fn_db_add_config_value('StorageQosSupported','false','3.4');
+select fn_db_add_config_value('CpuQosSupported','false','3.0');
+select fn_db_add_config_value('CpuQosSupported','false','3.1');
+select fn_db_add_config_value('CpuQosSupported','false','3.3');
+select fn_db_add_config_value('CpuQosSupported','false','3.4');
 select fn_db_add_config_value('HostNetworkQosSupported', 'false', '3.0');
 select fn_db_add_config_value('HostNetworkQosSupported', 'false', '3.1');
 select fn_db_add_config_value('HostNetworkQosSupported', 'false', '3.2');


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

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

Reply via email to