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