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 <[email protected]>
---
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
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
8 files changed, 36 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/31826/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 b0173e4..f72dfa0 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,8 +8,8 @@
 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.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.profiles.CpuProfileDao;
 
 
 public class CpuProfileValidator extends ProfileValidator<CpuProfile> {
@@ -68,7 +68,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 5c01203..508d897 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 079e863..36bd3f3 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
@@ -1020,6 +1020,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),
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 3ef6df3..3dca4aa 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1143,6 +1143,8 @@
 ACTION_TYPE_FAILED_DISK_PROFILE_NOT_FOUND=Cannot ${action} ${type}. Disk 
Profile wasn't found.
 ACTION_TYPE_DISK_PROFILE_STORAGE_DOMAIN_NOT_PROVIDED=Cannot ${action} ${type}. 
Storage Domain wasn't provided.
 ACTION_TYPE_DISK_PROFILE_NOT_MATCH_STORAGE_DOMAIN=Cannot ${action} ${type}. 
Disk Profile doesn't match provided Storage Domain.
+ACTION_TYPE_CANNOT_REMOVE_LAST_CPU_PROFILE_IN_CLUSTER=Cannot ${action} 
${type}. remove last CPU profile in Cluster.
+ACTION_TYPE_CANNOT_REMOVE_LAST_DISK_PROFILE_IN_STORAGE_DOMAIN=Cannot ${action} 
${type}. remove last Disk profile in Storage Domain.
 
 # cluster policy errors
 ACTION_TYPE_FAILED_CLUSTER_POLICY_PARAMETERS_INVALID=Cannot ${action} ${type}. 
Parameters are invalid.
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 09d1d78..a20e541 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -3105,6 +3105,12 @@
     @DefaultStringValue("Cannot ${action} ${type}. Disk Profile doesn't match 
provided Storage Domain.")
     String ACTION_TYPE_DISK_PROFILE_NOT_MATCH_STORAGE_DOMAIN();
 
+    @DefaultStringValue("Cannot ${action} ${type}. remove last CPU profile in 
Cluster.")
+    String ACTION_TYPE_CANNOT_REMOVE_LAST_CPU_PROFILE_IN_CLUSTER();
+
+    @DefaultStringValue("Cannot ${action} ${type}. remove last Disk profile in 
Storage Domain.")
+    String ACTION_TYPE_CANNOT_REMOVE_LAST_DISK_PROFILE_IN_STORAGE_DOMAIN();
+
     @DefaultStringValue("Cannot ${action}. New disk size cannot be smaller 
than the current.")
     String ACTION_TYPE_FAILED_REQUESTED_DISK_SIZE_IS_TOO_SMALL();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index ed9b545..2314bb2 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -1118,6 +1118,8 @@
 ACTION_TYPE_FAILED_DISK_PROFILE_NOT_FOUND=Cannot ${action} ${type}. Disk 
Profile wasn't found.
 ACTION_TYPE_DISK_PROFILE_STORAGE_DOMAIN_NOT_PROVIDED=Cannot ${action} ${type}. 
Storage Domain wasn't provided.
 ACTION_TYPE_DISK_PROFILE_NOT_MATCH_STORAGE_DOMAIN=Cannot ${action} ${type}. 
Disk Profile doesn't match provided Storage Domain.
+ACTION_TYPE_CANNOT_REMOVE_LAST_CPU_PROFILE_IN_CLUSTER=Cannot ${action} 
${type}. remove last CPU profile in Cluster.
+ACTION_TYPE_CANNOT_REMOVE_LAST_DISK_PROFILE_IN_STORAGE_DOMAIN=Cannot ${action} 
${type}. remove last Disk profile in Storage Domain.
 
 # cluster policy errors
 ACTION_TYPE_FAILED_CLUSTER_POLICY_PARAMETERS_INVALID=Cannot ${action} ${type}. 
Parameters are invalid.


-- 
To view, visit http://gerrit.ovirt.org/31826
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic1b53e090f3cce4b4831af7f403e8a219e00c7b7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Gilad Chaplik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to