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

Reply via email to