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