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