Gilad Chaplik has uploaded a new change for review.

Change subject: engine: support for adding network qos for rest-api
......................................................................

engine: support for adding network qos for rest-api

* NetworkQoS will override QosBase
* Move NetworkQos dao to use QosBaseDao
* Move network_qos data to qos table, and all its references
* Move network qos CRUD command to use qos infra

Change-Id: I34f43f9edc10b7b52e096b2b6f1f43d19f129ed5
Bug-Url: https://bugzilla.redhat.com/1078863
Signed-off-by: Gilad Chaplik <gchap...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllNetworkQosByStoragePoolIdQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQosByIdQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetVdsInterfacesByVdsIdQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/AddNetworkQoSCommand.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/NetworkQoSCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/RemoveNetworkQoSCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateNetworkQoSCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateQosCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VnicProfileValidator.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VnicProfileValidatorTest.java
D 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/NetworkQoSParametersBase.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkQoS.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/qos/QosType.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/network/InterfaceDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDaoFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/qos/AllQosBaseDaoFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkQosDaoTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
M 
backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkQoSModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkQoSModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworkQoSModel.java
M packaging/dbscripts/create_views.sql
D packaging/dbscripts/network_qos_sp.sql
M packaging/dbscripts/qos_sp.sql
A packaging/dbscripts/upgrade/03_06_0320_refactor_network_qos.sql
40 files changed, 375 insertions(+), 547 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/31868/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllNetworkQosByStoragePoolIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllNetworkQosByStoragePoolIdQuery.java
index 7dc10ce..383f114 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllNetworkQosByStoragePoolIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllNetworkQosByStoragePoolIdQuery.java
@@ -11,6 +11,6 @@
 
     @Override
     protected void executeQueryCommand() {
-        
getQueryReturnValue().setReturnValue(getDbFacade().getQosDao().getAllForStoragePoolId(getParameters().getId()));
+        
getQueryReturnValue().setReturnValue(getDbFacade().getNetworkQosDao().getAllForStoragePoolId(getParameters().getId()));
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQosByIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQosByIdQuery.java
index 7457ffd..07a6512 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQosByIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetQosByIdQuery.java
@@ -10,7 +10,7 @@
 
     @Override
     protected void executeQueryCommand() {
-        
getQueryReturnValue().setReturnValue(getDbFacade().getStorageQosDao().get(getParameters().getId()));
+        
getQueryReturnValue().setReturnValue(getDbFacade().getQosBaseDao().get(getParameters().getId()));
     }
 
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
index 5285115..1c0baf2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/UpdateNetworkCommand.java
@@ -447,7 +447,7 @@
             for (VdsNetworkInterface nic : nics) {
                 if (!NetworkUtils.isNetworkInSync(nic,
                         getNetwork(),
-                        
getDbFacade().getQosDao().get(getNetwork().getQosId()))) {
+                        
getDbFacade().getNetworkQosDao().get(getNetwork().getQosId()))) {
                     hostIdsToSync.add(nic.getVdsId());
                 }
             }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetVdsInterfacesByVdsIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetVdsInterfacesByVdsIdQuery.java
index 287aa962..da08f1f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetVdsInterfacesByVdsIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetVdsInterfacesByVdsIdQuery.java
@@ -48,7 +48,7 @@
 
         if (!list.isEmpty()) {
             VdsStatic vdsStatic = 
getDbFacade().getVdsStaticDao().get(getParameters().getId());
-            NetworkQoSDao qosDao = getDbFacade().getQosDao();
+            NetworkQoSDao qosDao = getDbFacade().getNetworkQosDao();
             Map<String, Network> networks = Entities.entitiesByName(
                     
getDbFacade().getNetworkDao().getAllForCluster(vdsStatic.getVdsGroupId()));
             for (final VdsNetworkInterface i : list) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
index 16c50e1..9e162ff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
@@ -391,7 +391,7 @@
         if (existingIfaces == null) {
             List<VdsNetworkInterface> ifaces =
                     
getDbFacade().getInterfaceDao().getAllInterfacesForVds(params.getVdsId());
-            NetworkQoSDao qosDao = getDbFacade().getQosDao();
+            NetworkQoSDao qosDao = getDbFacade().getNetworkQosDao();
 
             for (VdsNetworkInterface iface : ifaces) {
                 Network network = 
getExistingClusterNetworks().get(iface.getNetworkName());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/AddNetworkQoSCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/AddNetworkQoSCommand.java
index f56b618..52a86c6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/AddNetworkQoSCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/AddNetworkQoSCommand.java
@@ -2,42 +2,30 @@
 
 
 import org.ovirt.engine.core.bll.validator.NetworkQosValidator;
+import org.ovirt.engine.core.bll.validator.QosValidator;
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
-import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.common.action.QosParametersBase;
+import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
+import org.ovirt.engine.core.dao.qos.QosDao;
 
-public class AddNetworkQoSCommand extends NetworkQoSCommandBase {
+public class AddNetworkQoSCommand extends AddQosCommand<NetworkQoS, 
QosValidator<NetworkQoS>> {
 
-    public AddNetworkQoSCommand(NetworkQoSParametersBase parameters) {
+    public 
AddNetworkQoSCommand(QosParametersBase<org.ovirt.engine.core.common.businessentities.network.NetworkQoS>
 parameters) {
         super(parameters);
     }
 
     @Override
-    protected boolean canDoAction() {
-        NetworkQosValidator validator = new 
NetworkQosValidator(getNetworkQoS());
-        return validateParameters()
-                && validate(validator.nameNotTakenInDc())
-                && validate(validator.allValuesPresent())
-                && validate(validator.peakConsistentWithAverage());
+    protected QosDao<NetworkQoS> getQosDao() {
+        return getDbFacade().getNetworkQosDao();
     }
 
     @Override
-    protected void executeCommand() {
-        getNetworkQoS().setId(Guid.newGuid());
-        getNetworkQoSDao().save(getNetworkQoS());
-        getReturnValue().setActionReturnValue(getNetworkQoS().getId());
-        setSucceeded(true);
+    protected QosValidator<NetworkQoS> getQosValidator(NetworkQoS networkQos) {
+        return new NetworkQosValidator(networkQos);
     }
 
     @Override
     public AuditLogType getAuditLogTypeValue() {
         return getSucceeded() ? AuditLogType.USER_ADDED_NETWORK_QOS : 
AuditLogType.USER_FAILED_TO_ADD_NETWORK_QOS;
-    }
-
-    @Override
-    protected void setActionMessageParameters() {
-        super.setActionMessageParameters();
-        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD);
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/NetworkQoSCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/NetworkQoSCommandBase.java
deleted file mode 100644
index 0628893..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/NetworkQoSCommandBase.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package org.ovirt.engine.core.bll.qos;
-
-import org.ovirt.engine.core.bll.CommandBase;
-import org.ovirt.engine.core.bll.utils.PermissionSubject;
-import org.ovirt.engine.core.common.VdcObjectType;
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
-import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
-import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.dao.network.NetworkQoSDao;
-
-import java.util.Collections;
-import java.util.List;
-
-
-public abstract class NetworkQoSCommandBase extends 
CommandBase<NetworkQoSParametersBase> {
-
-    private NetworkQoS networkQoS;
-
-    public NetworkQoSCommandBase(NetworkQoSParametersBase parameters) {
-        super(parameters);
-        if (getNetworkQoS() != null) {
-            setStoragePoolId(getNetworkQoS().getStoragePoolId());
-            addCustomValue("NetworkQoSName", getNetworkQoS().getName());
-        }
-        getParameters().setShouldBeLogged(true);
-    }
-
-    public NetworkQoS getNetworkQoS() {
-        if (networkQoS == null) {
-            if (getParameters().getNetworkQoS() == null) {
-                if (getParameters().getNetworkQoSGuid() != null) {
-                    
getNetworkQoSDao().get(getParameters().getNetworkQoSGuid());
-                }
-            } else {
-                networkQoS = getParameters().getNetworkQoS();
-            }
-        }
-        return networkQoS;
-    }
-
-    protected boolean validateParameters() {
-        if (getNetworkQoS() == null) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NOT_FOUND);
-        }
-        return true;
-    }
-
-    @Override
-    public List<PermissionSubject> getPermissionCheckSubjects() {
-        return Collections.singletonList(new 
PermissionSubject(getStoragePoolId(),
-                VdcObjectType.StoragePool, getActionType().getActionGroup()));
-    }
-
-    protected NetworkQoSDao getNetworkQoSDao() {
-        return getDbFacade().getQosDao();
-    }
-
-    @Override
-    protected void setActionMessageParameters() {
-        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__NETWORK_QOS);
-    }
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/RemoveNetworkQoSCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/RemoveNetworkQoSCommand.java
index 70aef42..0327d1b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/RemoveNetworkQoSCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/RemoveNetworkQoSCommand.java
@@ -1,36 +1,26 @@
 package org.ovirt.engine.core.bll.qos;
 
 import org.ovirt.engine.core.bll.validator.NetworkQosValidator;
+import org.ovirt.engine.core.bll.validator.QosValidator;
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
-import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.action.QosParametersBase;
+import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
+import org.ovirt.engine.core.dao.qos.QosDao;
 
-public class RemoveNetworkQoSCommand extends NetworkQoSCommandBase {
+public class RemoveNetworkQoSCommand extends RemoveQosCommandBase<NetworkQoS, 
QosValidator<NetworkQoS>> {
 
-    public RemoveNetworkQoSCommand(NetworkQoSParametersBase parameters) {
+    public RemoveNetworkQoSCommand(QosParametersBase<NetworkQoS> parameters) {
         super(parameters);
     }
 
     @Override
-    protected boolean canDoAction() {
-        if (validateParameters()) {
-            NetworkQosValidator validator = new 
NetworkQosValidator(getNetworkQoS());
-            return validate(validator.qosExists()) && 
validate(validator.consistentDataCenter());
-        }
-        return true;
+    protected QosDao<NetworkQoS> getQosDao() {
+        return getDbFacade().getNetworkQosDao();
     }
 
     @Override
-    protected void executeCommand() {
-        getNetworkQoSDao().remove(getNetworkQoS().getId());
-        getReturnValue().setActionReturnValue(getNetworkQoS().getId());
-        setSucceeded(true);
-    }
-
-    @Override
-    protected void setActionMessageParameters() {
-        super.setActionMessageParameters();
-        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REMOVE);
+    protected QosValidator<NetworkQoS> getQosValidator(NetworkQoS qos) {
+        return new NetworkQosValidator(qos);
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateNetworkQoSCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateNetworkQoSCommand.java
index 6b26bb0..e4fda8c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateNetworkQoSCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateNetworkQoSCommand.java
@@ -2,38 +2,33 @@
 
 
 import org.ovirt.engine.core.bll.validator.NetworkQosValidator;
+import org.ovirt.engine.core.bll.validator.QosValidator;
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
-import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.action.QosParametersBase;
+import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
+import org.ovirt.engine.core.dao.qos.QosDao;
 
-public class UpdateNetworkQoSCommand extends NetworkQoSCommandBase {
+public class UpdateNetworkQoSCommand extends UpdateQosCommandBase<NetworkQoS, 
QosValidator<NetworkQoS>> {
 
-    public UpdateNetworkQoSCommand(NetworkQoSParametersBase parameters) {
+    public UpdateNetworkQoSCommand(QosParametersBase<NetworkQoS> parameters) {
         super(parameters);
     }
 
     @Override
+    protected QosDao<NetworkQoS> getQosDao() {
+        return getDbFacade().getNetworkQosDao();
+    }
+
+    @Override
+    protected NetworkQosValidator getQosValidator(NetworkQoS qos) {
+        return new NetworkQosValidator(qos);
+    }
+
+
+    @Override
     protected boolean canDoAction() {
-        NetworkQosValidator validator = new 
NetworkQosValidator(getNetworkQoS());
-        return (validateParameters()
-                && validate(validator.qosExists())
-                && validate(validator.consistentDataCenter())
-                && validate(validator.allValuesPresent())
-                && validate(validator.peakConsistentWithAverage())
-                && validate(validator.nameNotChangedOrNotTaken()));
-    }
-
-    @Override
-    protected void executeCommand() {
-        getNetworkQoSDao().update(getNetworkQoS());
-        getReturnValue().setActionReturnValue(getNetworkQoS().getId());
-        setSucceeded(true);
-    }
-
-    @Override
-    protected void setActionMessageParameters() {
-        super.setActionMessageParameters();
-        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__UPDATE);
+        return super.canDoAction() &&
+                
validate(getQosValidator(getQos()).peakConsistentWithAverage());
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateQosCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateQosCommandBase.java
index c1b8756..d931328 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateQosCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/UpdateQosCommandBase.java
@@ -18,7 +18,8 @@
         M qosValidator = getQosValidator(getQos());
         return super.canDoAction()
                 && validate(qosValidator.qosExists())
-                && validate(qosValidator.consistentDataCenter());
+                && validate(qosValidator.consistentDataCenter())
+                && validate(qosValidator.nameNotChangedOrNotTaken());
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
index 0e0cc1b..834850e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
@@ -1,86 +1,25 @@
 package org.ovirt.engine.core.bll.validator;
 
-import java.util.List;
-
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.qos.QosDao;
 
-public class NetworkQosValidator {
-
-    private final NetworkQoS qos;
-    private NetworkQoS oldQos;
-    private List<NetworkQoS> allQos;
+public class NetworkQosValidator extends QosValidator<NetworkQoS> {
 
     public NetworkQosValidator(NetworkQoS qos) {
-        this.qos = qos;
-    }
-
-    protected NetworkQoS getOldQos() {
-        if (oldQos == null) {
-            oldQos = DbFacade.getInstance().getQosDao().get(qos.getId());
-        }
-        return oldQos;
-    }
-
-    protected List<NetworkQoS> getAllQosInDc() {
-        if (allQos == null) {
-            allQos = 
DbFacade.getInstance().getQosDao().getAllForStoragePoolId(qos.getStoragePoolId());
-        }
-        return allQos;
-    }
-
-    /**
-     * Verify that the QoS entity had previously existed in the database.
-     */
-    public ValidationResult qosExists() {
-        return (qos != null && getOldQos() == null)
-                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NOT_FOUND)
-                : ValidationResult.VALID;
-    }
-
-    /**
-     * Verify that the QoS entity has the same DC ID as the one stored in the 
database.
-     */
-    public ValidationResult consistentDataCenter() {
-        return (qos != null && (getOldQos() == null || 
!qos.getStoragePoolId().equals(getOldQos().getStoragePoolId())))
-                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID)
-                : ValidationResult.VALID;
-    }
-
-    /**
-     * Verify that a name isn't already taken by another QoS entity in the 
same DC.
-     */
-    public ValidationResult nameNotTakenInDc() {
-        if (getAllQosInDc() != null) {
-            for (NetworkQoS networkQoS : getAllQosInDc()) {
-                if (networkQoS.getName().equals(qos.getName())) {
-                    return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NAME_EXIST);
-                }
-            }
-        }
-        return ValidationResult.VALID;
-    }
-
-    /**
-     * Verify that a QoS entity's name hasn't changed. This assumes that QoS 
entity has been verified to exist.
-     */
-    public ValidationResult nameNotChangedOrNotTaken() {
-        if (!getOldQos().getName().equals(qos.getName())) {
-            return nameNotTakenInDc();
-        } else {
-            return ValidationResult.VALID;
-        }
+        super(qos);
     }
 
     /**
      * Verify that if any inbound/outbound capping was specified, that all 
three parameters are present.
      */
+    @Override
     public ValidationResult allValuesPresent() {
-        return (qos != null)
-                && (missingValue(qos.getInboundAverage(), 
qos.getInboundPeak(), qos.getInboundBurst())
-                        || missingValue(qos.getOutboundAverage(), 
qos.getOutboundPeak(), qos.getOutboundBurst()))
+        return (getQos() != null)
+                && (missingValue(getQos().getInboundAverage(), 
getQos().getInboundPeak(), getQos().getInboundBurst())
+                || missingValue(getQos().getOutboundAverage(), 
getQos().getOutboundPeak(), getQos().getOutboundBurst()))
                 ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_VALUES)
                 : ValidationResult.VALID;
     }
@@ -93,8 +32,8 @@
      * Verify that the specified peak value isn't lower than the specified 
average value.
      */
     public ValidationResult peakConsistentWithAverage() {
-        return (qos != null) && (peakLowerThanAverage(qos.getInboundAverage(), 
qos.getInboundPeak())
-                || peakLowerThanAverage(qos.getOutboundAverage(), 
qos.getOutboundPeak()))
+        return (getQos() != null) && 
(peakLowerThanAverage(getQos().getInboundAverage(), getQos().getInboundPeak())
+                || peakLowerThanAverage(getQos().getOutboundAverage(), 
getQos().getOutboundPeak()))
                 ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE)
                 : ValidationResult.VALID;
     }
@@ -103,4 +42,9 @@
         return peak != null && peak < average;
     }
 
+    @Override
+    protected QosDao<NetworkQoS> getQosDao() {
+        return DbFacade.getInstance().getNetworkQosDao();
+    }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkValidator.java
index bdd3209..2a7238b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkValidator.java
@@ -195,7 +195,7 @@
      *         belongs to the wrong DC.
      */
     public ValidationResult qosExistsInDc() {
-        NetworkQosValidator qosValidator = new 
NetworkQosValidator(getDbFacade().getQosDao().get(network.getQosId()));
+        NetworkQosValidator qosValidator = new 
NetworkQosValidator(getDbFacade().getNetworkQosDao().get(network.getQosId()));
         ValidationResult res = qosValidator.qosExists();
         return (res == ValidationResult.VALID) ? 
qosValidator.consistentDataCenter() : res;
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
index 059a9ce..289a068 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
@@ -42,7 +42,7 @@
      * Verify that the QoS entity had previously existed in the database.
      */
     public ValidationResult qosExists() {
-        return (getOldQos() == null)
+        return (qos != null && getOldQos() == null)
                 ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_QOS_NOT_FOUND)
                 : ValidationResult.VALID;
     }
@@ -72,6 +72,17 @@
     }
 
     /**
+     * Verify that a QoS entity's name hasn't changed. This assumes that QoS 
entity has been verified to exist.
+     */
+    public ValidationResult nameNotChangedOrNotTaken() {
+        if (!getOldQos().getName().equals(getQos().getName())) {
+            return nameNotTakenInDc();
+        } else {
+            return ValidationResult.VALID;
+        }
+    }
+
+    /**
      * Verify that if any capping was specified, that all parameters are 
present.
      */
     public abstract ValidationResult allValuesPresent();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VnicProfileValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VnicProfileValidator.java
index e7609aa..ca06311 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VnicProfileValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/VnicProfileValidator.java
@@ -51,7 +51,7 @@
 
     public ValidationResult networkQosExistsOrNull() {
         return vnicProfile.getNetworkQosId() == null
-                || 
getDbFacade().getQosDao().get(vnicProfile.getNetworkQosId()) != null
+                || 
getDbFacade().getNetworkQosDao().get(vnicProfile.getNetworkQosId()) != null
                 ? ValidationResult.VALID
                 : new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NOT_EXISTS);
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
index df85bf8..621507a 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelperTest.java
@@ -1961,7 +1961,7 @@
         doReturn(interfaceDAO).when(dbFacade).getInterfaceDao();
         doReturn(mock(VdsDAO.class)).when(dbFacade).getVdsDao();
         doReturn(networkDAO).when(dbFacade).getNetworkDao();
-        doReturn(qosDao).when(dbFacade).getQosDao();
+        doReturn(qosDao).when(dbFacade).getNetworkQosDao();
 
         return helper;
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
index 82675d3..d2d71b8 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
@@ -39,7 +39,7 @@
 
         validator = spy(new NetworkQosValidator(qos));
         doReturn(oldQos).when(validator).getOldQos();
-        doReturn(allQos).when(validator).getAllQosInDc();
+        doReturn(allQos).when(validator).getAllQosInDcByType();
 
         nullValidator = spy(new NetworkQosValidator(null));
         doReturn(oldQos).when(nullValidator).getOldQos();
@@ -72,7 +72,7 @@
     public void qosDoesNotExist() {
         qos.setId(DEFAULT_GUID);
         doReturn(null).when(validator).getOldQos();
-        
qosExistsTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NOT_FOUND),
 validator);
+        
qosExistsTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_QOS_NOT_FOUND), 
validator);
     }
 
     private void consistentDataCenterTest(Matcher<ValidationResult> matcher) {
@@ -90,7 +90,7 @@
     public void differentDataCenter() {
         qos.setStoragePoolId(DEFAULT_GUID);
         oldQos.setStoragePoolId(OTHER_GUID);
-        
consistentDataCenterTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID));
+        
consistentDataCenterTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_QOS_STORAGE_POOL_NOT_CONSISTENT));
     }
 
     private void nameNotChangedOrNotTakenTest(Matcher<ValidationResult> 
matcher) {
@@ -118,7 +118,7 @@
     @Test
     public void NameTaken() {
         qos.setName("foo");
-        
nameNotChangedOrNotTakenTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_NETWORK_QOS_NAME_EXIST));
+        
nameNotChangedOrNotTakenTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_QOS_NAME_EXIST));
     }
 
     private void valuesPresentTest(Matcher<ValidationResult> matcher) {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VnicProfileValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VnicProfileValidatorTest.java
index 289cfec..3e1240c 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VnicProfileValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/VnicProfileValidatorTest.java
@@ -81,7 +81,7 @@
         // mock some commonly used DAOs
         when(dbFacade.getVnicProfileDao()).thenReturn(vnicProfileDao);
         when(dbFacade.getNetworkDao()).thenReturn(networkDao);
-        when(dbFacade.getQosDao()).thenReturn(networkQosDao);
+        when(dbFacade.getNetworkQosDao()).thenReturn(networkQosDao);
         when(dbFacade.getVmDao()).thenReturn(vmDao);
 
         // mock their getters
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/NetworkQoSParametersBase.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/NetworkQoSParametersBase.java
deleted file mode 100644
index e7bebc0..0000000
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/NetworkQoSParametersBase.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.ovirt.engine.core.common.action;
-
-
-import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
-import org.ovirt.engine.core.compat.Guid;
-
-import javax.validation.Valid;
-
-public class NetworkQoSParametersBase extends VdcActionParametersBase {
-
-    private static final long serialVersionUID = 1304387921254873524L;
-
-    @Valid
-    private NetworkQoS networkQoS;
-    private Guid networkQoSGuid;
-
-    public NetworkQoS getNetworkQoS() {
-        return networkQoS;
-    }
-
-    public void setNetworkQoS(NetworkQoS networkQoS) {
-        this.networkQoS = networkQoS;
-    }
-
-    public Guid getNetworkQoSGuid() {
-        return networkQoSGuid;
-    }
-
-    public void setNetworkQoSGuid(Guid networkQoSGuid) {
-        this.networkQoSGuid = networkQoSGuid;
-    }
-}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkQoS.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkQoS.java
index ed26b2f..e689d57 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkQoS.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/NetworkQoS.java
@@ -1,30 +1,15 @@
 package org.ovirt.engine.core.common.businessentities.network;
 
 
-import 
org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions;
-import org.ovirt.engine.core.common.businessentities.BusinessEntity;
-import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
+import org.ovirt.engine.core.common.businessentities.qos.QosBase;
+import org.ovirt.engine.core.common.businessentities.qos.QosType;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.common.validation.annotation.ConfiguredRange;
-import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
-import org.ovirt.engine.core.compat.Guid;
 
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.io.Serializable;
-
-public class NetworkQoS extends IVdcQueryable implements Serializable, 
BusinessEntity<Guid> {
+public class NetworkQoS extends QosBase {
 
     private static final long serialVersionUID = 1122772549710787758L;
-
-    @NotNull(message = "QOS_NAME_NOT_NULL")
-    @Size(min = 1, max = BusinessEntitiesDefinitions.NETWORK_QOS_NAME_SIZE, 
message = "QOS_NAME_TOO_LONG")
-    @ValidI18NName(message = "QOS_NAME_INVALID")
-    private String name;
-
-    @NotNull(message = "ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID")
-    private Guid storagePoolId;
 
     @ConfiguredRange(min = 0, maxConfigValue = 
ConfigValues.MaxAverageNetworkQoSValue,
             message = "ACTION_TYPE_FAILED_NETWORK_QOS_OUT_OF_RANGE_VALUES")
@@ -50,33 +35,8 @@
             message = "ACTION_TYPE_FAILED_NETWORK_QOS_OUT_OF_RANGE_VALUES")
     private Integer outboundBurst;
 
-    private Guid id;
-
-
-    @Override
-    public Guid getId() {
-        return id;
-    }
-
-    @Override
-    public void setId(Guid id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Guid getStoragePoolId() {
-        return storagePoolId;
-    }
-
-    public void setStoragePoolId(Guid storagePoolId) {
-        this.storagePoolId = storagePoolId;
+    public NetworkQoS() {
+        super(QosType.NETWORK);
     }
 
     public Integer getInboundAverage() {
@@ -127,34 +87,28 @@
         this.outboundBurst = outboundBurst;
     }
 
-    public boolean equalValues(NetworkQoS other) {
-        return ObjectUtils.objectsEqual(this.getInboundAverage(), 
other.getInboundAverage())
-                && ObjectUtils.objectsEqual(this.getInboundPeak(), 
other.getInboundPeak())
-                && ObjectUtils.objectsEqual(this.getInboundBurst(), 
other.getInboundBurst())
-                && ObjectUtils.objectsEqual(this.getOutboundAverage(), 
other.getOutboundAverage())
-                && ObjectUtils.objectsEqual(this.getOutboundPeak(), 
other.getOutboundPeak())
-                && ObjectUtils.objectsEqual(this.getOutboundBurst(), 
other.getOutboundBurst());
+    @Override
+    public boolean equalValues(QosBase obj) {
+        if (!(obj instanceof NetworkQoS)) {
+            return false;
+        }
+        NetworkQoS other = (NetworkQoS) obj;
+        return ObjectUtils.objectsEqual(getInboundAverage(), 
other.getInboundAverage())
+                && ObjectUtils.objectsEqual(getInboundPeak(), 
other.getInboundPeak())
+                && ObjectUtils.objectsEqual(getInboundBurst(), 
other.getInboundBurst())
+                && ObjectUtils.objectsEqual(getOutboundAverage(), 
other.getOutboundAverage())
+                && ObjectUtils.objectsEqual(getOutboundPeak(), 
other.getOutboundPeak())
+                && ObjectUtils.objectsEqual(getOutboundBurst(), 
other.getOutboundBurst());
     }
 
     @Override
     public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null) {
-            return false;
-        }
-        if (!(o instanceof NetworkQoS)) {
-            return false;
-        }
-        NetworkQoS other = (NetworkQoS) o;
-        return ObjectUtils.objectsEqual(this.getName(), other.getName())
-                && ObjectUtils.objectsEqual(this.getStoragePoolId(), 
other.getStoragePoolId())
-                && equalValues(other);
+        return super.equals(o)
+                && equalValues((QosBase) o);
     }
 
     @Override
-    public String toString() {
+    public String getString() {
         StringBuilder builder = new StringBuilder();
         builder.append("[")
                .append("inbound ")
@@ -180,12 +134,14 @@
     }
 
     @Override
+    public String toString() {
+        return getString();
+    }
+
+    @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((id == null) ? 0 : id.hashCode());
-        result = prime * result + ((name == null) ? 0 : name.hashCode());
-        result = prime * result + ((storagePoolId == null) ? 0 : 
storagePoolId.hashCode());
         result = prime * result + ((inboundAverage == null) ? 0 : 
inboundAverage.hashCode());
         result = prime * result + ((inboundPeak == null) ? 0 : 
inboundPeak.hashCode());
         result = prime * result + ((inboundBurst == null) ? 0 : 
inboundBurst.hashCode());
@@ -195,8 +151,4 @@
         return result;
     }
 
-    @Override
-    public Object getQueryableId() {
-        return 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 cdb00a3..d8709b4 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
@@ -8,7 +8,8 @@
 public enum QosType implements Identifiable {
     ALL(0),
     STORAGE(1),
-    CPU(2);
+    CPU(2),
+    NETWORK(3);
 
     private int value;
     private static final Map<Integer, QosType> valueToStatus = new 
HashMap<Integer, QosType>();
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 62bfcec..6fe6d86 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
@@ -977,7 +977,7 @@
         return getDao(VmGuestAgentInterfaceDao.class);
     }
 
-    public NetworkQoSDao getQosDao() {
+    public NetworkQoSDao getNetworkQosDao() {
         return getDao(NetworkQoSDao.class);
     }
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
index e1e09f3..e3f37a1 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
@@ -134,7 +134,7 @@
     }
 
     private void persistQosChanges(VdsNetworkInterface entity) {
-        NetworkQoSDao qosDao = DbFacade.getInstance().getQosDao();
+        NetworkQoSDao qosDao = DbFacade.getInstance().getNetworkQosDao();
         Guid id = entity.getId();
         NetworkQoS oldQos = qosDao.get(id);
         NetworkQoS qos = entity.getQos();
@@ -219,7 +219,7 @@
         MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
                 .addValue("id", id);
 
-        DbFacade.getInstance().getQosDao().remove(id);
+        DbFacade.getInstance().getNetworkQosDao().remove(id);
         getCallsHandler().executeModification("Deletevds_interface", 
parameterSource);
     }
 
@@ -318,7 +318,7 @@
                     
entity.setBootProtocol(NetworkBootProtocol.forValue(rs.getInt("boot_protocol")));
                     entity.setMtu(rs.getInt("mtu"));
                     entity.setBridged(rs.getBoolean("bridged"));
-                    
entity.setQos(DbFacade.getInstance().getQosDao().get(entity.getId()));
+                    
entity.setQos(DbFacade.getInstance().getNetworkQosDao().get(entity.getId()));
                     entity.setQosOverridden(rs.getBoolean("qos_overridden"));
                     
entity.setLabels(SerializationFactory.getDeserializer().deserialize(rs.getString("labels"),
                             HashSet.class));
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDao.java
index ffe0f92..8a82165 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDao.java
@@ -1,12 +1,8 @@
 package org.ovirt.engine.core.dao.network;
 
 import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dao.GenericDao;
+import org.ovirt.engine.core.dao.qos.QosDao;
 
-import java.util.List;
+public interface NetworkQoSDao extends QosDao<NetworkQoS> {
 
-public interface NetworkQoSDao extends GenericDao<NetworkQoS, Guid> {
-
-    public List<NetworkQoS> getAllForStoragePoolId(Guid storagePoolId);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDaoFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDaoFacadeImpl.java
index 4c8b523..94ed72a 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDaoFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkQoSDaoFacadeImpl.java
@@ -1,74 +1,52 @@
 package org.ovirt.engine.core.dao.network;
 
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
 import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dao.DefaultGenericDaoDbFacade;
+import org.ovirt.engine.core.common.businessentities.qos.QosType;
+import org.ovirt.engine.core.dao.qos.QosBaseDaoFacadeImpl;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.List;
-
-public class NetworkQoSDaoFacadeImpl extends 
DefaultGenericDaoDbFacade<NetworkQoS, Guid> implements NetworkQoSDao {
+public class NetworkQoSDaoFacadeImpl extends QosBaseDaoFacadeImpl<NetworkQoS> 
implements NetworkQoSDao {
 
     protected final RowMapper<NetworkQoS> mapper = createEntityRowMapper();
 
     public NetworkQoSDaoFacadeImpl(){
-        super("NetworkQos");
-    }
-
-    private static Integer getIntegerOrNull(ResultSet rs, String columnName) 
throws SQLException {
-        int i = rs.getInt(columnName);
-        return rs.wasNull() ? null : i;
+        super(QosType.NETWORK);
     }
 
     @Override
-    protected MapSqlParameterSource createIdParameterMapper(Guid guid) {
-        return getCustomMapSqlParameterSource()
-                .addValue("id", guid);
+    protected MapSqlParameterSource createFullParametersMapper(NetworkQoS 
networkQos) {
+        MapSqlParameterSource map = 
super.createFullParametersMapper(networkQos);
+        map.addValue("inbound_average", networkQos.getInboundAverage());
+        map.addValue("inbound_peak", networkQos.getInboundPeak());
+        map.addValue("inbound_burst", networkQos.getInboundBurst());
+        map.addValue("outbound_average", networkQos.getOutboundAverage());
+        map.addValue("outbound_peak", networkQos.getOutboundPeak());
+        map.addValue("outbound_burst", networkQos.getOutboundBurst());
+        return map;
     }
 
     @Override
     protected RowMapper<NetworkQoS> createEntityRowMapper() {
-        return new RowMapper<NetworkQoS>() {
-            @Override
-            public NetworkQoS mapRow(ResultSet rs, int rowNum)
-                    throws SQLException {
-                NetworkQoS entity = new NetworkQoS();
-                entity.setId(getGuid(rs, "id"));
-                entity.setName(rs.getString("name"));
-                entity.setStoragePoolId(getGuid(rs, "storage_pool_id"));
-                entity.setInboundAverage(getIntegerOrNull(rs, 
"inbound_average"));
-                entity.setInboundPeak(getIntegerOrNull(rs, "inbound_peak"));
-                entity.setInboundBurst(getIntegerOrNull(rs, "inbound_burst"));
-                entity.setOutboundAverage(getIntegerOrNull(rs, 
"outbound_average"));
-                entity.setOutboundPeak(getIntegerOrNull(rs, "outbound_peak"));
-                entity.setOutboundBurst(getIntegerOrNull(rs, 
"outbound_burst"));
-                return entity;
-            }
-        };
+        return NetworkQosDaoDbFacadaeImplMapper.MAPPER;
     }
 
-    @Override
-    public List<NetworkQoS> getAllForStoragePoolId(Guid storagePoolId) {
-        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource()
-                .addValue("storage_pool_id", storagePoolId.getUuid());
-        return 
getCallsHandler().executeReadList("GetAllNetworkQosForStoragePool", mapper, 
parameterSource);
-    }
+    public static class NetworkQosDaoDbFacadaeImplMapper extends 
QosBaseDaoFacadaeImplMapper<NetworkQoS> {
+        public static final NetworkQosDaoDbFacadaeImplMapper MAPPER = new 
NetworkQosDaoDbFacadaeImplMapper();
 
-    @Override
-    protected MapSqlParameterSource createFullParametersMapper(NetworkQoS 
networkQoS) {
-        return getCustomMapSqlParameterSource()
-                .addValue("id", networkQoS.getId())
-                .addValue("name", networkQoS.getName())
-                .addValue("storage_pool_id", networkQoS.getStoragePoolId())
-                .addValue("inbound_average", networkQoS.getInboundAverage())
-                .addValue("inbound_peak", networkQoS.getInboundPeak())
-                .addValue("inbound_burst", networkQoS.getInboundBurst())
-                .addValue("outbound_average", networkQoS.getOutboundAverage())
-                .addValue("outbound_peak", networkQoS.getOutboundPeak())
-                .addValue("outbound_burst", networkQoS.getOutboundBurst());
-
+        @Override
+        public NetworkQoS createQosEntity(ResultSet rs) throws SQLException {
+            NetworkQoS entity = new NetworkQoS();
+            entity.setInboundAverage(getInteger(rs, "inbound_average"));
+            entity.setInboundPeak(getInteger(rs, "inbound_peak"));
+            entity.setInboundBurst(getInteger(rs, "inbound_burst"));
+            entity.setOutboundAverage(getInteger(rs, "outbound_average"));
+            entity.setOutboundPeak(getInteger(rs, "outbound_peak"));
+            entity.setOutboundBurst(getInteger(rs, "outbound_burst"));
+            return entity;
+        }
     }
 }
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 cc42638..b491643 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
@@ -7,6 +7,7 @@
 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.ovirt.engine.core.dao.network.NetworkQoSDaoFacadeImpl;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
 import org.springframework.jdbc.core.RowMapper;
@@ -49,6 +50,8 @@
                 return 
StorageQosDaoDbFacadeImpl.StorageDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs);
             case CPU:
                 return 
CpuQosDaoDbFacadeImpl.CpuDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs);
+            case NETWORK:
+                return 
NetworkQoSDaoFacadeImpl.NetworkQosDaoDbFacadaeImplMapper.MAPPER.createQosEntity(rs);
                 default:
                     log.debugFormat("not handled/missing qos_type", qosType);
                     break;
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 729904f..184e347 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
@@ -503,7 +503,7 @@
 
     public static final Guid VM_NETWORK_INTERFACE_PROFILE_NOT_USED = new 
Guid("2b75e023-a1fb-4dcb-9738-0ec7fe2d51c6");
 
-    public static final Guid NETWORK_QOS = new 
Guid("ae956031-6be2-43d6-bb90-5191c9253314");
+    public static final Guid NETWORK_QOS = new 
Guid("de956031-6be2-43d6-bb90-5191c9253314");
 
     public static final String MAC_ADDRESS = "00:1a:4a:16:87:db";
 
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
index 26dd2e8..e70b097 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
@@ -123,7 +123,6 @@
             found |= 
(FixturesTool.VDS_NETWORK_INTERFACE.equals(iface.getId()));
         }
         assertTrue(found);
-        
assertNotNull(dbFacade.getQosDao().get(FixturesTool.VDS_NETWORK_INTERFACE));
 
         dao.removeInterfaceFromVds(FixturesTool.VDS_NETWORK_INTERFACE);
 
@@ -132,7 +131,7 @@
         for (VdsNetworkInterface iface : after) {
             assertNotSame(FixturesTool.VDS_NETWORK_INTERFACE, iface.getId());
         }
-        
assertNull(dbFacade.getQosDao().get(FixturesTool.VDS_NETWORK_INTERFACE));
+        
assertNull(dbFacade.getNetworkQosDao().get(FixturesTool.VDS_NETWORK_INTERFACE));
     }
 
     /**
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkQosDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkQosDaoTest.java
index 5b4fd40..4cadce27 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkQosDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkQosDaoTest.java
@@ -12,12 +12,12 @@
 
 public class NetworkQosDaoTest extends BaseDAOTestCase {
 
-    private NetworkQoSDao dao = getDbFacade().getQosDao();
+    private NetworkQoSDao dao = getDbFacade().getNetworkQosDao();
 
-    private static final Guid qosAId = 
Guid.createGuidFromString("ae956031-6be2-43d6-bb90-5191c9253314");
-    private static final Guid qosBId = 
Guid.createGuidFromString("ae956031-6be2-43d6-bb90-5191c9253315");
-    private static final Guid qosCId = 
Guid.createGuidFromString("ae956031-6be2-43d6-bb90-5191c9253316");
-    private static final Guid qosDId = 
Guid.createGuidFromString("ae956031-6be2-43d6-bb90-5191c9253317");
+    private static final Guid qosAId = 
Guid.createGuidFromString("de956031-6be2-43d6-bb90-5191c9253314");
+    private static final Guid qosBId = 
Guid.createGuidFromString("de956031-6be2-43d6-bb90-5191c9253315");
+    private static final Guid qosCId = 
Guid.createGuidFromString("de956031-6be2-43d6-bb90-5191c9253316");
+    private static final Guid qosDId = 
Guid.createGuidFromString("de956031-6be2-43d6-bb90-5191c9253317");
 
 
     /**
@@ -38,7 +38,7 @@
         NetworkQoS result = dao.get(qosAId);
         NetworkQoS trueA = new NetworkQoS();
         trueA.setId(qosAId);
-        trueA.setName("qos_a");
+        trueA.setName("network_qos_a");
         trueA.setStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES);
         trueA.setInboundAverage(1000);
         trueA.setInboundPeak(2000);
@@ -56,7 +56,7 @@
      */
     @Test
     public void testGetAllNetworkQos() {
-        assertTrue(dao.getAll().size() == 4);
+        
assertTrue(dao.getAllForStoragePoolId(FixturesTool.STORAGE_POOL_MIXED_TYPES).size()
 == 2);
     }
 
     /**
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 800367e..29eea87 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -1154,62 +1154,6 @@
         </row>
     </table>
 
-    <table name="network_qos">
-        <column>id</column>
-        <column>name</column>
-        <column>storage_pool_id</column>
-        <column>inbound_average</column>
-        <column>inbound_peak</column>
-        <column>inbound_burst</column>
-        <column>outbound_average</column>
-        <column>outbound_peak</column>
-        <column>outbound_burst</column>
-        <row>
-            <value>ae956031-6be2-43d6-bb90-5191c9253314</value>
-            <value>qos_a</value>
-            <value>386bffd1-e7ed-4b08-bce9-d7df10f8c9a0</value>
-            <value>1000</value>
-            <value>2000</value>
-            <value>500</value>
-            <value>1000</value>
-            <value>2000</value>
-            <value>500</value>
-        </row>
-        <row>
-            <value>ae956031-6be2-43d6-bb90-5191c9253315</value>
-            <value>qos_b</value>
-            <value>386bffd1-e7ed-4b08-bce9-d7df10f8c9a0</value>
-            <value>1200</value>
-            <value>2400</value>
-            <value>500</value>
-            <value>1200</value>
-            <value>2400</value>
-            <value>500</value>
-        </row>
-        <row>
-            <value>ae956031-6be2-43d6-bb90-5191c9253316</value>
-            <value>qos_c</value>
-            <value>72b9e200-f48b-4687-83f2-62828f249a47</value>
-            <value>700</value>
-            <value>1400</value>
-            <value>500</value>
-            <value>700</value>
-            <value>1400</value>
-            <value>500</value>
-        </row>
-        <row>
-            <value>ba31682e-6ae7-4f9d-8c6f-04c93acca9db</value>
-            <null />
-            <null />
-            <value>700</value>
-            <value>1400</value>
-            <value>500</value>
-            <value>700</value>
-            <value>1400</value>
-            <value>500</value>
-        </row>
-    </table>
-
     <table name="qos">
         <column>id</column>
         <column>qos_type</column>
@@ -1223,6 +1167,12 @@
         <column>max_read_iops</column>
         <column>max_write_iops</column>
         <column>cpu_limit</column>
+        <column>inbound_average</column>
+        <column>inbound_peak</column>
+        <column>inbound_burst</column>
+        <column>outbound_average</column>
+        <column>outbound_peak</column>
+        <column>outbound_burst</column>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253314</value>
             <value>1</value>
@@ -1235,6 +1185,12 @@
             <value>1000</value>
             <value>2000</value>
             <value>500</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
             <null />
         </row>
         <row>
@@ -1250,6 +1206,12 @@
             <value>2400</value>
             <value>500</value>
             <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253316</value>
@@ -1263,6 +1225,12 @@
             <value>700</value>
             <value>1400</value>
             <value>500</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
             <null />
         </row>
         <row>
@@ -1278,6 +1246,12 @@
             <null />
             <null />
             <value>50</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253318</value>
@@ -1292,6 +1266,12 @@
             <null />
             <null />
             <value>60</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
         </row>
         <row>
             <value>ae956031-6be2-43d6-bb90-5191c9253319</value>
@@ -1306,6 +1286,92 @@
             <null />
             <null />
             <value>88</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+        </row>
+        <row>
+            <value>de956031-6be2-43d6-bb90-5191c9253314</value>
+            <value>3</value>
+            <value>network_qos_a</value>
+            <null />
+            <value>386bffd1-e7ed-4b08-bce9-d7df10f8c9a0</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>1000</value>
+            <value>2000</value>
+            <value>500</value>
+            <value>1000</value>
+            <value>2000</value>
+            <value>500</value>
+        </row>
+        <row>
+            <value>de956031-6be2-43d6-bb90-5191c9253315</value>
+            <value>3</value>
+            <value>network_qos_b</value>
+            <null />
+            <value>386bffd1-e7ed-4b08-bce9-d7df10f8c9a0</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>1200</value>
+            <value>2400</value>
+            <value>500</value>
+            <value>1200</value>
+            <value>2400</value>
+            <value>500</value>
+        </row>
+        <row>
+            <value>de956031-6be2-43d6-bb90-5191c9253316</value>
+            <value>3</value>
+            <value>network_qos_c</value>
+            <null />
+            <value>72b9e200-f48b-4687-83f2-62828f249a47</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>700</value>
+            <value>1400</value>
+            <value>500</value>
+            <value>700</value>
+            <value>1400</value>
+            <value>500</value>
+        </row>
+        <row>
+            <value>da31682e-6ae7-4f9d-8c6f-04c93acca9db</value>
+            <value>3</value>
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <null />
+            <value>700</value>
+            <value>1400</value>
+            <value>500</value>
+            <value>700</value>
+            <value>1400</value>
+            <value>500</value>
         </row>
     </table>
 
@@ -1323,7 +1389,7 @@
             <value>fd81f1e1-785b-4579-ab75-1419ebb87052</value>
             <value>engine_profile</value>
             <value>58d5c1c6-cb15-4832-b2a4-023770607188</value>
-            <value>ae956031-6be2-43d6-bb90-5191c9253314</value>
+            <value>de956031-6be2-43d6-bb90-5191c9253314</value>
             <value>false</value>
             <value>{ "prop1" : "true", "prop2" : "123456" }</value>
             <value>vnic profile description</value>
@@ -1334,7 +1400,7 @@
             <value>a667da39-27b0-47ec-a5fa-d4293a62b222</value>
             <value>engine_profile_pm</value>
             <value>58d5c1c6-cb15-4832-b2a4-023770607188</value>
-            <value>ae956031-6be2-43d6-bb90-5191c9253315</value>
+            <value>de956031-6be2-43d6-bb90-5191c9253315</value>
             <value>true</value>
             <null />
             <null />
@@ -1365,7 +1431,7 @@
             <value>2b75e023-a1fb-4dcb-9738-0ec7fe2d51c6</value>
             <value>engine4_profile</value>
             <value>58d5c1c6-cb15-4832-b2a4-023770607191</value>
-            <value>ae956031-6be2-43d6-bb90-5191c9253314</value>
+            <value>de956031-6be2-43d6-bb90-5191c9253314</value>
             <value>false</value>
             <value>{}</value>
             <value>2013-07-02 08:38:36</value>
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
index ff52498..16117c4 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CollectVdsNetworkDataVDSCommand.java
@@ -223,7 +223,7 @@
 
     private static void logUnsynchronizedNetworks(VDS vds, Map<String, 
Network> networks) {
         List<String> networkNames = new ArrayList<String>();
-        NetworkQoSDao qosDao = DbFacade.getInstance().getQosDao();
+        NetworkQoSDao qosDao = DbFacade.getInstance().getNetworkQosDao();
 
         for (VdsNetworkInterface iface : vds.getInterfaces()) {
             Network network = networks.get(iface.getNetworkName());
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
index 9c3df02..fbdc16b 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommand.java
@@ -41,7 +41,7 @@
 
     private Map<String, Object> generateNetworks() {
         Map<String, Object> networks = new HashMap<String, Object>();
-        NetworkQoSDao qosDao = getDbFacade().getQosDao();
+        NetworkQoSDao qosDao = getDbFacade().getNetworkQosDao();
         for (Network network : getParameters().getNetworks()) {
             Map<String, Object> opts = new HashMap<String, Object>();
             VdsNetworkInterface iface =
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
index 812446e..fab0aba 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java
@@ -701,7 +701,7 @@
             specParams = new HashMap<>();
             struct.put(VdsProperties.SpecParams, specParams);
         }
-        NetworkQoS networkQoS = (qosId == null) ? new NetworkQoS() : 
DbFacade.getInstance().getQosDao().get(qosId);
+        NetworkQoS networkQoS = (qosId == null) ? new NetworkQoS() : 
DbFacade.getInstance().getNetworkQosDao().get(qosId);
         NetworkQosMapper qosMapper =
                 new NetworkQosMapper(specParams, VdsProperties.QOS_INBOUND, 
VdsProperties.QOS_OUTBOUND);
         qosMapper.serialize(networkQoS);
diff --git 
a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java
 
b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java
index a7f0247..a77f304 100644
--- 
a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java
+++ 
b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java
@@ -187,7 +187,11 @@
         Map<String, Object> networkStruct = assertNeworkWasSent(network);
         NetworkQosMapper qosMapper =
                 new NetworkQosMapper(networkStruct, 
VdsProperties.HOST_QOS_INBOUND, VdsProperties.HOST_QOS_OUTBOUND);
-        assertEquals(expectedQos, qosMapper.deserialize());
+        NetworkQoS deserialize = qosMapper.deserialize();
+        if (deserialize != null) {
+            deserialize.setId(expectedQos.getId());
+        }
+        assertEquals(expectedQos, deserialize);
     }
 
     @Test
@@ -289,7 +293,7 @@
 
         when(dbFacade.getVdsStaticDao()).thenReturn(vdsStaticDao);
         when(dbFacade.getVdsDao()).thenReturn(vdsDao);
-        when(dbFacade.getQosDao()).thenReturn(qosDao);
+        when(dbFacade.getNetworkQosDao()).thenReturn(qosDao);
 
         when(vdsDao.get(any(Guid.class))).thenReturn(host);
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkQoSModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkQoSModel.java
index e8a8959..86f4617 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkQoSModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/EditNetworkQoSModel.java
@@ -1,6 +1,6 @@
 package org.ovirt.engine.ui.uicommonweb.models.datacenters;
 
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
+import org.ovirt.engine.core.common.action.QosParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -25,8 +25,9 @@
 
     @Override
     public void executeSave() {
-        NetworkQoSParametersBase parameters = new NetworkQoSParametersBase();
-        parameters.setNetworkQoS(networkQoS);
+        QosParametersBase<NetworkQoS> parameters = new 
QosParametersBase<NetworkQoS>();
+        parameters.setQosId(networkQoS.getId());
+        parameters.setQos(networkQoS);
         Frontend.getInstance().runAction(VdcActionType.UpdateNetworkQoS, 
parameters, new IFrontendActionAsyncCallback() {
             @Override
             public void executed(FrontendActionAsyncResult result1) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkQoSModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkQoSModel.java
index 0d4653e..f485ada 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkQoSModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/NewNetworkQoSModel.java
@@ -1,6 +1,6 @@
 package org.ovirt.engine.ui.uicommonweb.models.datacenters;
 
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
+import org.ovirt.engine.core.common.action.QosParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
@@ -25,8 +25,9 @@
     @Override
     protected void executeSave() {
         // New network QoS
-        final NetworkQoSParametersBase parameters = new 
NetworkQoSParametersBase();
-        parameters.setNetworkQoS(networkQoS);
+        final QosParametersBase<NetworkQoS> parameters = new 
QosParametersBase<NetworkQoS>();
+        parameters.setQosId(networkQoS.getId());
+        parameters.setQos(networkQoS);
         Frontend.getInstance().runAction(VdcActionType.AddNetworkQoS, 
parameters, new IFrontendActionAsyncCallback() {
             @Override
             public void executed(FrontendActionAsyncResult result1) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworkQoSModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworkQoSModel.java
index 2fdc0a3..8030d9e 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworkQoSModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/RemoveNetworkQoSModel.java
@@ -1,7 +1,9 @@
 package org.ovirt.engine.ui.uicommonweb.models.datacenters;
 
 
-import org.ovirt.engine.core.common.action.NetworkQoSParametersBase;
+import java.util.ArrayList;
+
+import org.ovirt.engine.core.common.action.QosParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.network.NetworkQoS;
@@ -18,8 +20,6 @@
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.FrontendMultipleQueryAsyncResult;
 import org.ovirt.engine.ui.uicompat.IFrontendMultipleQueryAsyncCallback;
-
-import java.util.ArrayList;
 
 public class RemoveNetworkQoSModel extends ConfirmationModel {
 
@@ -85,8 +85,10 @@
         ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
 
         for (Object networkQoS : sourceListModel.getSelectedItems()) {
-            NetworkQoSParametersBase parameter = new 
NetworkQoSParametersBase();
-            parameter.setNetworkQoS((NetworkQoS) networkQoS);
+            QosParametersBase<NetworkQoS> parameter = new 
QosParametersBase<NetworkQoS>();
+            NetworkQoS tempQos = (NetworkQoS) networkQoS;
+            parameter.setQosId(tempQos.getId());
+            parameter.setQos(tempQos);
             parameters.add(parameter);
         }
         
Frontend.getInstance().runMultipleAction(VdcActionType.RemoveNetworkQoS, 
parameters);
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index 8726340..d804a0c 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -1247,14 +1247,14 @@
        vnic_profiles.custom_properties as custom_properties,
        vnic_profiles.description as description,
        network.name as network_name,
-       network_qos.name as network_qos_name,
+       qos.name as network_qos_name,
        storage_pool.name as data_center_name,
        storage_pool.compatibility_version as compatibility_version,
        storage_pool.id as data_center_id
 FROM vnic_profiles
 
 INNER JOIN network ON vnic_profiles.network_id = network.id
-LEFT JOIN network_qos ON vnic_profiles.network_qos_id = network_qos.id
+LEFT JOIN qos ON vnic_profiles.network_qos_id = qos.id
 INNER JOIN storage_pool ON network.storage_pool_id = storage_pool.id;
 
 
diff --git a/packaging/dbscripts/network_qos_sp.sql 
b/packaging/dbscripts/network_qos_sp.sql
deleted file mode 100644
index 3c1fa91..0000000
--- a/packaging/dbscripts/network_qos_sp.sql
+++ /dev/null
@@ -1,79 +0,0 @@
-----------------------------------------------------------------
--- [network_qos] Table
-----------------------------------------------------------------
-
-Create or replace FUNCTION InsertNetworkQos(v_id uuid,
-  v_name VARCHAR(50),
-  v_storage_pool_id uuid,
-  v_inbound_average INTEGER,
-  v_inbound_peak INTEGER,
-  v_inbound_burst INTEGER,
-  v_outbound_average INTEGER,
-  v_outbound_peak INTEGER,
-  v_outbound_burst INTEGER)
-RETURNS VOID
-   AS $procedure$
-BEGIN
-INSERT INTO network_qos(id, name, storage_pool_id, inbound_average, 
inbound_peak, inbound_burst, outbound_average, outbound_peak, outbound_burst)
-  VALUES(v_id, v_name, v_storage_pool_id, v_inbound_average, v_inbound_peak, 
v_inbound_burst, v_outbound_average, v_outbound_peak, v_outbound_burst);
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-Create or replace FUNCTION UpdateNetworkQos(v_id uuid,
-  v_name VARCHAR(50),
-  v_storage_pool_id uuid,
-  v_inbound_average INTEGER,
-  v_inbound_peak INTEGER,
-  v_inbound_burst INTEGER,
-  v_outbound_average INTEGER,
-  v_outbound_peak INTEGER,
-  v_outbound_burst INTEGER)
-RETURNS VOID
-   AS $procedure$
-BEGIN
-      UPDATE network_qos
-      SET name = v_name, storage_pool_id = v_storage_pool_id, inbound_average 
= v_inbound_average, inbound_peak = v_inbound_peak, inbound_burst = 
v_inbound_burst,
-      outbound_average = v_outbound_average, outbound_peak = v_outbound_peak, 
outbound_burst = v_outbound_burst, _update_date = LOCALTIMESTAMP
-      WHERE id = v_id;
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-Create or replace FUNCTION DeleteNetworkQos(v_id UUID) RETURNS VOID
-   AS $procedure$
-BEGIN
-   DELETE FROM network_qos
-   WHERE id = v_id;
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-
-Create or replace FUNCTION GetAllFromNetworkQoss() RETURNS SETOF network_qos 
STABLE
-   AS $procedure$
-BEGIN
-   RETURN QUERY SELECT *
-   FROM network_qos;
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-Create or replace FUNCTION GetNetworkQosByNetworkQosId(v_id UUID) RETURNS 
SETOF network_qos STABLE
-   AS $procedure$
-BEGIN
-RETURN QUERY SELECT *
-   FROM network_qos
-   WHERE id = v_id;
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-Create or replace FUNCTION GetAllNetworkQosForStoragePool(v_storage_pool_id 
UUID) RETURNS SETOF network_qos STABLE
-   AS $procedure$
-BEGIN
-RETURN QUERY SELECT *
-   FROM network_qos
-   WHERE storage_pool_id = v_storage_pool_id;
-END; $procedure$
-LANGUAGE plpgsql;
diff --git a/packaging/dbscripts/qos_sp.sql b/packaging/dbscripts/qos_sp.sql
index 8efac0c..2c849fb 100644
--- a/packaging/dbscripts/qos_sp.sql
+++ b/packaging/dbscripts/qos_sp.sql
@@ -35,6 +35,25 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION InsertNetworkQos(v_id uuid,
+  v_qos_type SMALLINT,
+  v_name VARCHAR(50),
+  v_description TEXT,
+  v_storage_pool_id uuid,
+  v_inbound_average INTEGER,
+  v_inbound_peak INTEGER,
+  v_inbound_burst INTEGER,
+  v_outbound_average INTEGER,
+  v_outbound_peak INTEGER,
+  v_outbound_burst INTEGER)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+INSERT INTO qos(id, qos_type, name, description, storage_pool_id, 
inbound_average, inbound_peak, inbound_burst, outbound_average, outbound_peak, 
outbound_burst)
+  VALUES(v_id, v_qos_type, v_name, v_description, v_storage_pool_id, 
v_inbound_average, v_inbound_peak, v_inbound_burst, v_outbound_average, 
v_outbound_peak, v_outbound_burst);
+END; $procedure$
+LANGUAGE plpgsql;
+
 Create or replace FUNCTION UpdateStorageQos(v_id uuid,
   v_qos_type SMALLINT,
   v_name VARCHAR(50),
@@ -73,6 +92,27 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION UpdateNetworkQos(v_id uuid,
+  v_qos_type SMALLINT,
+  v_name VARCHAR(50),
+  v_description TEXT,
+  v_storage_pool_id uuid,
+  v_inbound_average INTEGER,
+  v_inbound_peak INTEGER,
+  v_inbound_burst INTEGER,
+  v_outbound_average INTEGER,
+  v_outbound_peak INTEGER,
+  v_outbound_burst 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, inbound_average = v_inbound_average, 
inbound_peak = v_inbound_peak, inbound_burst = v_inbound_burst,
+      outbound_average = v_outbound_average, outbound_peak = v_outbound_peak, 
outbound_burst = v_outbound_burst, _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_0320_refactor_network_qos.sql 
b/packaging/dbscripts/upgrade/03_06_0320_refactor_network_qos.sql
new file mode 100644
index 0000000..0223bd9
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_0320_refactor_network_qos.sql
@@ -0,0 +1,29 @@
+-- add network qos columns to qos table
+SELECT fn_db_add_column('qos', 'inbound_average', 'SMALLINT DEFAULT NULL');
+SELECT fn_db_add_column('qos', 'inbound_peak', 'SMALLINT DEFAULT NULL');
+SELECT fn_db_add_column('qos', 'inbound_burst', 'SMALLINT DEFAULT NULL');
+SELECT fn_db_add_column('qos', 'outbound_average', 'SMALLINT DEFAULT NULL');
+SELECT fn_db_add_column('qos', 'outbound_peak', 'SMALLINT DEFAULT NULL');
+SELECT fn_db_add_column('qos', 'outbound_burst', 'SMALLINT DEFAULT NULL');
+-- copy fields data (qos_type = 3)
+INSERT INTO qos(
+       id, qos_type, name, description, storage_pool_id, inbound_average, 
inbound_peak, inbound_burst, 
+       outbound_average, outbound_peak, outbound_burst, _create_date, 
+       _update_date)
+SELECT id, 3, name, NULL, storage_pool_id, inbound_average, inbound_peak, 
inbound_burst, 
+       outbound_average, outbound_peak, outbound_burst, _create_date, 
+       _update_date
+FROM network_qos;
+-- drop old references
+SELECT fn_db_drop_constraint('vnic_profiles', 
'FK_vnic_profiles_network_qos_id');
+SELECT fn_db_drop_constraint('network', 'fk_network_qos_id');
+-- drop table
+DROP TABLE network_qos;
+-- create new references
+SELECT fn_db_create_constraint('vnic_profiles', 
'FK_vnic_profiles_network_qos_id', 'FOREIGN KEY (network_qos_id) REFERENCES 
qos(id) ON DELETE SET NULL');
+SELECT fn_db_create_constraint('network', 'fk_network_qos_id', 'FOREIGN KEY 
(qos_id) REFERENCES qos(id) ON DELETE SET NULL');
+--  allow for anonymous network QoS entities to be persisted, to be revisited.
+ALTER TABLE qos
+      ALTER COLUMN name DROP NOT NULL,
+      ALTER COLUMN storage_pool_id DROP NOT NULL;
+


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I34f43f9edc10b7b52e096b2b6f1f43d19f129ed5
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