Gilad Chaplik has uploaded a new change for review. Change subject: core: disallow removing last profile for parent ......................................................................
core: disallow removing last profile for parent Change-Id: Ic1b53e090f3cce4b4831af7f403e8a219e00c7b7 Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java 5 files changed, 26 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/31629/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java index 537d8a3..de1c9b0 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/CpuProfileValidator.java @@ -8,7 +8,7 @@ import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dao.profiles.ProfilesDao; +import org.ovirt.engine.core.dao.profiles.CpuProfileDao; public class CpuProfileValidator extends ProfileValidator<CpuProfile> { @@ -65,7 +65,15 @@ } @Override - protected ProfilesDao<CpuProfile> getProfileDao() { + public ValidationResult isLastProfileInParentEntity() { + if (getProfileDao().getAllForCluster(getProfile().getClusterId()).size() == 1) { + return new ValidationResult(VdcBllMessages.ACTION_TYPE_CANNOT_REMOVE_LAST_CPU_PROFILE_IN_CLUSTER); + } + return ValidationResult.VALID; + } + + @Override + protected CpuProfileDao getProfileDao() { return getDbFacade().getCpuProfileDao(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java index 5e994e2..1fc02ef 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/DiskProfileValidator.java @@ -9,7 +9,7 @@ import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dao.profiles.ProfilesDao; +import org.ovirt.engine.core.dao.profiles.DiskProfileDao; public class DiskProfileValidator extends ProfileValidator<DiskProfile> { @@ -65,7 +65,15 @@ } @Override - protected ProfilesDao<DiskProfile> getProfileDao() { + public ValidationResult isLastProfileInParentEntity() { + if (getProfileDao().getAllForStorageDomain(getProfile().getStorageDomainId()).size() == 1) { + return new ValidationResult(VdcBllMessages.ACTION_TYPE_CANNOT_REMOVE_LAST_DISK_PROFILE_IN_STORAGE_DOMAIN); + } + return ValidationResult.VALID; + } + + @Override + protected DiskProfileDao getProfileDao() { return getDbFacade().getDiskProfileDao(); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java index e6a6bb8..c28669b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/ProfileValidator.java @@ -92,6 +92,8 @@ public abstract ValidationResult isParentEntityValid(Guid parentEntityId); + public abstract ValidationResult isLastProfileInParentEntity(); + protected abstract List<T> getProfilesByParentEntity(); protected abstract ProfilesDao<T> getProfileDao(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java index c13e770..6962a2e 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/RemoveProfileCommandBase.java @@ -13,7 +13,8 @@ protected boolean canDoAction() { Q validator = getProfileValidator(); return validate(validator.profileIsSet()) - && validate(validator.profileExists()); + && validate(validator.profileExists()) + && validate(validator.isLastProfileInParentEntity()); } @Override diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java index 7bfe98b..989b3f0 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java @@ -1024,6 +1024,8 @@ ACTION_TYPE_CPU_PROFILE_EMPTY(ErrorType.BAD_PARAMETERS), ACTION_TYPE_FAILED_CPU_PROFILE_NOT_FOUND(ErrorType.BAD_PARAMETERS), ACTION_TYPE_CPU_PROFILE_NOT_MATCH_CLUSTER(ErrorType.BAD_PARAMETERS), + ACTION_TYPE_CANNOT_REMOVE_LAST_CPU_PROFILE_IN_CLUSTER(ErrorType.NOT_SUPPORTED), + ACTION_TYPE_CANNOT_REMOVE_LAST_DISK_PROFILE_IN_STORAGE_DOMAIN(ErrorType.NOT_SUPPORTED), // Affinity Groups AFFINITY_GROUP_NAME_TOO_LONG(ErrorType.BAD_PARAMETERS), -- To view, visit http://gerrit.ovirt.org/31629 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic1b53e090f3cce4b4831af7f403e8a219e00c7b7 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