Lior Vernia has uploaded a new change for review.

Change subject: core: Added QoS overridden member to VdsNetworkInterface
......................................................................

core: Added QoS overridden member to VdsNetworkInterface

This boolean member represents whether QoS is allowed to be overridden
on the interface, in which case the network won't appear out-of-sync
even if its own QoS configuration is different.

Change-Id: Iaffc4c2f5b35ed34bf64e4d892a0e9ed64f94bde
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VdsNetworkInterface.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
M packaging/dbscripts/network_sp.sql
A packaging/dbscripts/upgrade/03_04_0310_add_qos_overridden_to_vds_interface.sql
5 files changed, 61 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/64/22764/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VdsNetworkInterface.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VdsNetworkInterface.java
index b9ebfa2..f3bbcd6 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VdsNetworkInterface.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/VdsNetworkInterface.java
@@ -44,6 +44,7 @@
     private boolean bridged;
     private NetworkImplementationDetails networkImplementationDetails;
     private NetworkQoS qos;
+    private boolean qosOverridden;
 
     @ValidNetworkLabelFormat(message = "NETWORK_LABEL_FORMAT_INVALID")
     private Set<String> labels;
@@ -328,17 +329,31 @@
     }
 
     /**
-     * Gets the QoS reported by VDSM.
+     * Gets the QoS configured on this interface, which overrides the one 
possibly configured on the network.
      */
     public NetworkQoS getQos() {
         return qos;
     }
 
     /**
-     * Sets the QoS reported by VDSM.
+     * Sets the QoS configured on this interface, which overrides the one 
possibly configured on the network.
      */
     public void setQos(NetworkQoS qos) {
         this.qos = qos;
+    }
+
+    /**
+     * Gets whether QoS overriding is enabled.
+     */
+    public boolean isQosOverridden() {
+        return qosOverridden;
+    }
+
+    /**
+     * Sets whether QoS overriding is enabled.
+     */
+    public void setQosOverridden(boolean qosOverridden) {
+        this.qosOverridden = qosOverridden;
     }
 
     public Set<String> getLabels() {
@@ -389,6 +404,8 @@
                 .append(getNetworkImplementationDetails())
                 .append(", qos=")
                 .append(getQos())
+                .append(" qosOverridden=")
+                .append(isQosOverridden())
                 .append(", labels=")
                 .append(getLabels())
                 .append("}");
@@ -413,6 +430,7 @@
         result = prime * result + ((vdsId == null) ? 0 : vdsId.hashCode());
         result = prime * result + ((vlanId == null) ? 0 : vlanId.hashCode());
         result = prime * result + ((qos == null) ? 0 : qos.hashCode());
+        result = prime * result + (qosOverridden ? 1231 : 1237);
         result = prime * result + ((labels == null) ? 0 : labels.hashCode());
         return result;
     }
@@ -507,6 +525,9 @@
         if (!ObjectUtils.objectsEqual(qos, other.qos)) {
             return false;
         }
+        if (qosOverridden != other.qosOverridden) {
+            return false;
+        }
         if (!ObjectUtils.objectsEqual(labels, other.labels)) {
             return false;
         }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
index a9b506d..6ba6bdb 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
@@ -138,6 +138,14 @@
     List<VdsNetworkInterface> getAllInterfacesWithIpAddress(Guid clusterId, 
String ipAddress);
 
     /**
+     * Updates the qos_overridden column of the specified interfaces.
+     *
+     * @param ifaces
+     *            the interfaces whose qos_overridden column should be updated.
+     */
+    void updateQosOverridden(Collection<VdsNetworkInterface> ifaces);
+
+    /**
      * Retrieves all interfaces within a specific cluster
      *
      * @param clusterId
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 d12318e..fbeff9e 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
@@ -121,6 +121,7 @@
                 .addValue("vlan_id", nic.getVlanId())
                 .addValue("mtu", nic.getMtu())
                 .addValue("bridged", nic.isBridged())
+                .addValue("qos_overridden", nic.isQosOverridden())
                 .addValue("labels", 
SerializationFactory.getSerializer().serialize(nic.getLabels()));
     }
 
@@ -209,6 +210,19 @@
     }
 
     @Override
+    public void updateQosOverridden(Collection<VdsNetworkInterface> ifaces) {
+        
getCallsHandler().executeStoredProcAsBatch("update_vds_interface_qos_overridden",
+                ifaces,
+                new MapSqlParameterMapper<VdsNetworkInterface>() {
+                    @Override
+                    public MapSqlParameterSource map(VdsNetworkInterface 
entity) {
+                        return new MapSqlParameterSource().addValue("id", 
entity.getId())
+                                .addValue("qos_overridden", 
entity.isQosOverridden());
+                    }
+                });
+    }
+
+    @Override
     public List<VdsNetworkInterface> getAllInterfacesByClusterId(Guid 
clusterId) {
         return getCallsHandler().executeReadList("GetInterfacesByClusterId",
                 vdsNetworkInterfaceRowMapper,
@@ -254,6 +268,7 @@
                     entity.setMtu(rs.getInt("mtu"));
                     entity.setBridged(rs.getBoolean("bridged"));
                     
entity.setQos(DbFacade.getInstance().getQosDao().get(getGuid(rs, "id")));
+                    entity.setQosOverridden(rs.getBoolean("qos_overridden"));
                     
entity.setLabels(SerializationFactory.getDeserializer().deserialize(rs.getString("labels"),
                             HashSet.class));
                     return entity;
diff --git a/packaging/dbscripts/network_sp.sql 
b/packaging/dbscripts/network_sp.sql
index 1b98965..0428f47 100644
--- a/packaging/dbscripts/network_sp.sql
+++ b/packaging/dbscripts/network_sp.sql
@@ -351,6 +351,20 @@
 
 
 
+CREATE OR REPLACE FUNCTION update_vds_interface_qos_overridden(v_id UUI, 
v_qos_overridden BOOLEAN)
+RETURNS VOID
+   AS $procedure$
+BEGIN
+      UPDATE vds_interface
+      SET qos_overridden = v_qos_overridden
+      WHERE id = v_id
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+
+
+
 Create or replace FUNCTION Deletevds_interface(v_id UUID)
 RETURNS VOID
    AS $procedure$
diff --git 
a/packaging/dbscripts/upgrade/03_04_0310_add_qos_overridden_to_vds_interface.sql
 
b/packaging/dbscripts/upgrade/03_04_0310_add_qos_overridden_to_vds_interface.sql
new file mode 100644
index 0000000..5f660ff
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_04_0310_add_qos_overridden_to_vds_interface.sql
@@ -0,0 +1 @@
+SELECT fn_db_add_column('vds_interface', 'qos_overridden', 'boolean NOT NULL 
DEFAULT false');


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaffc4c2f5b35ed34bf64e4d892a0e9ed64f94bde
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <lver...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to