Lior Vernia has uploaded a new change for review.

Change subject: core: Add QoS member to Network and VdsNetworkInterface
......................................................................

core: Add QoS member to Network and VdsNetworkInterface

Added a NetworkQoS member to both these entities. The QoS member of
the Network entity refers to the QoS that should be configured on host
interfaces to which the network is attached, while that of the
VdsNetworkInterface entity refers to the QoS reported by VDSM on a
host.

Change-Id: I63776837d41c620258fa53b9a1335b76a5971cea
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/Network.java
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/InterfaceDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
M packaging/dbscripts/create_views.sql
M packaging/dbscripts/network_sp.sql
A packaging/dbscripts/upgrade/03_04_0290_add_columns_for_host_network_qos.sql
7 files changed, 67 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/22599/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/Network.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/Network.java
index 45db187..49224a4 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/Network.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/Network.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.common.businessentities.Commented;
 import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
 import org.ovirt.engine.core.common.businessentities.Nameable;
+import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.common.utils.ValidationUtils;
 import org.ovirt.engine.core.common.validation.annotation.MTU;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
@@ -67,6 +68,8 @@
 
     @MTU
     private int mtu;
+
+    private NetworkQoS qos;
 
     public Network() {
         vmNetwork = true;
@@ -244,6 +247,8 @@
                 .append(getProvidedBy())
                 .append(", label=")
                 .append(getLabel())
+                .append(", qos=")
+                .append(getQos())
                 .append("}");
         return builder.toString();
     }
@@ -270,6 +275,7 @@
         result = prime * result + ((vmNetwork) ? 11 : 13);
         result = prime * result + ((providedBy == null) ? 0 : 
providedBy.hashCode());
         result = prime * result + ((label == null) ? 0 : label.hashCode());
+        result = prime * result + ((qos == null) ? 0 : qos.hashCode());
         return result;
     }
 
@@ -352,6 +358,9 @@
                 return false;
         } else if (!label.equals(other.label))
             return false;
+        if (!ObjectUtils.objectsEqual(qos, other.qos)) {
+            return false;
+        }
         return true;
     }
 
@@ -370,4 +379,12 @@
     public void setVmNetwork(boolean vmNetwork) {
         this.vmNetwork = vmNetwork;
     }
+
+    public NetworkQoS getQos() {
+        return qos;
+    }
+
+    public void setQos(NetworkQoS qos) {
+        this.qos = qos;
+    }
 }
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 f3e22d6..ad3b3a7 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
@@ -39,10 +39,9 @@
     private Integer bondType;
     private String bondOptions;
     private int mtu;
-
     private boolean bridged;
-
     private NetworkImplementationDetails networkImplementationDetails;
+    private NetworkQoS qos;
 
     public VdsNetworkInterface() {
         super(new VdsNetworkStatistics(), VdsInterfaceType.NONE.getValue());
@@ -323,6 +322,14 @@
         this.networkImplementationDetails = networkImplementationDetails;
     }
 
+    public void setQos(NetworkQoS qos) {
+        this.qos = qos;
+    }
+
+    public NetworkQoS getQos() {
+        return qos;
+    }
+
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
@@ -361,6 +368,8 @@
                 .append(getType())
                 .append(", networkImplementationDetails=")
                 .append(getNetworkImplementationDetails())
+                .append(", qosId=")
+                .append(getQos())
                 .append("}");
         return builder.toString();
     }
@@ -382,6 +391,7 @@
         result = prime * result + ((subnet == null) ? 0 : subnet.hashCode());
         result = prime * result + ((vdsId == null) ? 0 : vdsId.hashCode());
         result = prime * result + ((vlanId == null) ? 0 : vlanId.hashCode());
+        result = prime * result + ((qos == null) ? 0 : qos.hashCode());
         return result;
     }
 
@@ -472,6 +482,9 @@
         } else if (!vlanId.equals(other.vlanId)) {
             return false;
         }
+        if (!ObjectUtils.objectsEqual(qos, other.qos)) {
+            return false;
+        }
         return true;
     }
 
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 cab00eb..07a7455 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
@@ -14,6 +14,7 @@
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkStatistics;
 import org.ovirt.engine.core.common.businessentities.network.Vlan;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper;
 import org.ovirt.engine.core.dao.BaseDAODbFacade;
 import org.springframework.jdbc.core.RowMapper;
@@ -56,7 +57,8 @@
                         .addValue("vds_id", entity.getVdsId())
                         .addValue("vlan_id", entity.getVlanId())
                         .addValue("mtu", entity.getMtu())
-                        .addValue("bridged", entity.isBridged());
+                        .addValue("bridged", entity.isBridged())
+                        .addValue("qos_id", entity.getQos() == null ? null : 
entity.getQos().getId());
                 return paramValue;
             }
         });
@@ -89,7 +91,8 @@
                 .addValue("vds_id", stats.getVdsId())
                 .addValue("vlan_id", stats.getVlanId())
                 .addValue("mtu", stats.getMtu())
-                .addValue("bridged", stats.isBridged());
+                .addValue("bridged", stats.isBridged())
+                .addValue("qos_id", stats.getQos() == null ? null : 
stats.getQos().getId());
 
         getCallsHandler().executeModification("Insertvds_interface", 
parameterSource);
     }
@@ -157,7 +160,8 @@
                 .addValue("vds_id", stats.getVdsId())
                 .addValue("vlan_id", stats.getVlanId())
                 .addValue("mtu", stats.getMtu())
-                .addValue("bridged", stats.isBridged());
+                .addValue("bridged", stats.isBridged())
+                .addValue("qos_id", stats.getQos() == null ? null : 
stats.getQos().getId());
 
         getCallsHandler().executeModification("Updatevds_interface", 
parameterSource);
     }
@@ -251,6 +255,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(getGuid(rs, "qos_id")));
                     return entity;
                 }
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
index e6b41b0..8e8c340 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
@@ -9,6 +9,7 @@
 import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
 import org.ovirt.engine.core.common.businessentities.network.ProviderNetwork;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.DefaultGenericDaoDbFacade;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@@ -115,7 +116,8 @@
                 .addValue("provider_network_provider_id",
                         network.getProvidedBy() == null ? null : 
network.getProvidedBy().getProviderId())
                 .addValue("provider_network_external_id",
-                        network.getProvidedBy() == null ? null : 
network.getProvidedBy().getExternalId());
+                        network.getProvidedBy() == null ? null : 
network.getProvidedBy().getExternalId())
+                .addValue("qos_id", network.getQos() == null ? null : 
network.getQos().getId());
     }
 
     @Override
@@ -164,6 +166,7 @@
                         providerId,
                         rs.getString("provider_network_external_id")));
             }
+            entity.setQos(DbFacade.getInstance().getQosDao().get(getGuid(rs, 
"qos_id")));
 
             return entity;
         }
diff --git a/packaging/dbscripts/create_views.sql 
b/packaging/dbscripts/create_views.sql
index cb4c883..481df2b 100644
--- a/packaging/dbscripts/create_views.sql
+++ b/packaging/dbscripts/create_views.sql
@@ -867,7 +867,7 @@
       vds_interface.subnet, vds_interface.addr, vds_interface.speed, 
vds_interface.vlan_id, vds_interface.bond_type,
       vds_interface.bond_name, vds_interface.is_bond, vds_interface.bond_opts, 
vds_interface.mac_addr,
       vds_interface.network_name, vds_interface.name, vds_static.vds_id, 
vds_static.vds_name,  vds_interface.id,
-      vds_interface.boot_protocol, vds_interface.mtu as mtu, 
vds_interface.bridged, 1 AS is_vds
+      vds_interface.boot_protocol, vds_interface.mtu as mtu, 
vds_interface.bridged, 1 AS is_vds, vds_interface.qos_id
   FROM vds_interface_statistics
   JOIN vds_interface ON vds_interface_statistics.id = vds_interface.id
   JOIN vds_static ON vds_interface.vds_id = vds_static.vds_id;
@@ -1162,6 +1162,7 @@
    network.storage_pool_id AS storage_pool_id,
    network.provider_network_provider_id AS provider_network_provider_id,
    network.provider_network_external_id AS provider_network_external_id,
+   network.qos_id AS qos_id,
    storage_pool.name AS storage_pool_name,
    storage_pool.compatibility_version AS compatibility_version,
    providers.name AS provider_name
diff --git a/packaging/dbscripts/network_sp.sql 
b/packaging/dbscripts/network_sp.sql
index aadfc46..f798c16 100644
--- a/packaging/dbscripts/network_sp.sql
+++ b/packaging/dbscripts/network_sp.sql
@@ -20,12 +20,13 @@
        v_mtu INTEGER,
        v_vm_network BOOLEAN,
        v_provider_network_provider_id UUID,
-       v_provider_network_external_id TEXT)
+       v_provider_network_external_id TEXT,
+       v_qos_id UUID)
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO network(addr, description, free_text_comment, id, name, subnet, 
gateway, type, vlan_id, stp, storage_pool_id, mtu, vm_network, 
provider_network_provider_id, provider_network_external_id)
-       VALUES(v_addr, v_description, v_free_text_comment, v_id, v_name, 
v_subnet, v_gateway, v_type, v_vlan_id, v_stp, v_storage_pool_id, v_mtu, 
v_vm_network, v_provider_network_provider_id, v_provider_network_external_id);
+INSERT INTO network(addr, description, free_text_comment, id, name, subnet, 
gateway, type, vlan_id, stp, storage_pool_id, mtu, vm_network, 
provider_network_provider_id, provider_network_external_id, qos_id)
+       VALUES(v_addr, v_description, v_free_text_comment, v_id, v_name, 
v_subnet, v_gateway, v_type, v_vlan_id, v_stp, v_storage_pool_id, v_mtu, 
v_vm_network, v_provider_network_provider_id, v_provider_network_external_id, 
v_qos_id);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -46,7 +47,8 @@
        v_mtu INTEGER,
        v_vm_network BOOLEAN,
        v_provider_network_provider_id UUID,
-       v_provider_network_external_id TEXT)
+       v_provider_network_external_id TEXT,
+       v_qos_id UUID)
 RETURNS VOID
 
        --The [network] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -58,7 +60,8 @@
       stp = v_stp,storage_pool_id = v_storage_pool_id, mtu = v_mtu,
       vm_network = v_vm_network,
       provider_network_provider_id = v_provider_network_provider_id,
-      provider_network_external_id = v_provider_network_external_id
+      provider_network_external_id = v_provider_network_external_id,
+      qos_id = v_qos_id
       WHERE id = v_id;
 END; $procedure$
 LANGUAGE plpgsql;
@@ -185,7 +188,7 @@
 CREATE TYPE networkViewClusterType AS(id uuid,name VARCHAR(50),description 
VARCHAR(4000), free_text_comment text, type INTEGER,
             addr VARCHAR(50),subnet VARCHAR(20),gateway VARCHAR(20),vlan_id 
INTEGER,stp BOOLEAN,storage_pool_id UUID,
            mtu INTEGER, vm_network BOOLEAN,
-           provider_network_provider_id UUID, provider_network_external_id 
TEXT,
+           provider_network_provider_id UUID, provider_network_external_id 
TEXT, qos_id UUID,
            network_id UUID,cluster_id UUID, status INTEGER, is_display BOOLEAN,
            required BOOLEAN, migration BOOLEAN);
 Create or replace FUNCTION GetAllNetworkByClusterId(v_id UUID, v_user_id uuid, 
v_is_filtered boolean)
@@ -209,6 +212,7 @@
     network.vm_network,
     network.provider_network_provider_id,
     network.provider_network_external_id,
+    network.qos_id,
     network_cluster.network_id,
     network_cluster.cluster_id,
     network_cluster.status,
@@ -281,12 +285,13 @@
  v_vds_id UUID,
  v_vlan_id INTEGER,
  v_mtu INTEGER,
- v_bridged BOOLEAN)
+ v_bridged BOOLEAN,
+ v_qos_id UUID)
 RETURNS VOID
    AS $procedure$
 BEGIN
-INSERT INTO vds_interface(addr, bond_name, bond_type, gateway, id, is_bond, 
bond_opts, mac_addr, name, network_name, speed, subnet, boot_protocol, type, 
VDS_ID, vlan_id, mtu, bridged)
-       VALUES(v_addr, v_bond_name, v_bond_type, v_gateway, v_id, v_is_bond, 
v_bond_opts, v_mac_addr, v_name, v_network_name, v_speed, v_subnet, 
v_boot_protocol, v_type, v_vds_id, v_vlan_id, v_mtu, v_bridged);
+INSERT INTO vds_interface(addr, bond_name, bond_type, gateway, id, is_bond, 
bond_opts, mac_addr, name, network_name, speed, subnet, boot_protocol, type, 
VDS_ID, vlan_id, mtu, bridged, qos_id)
+       VALUES(v_addr, v_bond_name, v_bond_type, v_gateway, v_id, v_is_bond, 
v_bond_opts, v_mac_addr, v_name, v_network_name, v_speed, v_subnet, 
v_boot_protocol, v_type, v_vds_id, v_vlan_id, v_mtu, v_bridged, v_qos_id);
 END; $procedure$
 LANGUAGE plpgsql;
 
@@ -311,7 +316,8 @@
  v_vds_id UUID,
  v_vlan_id INTEGER,
  v_mtu INTEGER,
- v_bridged BOOLEAN)
+ v_bridged BOOLEAN,
+ v_qos_id UUID)
 RETURNS VOID
 
        --The [vds_interface] table doesn't have a timestamp column. Optimistic 
concurrency logic cannot be generated
@@ -323,7 +329,7 @@
       name = v_name,network_name = v_network_name,speed = v_speed,
       subnet = v_subnet,boot_protocol = v_boot_protocol,
       type = v_type,VDS_ID = v_vds_id,vlan_id = v_vlan_id,_update_date = 
LOCALTIMESTAMP, mtu = v_mtu,
-      bridged = v_bridged
+      bridged = v_bridged, qos_id = v_qos_id
       WHERE id = v_id;
 END; $procedure$
 LANGUAGE plpgsql;
diff --git 
a/packaging/dbscripts/upgrade/03_04_0290_add_columns_for_host_network_qos.sql 
b/packaging/dbscripts/upgrade/03_04_0290_add_columns_for_host_network_qos.sql
new file mode 100644
index 0000000..73a3505
--- /dev/null
+++ 
b/packaging/dbscripts/upgrade/03_04_0290_add_columns_for_host_network_qos.sql
@@ -0,0 +1,4 @@
+SELECT fn_db_add_column('network', 'qos_id', 'UUID');
+SELECT fn_db_add_column('vds_interface', 'qos_id', 'UUID');
+SELECT fn_db_create_constraint('network', 'fk_network_qos_id', 'FOREIGN KEY 
(qos_id) REFERENCES network_qos(id) ON DELETE SET NULL');
+SELECT fn_db_create_constraint('vds_interface', 'fk_vds_interface_qos_id', 
'FOREIGN KEY (qos_id) REFERENCES network_qos(id) ON DELETE SET NULL');


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

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