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