Arik Hadas has uploaded a new change for review.

Change subject: core: fix support for pattern-based name for pool
......................................................................

core: fix support for pattern-based name for pool

Adding the validation group 'CreateEntity' to UpdateVmPoolWithVmsCommand
caused a regression that prevented to set pattern-based name for pool.
The problem was that the validation which is declared on
VmStatic#getName was checked also for pools and it doesn't accept name
that contains '?'.

The solution is to introduce 4 additional validation groups for create
& update VMs and for create & update Templates, which extend the
'CreateEntity' and 'CreateUpdate' groups, and to change the groups of
the validation on VmStatic#getName to these instead of 'CreateEntity'
and 'CreateUpdate'.

This change is safe because every validation that was checked before
will still be checked since the new groups extend the previous ones,
except for the validation on VmStatic#getName which will be checked only
for commands that add or update VM or Template.

Change-Id: I5bfa9fb37d464dd0e77b0bc206c1804713ed9575
Bug-Url: https://bugzilla.redhat.com/1078875
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/CreateVm.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/UpdateVm.java
7 files changed, 31 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/24/26624/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
index 99ad2a0..6e0904a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
@@ -22,8 +22,8 @@
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
-import org.ovirt.engine.core.bll.validator.VmWatchdogValidator;
 import org.ovirt.engine.core.bll.validator.VmValidationUtils;
+import org.ovirt.engine.core.bll.validator.VmWatchdogValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -69,7 +69,7 @@
 import org.ovirt.engine.core.common.osinfo.OsRepository;
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
-import org.ovirt.engine.core.common.validation.group.CreateEntity;
+import org.ovirt.engine.core.common.validation.group.CreateVm;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.PermissionDAO;
@@ -393,7 +393,7 @@
 
     @Override
     protected List<Class<?>> getValidationGroups() {
-        addValidationGroup(CreateEntity.class);
+        addValidationGroup(CreateVm.class);
         return super.getValidationGroups();
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
index a2af896..8c6ccce 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
@@ -47,7 +47,7 @@
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
-import org.ovirt.engine.core.common.validation.group.UpdateEntity;
+import org.ovirt.engine.core.common.validation.group.UpdateVm;
 import org.ovirt.engine.core.compat.DateTime;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
@@ -238,7 +238,7 @@
 
     @Override
     protected List<Class<?>> getValidationGroups() {
-        addValidationGroup(UpdateEntity.class);
+        addValidationGroup(UpdateVm.class);
         return super.getValidationGroups();
     }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
index de7b13b..624ba85 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
@@ -52,4 +52,12 @@
                 .getCanDoActionMessages()
                 
.contains(VdcBllMessages.ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_TARGET_STORAGE_DOMAIN.toString()));
     }
+
+    @Test
+    public void validatePatternBasedPoolName() {
+        String patternBaseName = "aa-??bb";
+        command.getParameters().getVmStaticData().setName(patternBaseName);
+        command.getParameters().getVmPool().setName(patternBaseName);
+        assertTrue(command.validateInputs());
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
index 4d1b230..bb4f8c5 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
@@ -7,6 +7,7 @@
 import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -60,7 +61,8 @@
             mockConfig(ConfigValues.VM32BitMaxMemorySizeInMB, 2048),
             mockConfig(ConfigValues.VM64BitMaxMemorySizeInMB, 262144),
             mockConfig(ConfigValues.FreeSpaceCriticalLowInGB, 1),
-            mockConfig(ConfigValues.InitStorageSparseSizeInGB, 1)
+            mockConfig(ConfigValues.InitStorageSparseSizeInGB, 1),
+            mockConfig(ConfigValues.ValidNumOfMonitors, 
Arrays.asList("1,2,4".split(",")))
             );
 
     private final Guid vdsGroupId = Guid.newGuid();
@@ -204,6 +206,7 @@
         vm.setVmtGuid(vmTemplateId);
         vm.setStaticData(getVmStatic());
         vm.setClusterArch(ArchitectureType.x86_64);
+        vm.setName("my_vm");
         return vm;
     }
 
@@ -308,6 +311,7 @@
     private VmStatic getVmStatic() {
         VmStatic vmStatic = new VmStatic();
         vmStatic.setOsId(OsRepository.DEFAULT_X86_OS);
+        vmStatic.setNumOfMonitors(1);
         vmStatic.setMemSizeMb(300);
         vmStatic.setStateless(false);
         vmStatic.setVmtGuid(vmTemplateId);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
index 0c30d3a..756d2f5 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmStatic.java
@@ -6,9 +6,9 @@
 import 
org.ovirt.engine.core.common.businessentities.OvfExportOnlyField.ExportOption;
 import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.common.validation.annotation.ValidI18NName;
-import org.ovirt.engine.core.common.validation.group.CreateEntity;
+import org.ovirt.engine.core.common.validation.group.CreateVm;
 import org.ovirt.engine.core.common.validation.group.ImportClonedEntity;
-import org.ovirt.engine.core.common.validation.group.UpdateEntity;
+import org.ovirt.engine.core.common.validation.group.UpdateVm;
 import org.ovirt.engine.core.compat.Guid;
 
 public class VmStatic extends VmBase {
@@ -116,7 +116,7 @@
     @Override
     @Size(min = 1, max = BusinessEntitiesDefinitions.VM_NAME_SIZE, groups = { 
Default.class, ImportClonedEntity.class })
     @ValidI18NName(message = 
"ACTION_TYPE_FAILED_NAME_MAY_NOT_CONTAIN_SPECIAL_CHARS",
-            groups = { CreateEntity.class, UpdateEntity.class, 
ImportClonedEntity.class })
+            groups = { CreateVm.class, UpdateVm.class, 
ImportClonedEntity.class })
     public String getName() {
         return super.getName();
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/CreateVm.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/CreateVm.java
new file mode 100644
index 0000000..8866f21
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/CreateVm.java
@@ -0,0 +1,5 @@
+package org.ovirt.engine.core.common.validation.group;
+
+public interface CreateVm extends CreateEntity {
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/UpdateVm.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/UpdateVm.java
new file mode 100644
index 0000000..a442bc1
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/validation/group/UpdateVm.java
@@ -0,0 +1,5 @@
+package org.ovirt.engine.core.common.validation.group;
+
+public interface UpdateVm extends UpdateEntity {
+
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5bfa9fb37d464dd0e77b0bc206c1804713ed9575
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to