Shahar Havivi has uploaded a new change for review. Change subject: ui: RFE add custom UUID for VM ......................................................................
ui: RFE add custom UUID for VM Change-Id: Ia13e212369c070d800bfe5a1bb71f1ca5c875fd6 Signed-off-by: Shahar Havivi <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/GuidValidation.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java 9 files changed, 67 insertions(+), 19 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/35970/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 5e7fcec..c1101fd 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -547,6 +547,9 @@ @DefaultStringValue("Name") String nameVmPopup(); + @DefaultStringValue("Bios Id") + String vmIdPopup(); + @DefaultStringValue("Description") String descriptionVmPopup(); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index f1d6095..a6242c4 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -1,6 +1,8 @@ package org.ovirt.engine.ui.common.widget.uicommon.popup; +import static org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField; + import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.editor.client.SimpleBeanEditorDriver; @@ -25,6 +27,11 @@ import com.google.gwt.user.client.ui.RadioButton; import com.google.gwt.user.client.ui.ValueLabel; import com.google.gwt.user.client.ui.Widget; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; @@ -96,11 +103,11 @@ import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.SerialNumberPolicyWidget; import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.VmPopupVmInitWidget; import org.ovirt.engine.ui.common.widget.uicommon.storage.DisksAllocationView; -import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.TabName; +import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.models.vms.DataCenterWithCluster; import org.ovirt.engine.ui.uicommonweb.models.vms.DiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.TimeZoneModel; @@ -112,14 +119,6 @@ import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicompat.external.StringUtils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField; public abstract class AbstractVmPopupWidget extends AbstractModeSwitchingPopupWidget<UnitVmModel> implements TabbedView { @@ -191,6 +190,11 @@ @UiField(provided = true) @Ignore public InfoIcon poolNameIcon; + + @UiField(provided = true) + @Path(value = "vmId.entity") + @WithElementId("vmId") + public StringEntityModelTextBoxEditor vmIdEditor; @UiField(provided = true) @Path(value = "description.entity") @@ -1022,6 +1026,7 @@ private void initTextBoxEditors() { templateVersionNameEditor = new StringEntityModelTextBoxEditor(new ModeSwitchingVisibilityRenderer()); + vmIdEditor = new StringEntityModelTextBoxEditor(new ModeSwitchingVisibilityRenderer()); descriptionEditor = new StringEntityModelTextBoxEditor(new ModeSwitchingVisibilityRenderer()); commentEditor = new StringEntityModelTextBoxEditor(new ModeSwitchingVisibilityRenderer()); numOfVmsEditor = new IntegerEntityModelTextBoxEditor(new ModeSwitchingVisibilityRenderer()); @@ -1380,6 +1385,8 @@ quotaEditor.setLabel(constants.quotaVmPopup()); nameLabel.setText(constants.nameVmPopup()); templateVersionNameEditor.setLabel(constants.templateVersionName()); + + vmIdEditor.setLabel(constants.vmIdPopup()); descriptionEditor.setLabel(constants.descriptionVmPopup()); commentEditor.setLabel(constants.commentLabel()); @@ -1870,6 +1877,7 @@ nameEditor.setTabIndex(nextTabIndex++); templateVersionNameEditor.setTabIndex(nextTabIndex++); + vmIdEditor.setTabIndex(nextTabIndex++); descriptionEditor.setTabIndex(nextTabIndex++); commentEditor.setTabIndex(nextTabIndex++); isStatelessEditor.setTabIndex(nextTabIndex++); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index 7d15f07..767eeaf 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -441,6 +441,7 @@ <ge:EntityModelTextBoxOnlyEditor ui:field="nameEditor" addStyleNames="{style.nameEditor} avmpw_nameEditor_pfly_fix" contentWidgetStyleName="{style.nameEditorContent}"/> </g:FlowPanel> <ge:StringEntityModelTextBoxEditor ui:field="templateVersionNameEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="vmIdEditor" /> <ge:StringEntityModelTextBoxEditor ui:field="descriptionEditor" /> <ge:StringEntityModelTextBoxEditor ui:field="commentEditor" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index 592491f..d2c7e7b 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -36,6 +36,7 @@ getModel().getIsSoundcardEnabled().setIsChangable(true); getModel().getVmType().setIsChangable(true); + getModel().getVmId().setIsChangable(true); AsyncDataProvider.getInstance().getDataCenterByClusterServiceList(new AsyncQuery(getModel(), new INewAsyncCallback() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index af802be..64a7ac2 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map; import java.util.Set; - import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; import org.ovirt.engine.core.common.businessentities.DisplayType; @@ -62,6 +61,7 @@ import org.ovirt.engine.ui.uicommonweb.models.storage.DisksAllocationModel; import org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.InstanceTypeManager; import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel; +import org.ovirt.engine.ui.uicommonweb.validation.GuidValidation; import org.ovirt.engine.ui.uicommonweb.validation.I18NExtraNameOrNoneValidation; import org.ovirt.engine.ui.uicommonweb.validation.I18NNameValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; @@ -505,6 +505,18 @@ public EntityModel<Boolean> getAllowConsoleReconnect() { return privateAllowConsoleReconnect; + } + + private NotChangableForVmInPoolEntityModel<String> privateVmId; + + public EntityModel<String> getVmId() + { + return privateVmId; + } + + private void setVmId(NotChangableForVmInPoolEntityModel<String> value) + { + privateVmId = value; } private void setAllowConsoleReconnect(NotChangableForVmInPoolEntityModel<Boolean> value) @@ -1418,6 +1430,7 @@ setName(new NotChangableForVmInPoolEntityModel<String>()); setNumOfMonitors(new NotChangableForVmInPoolListModel<Integer>()); setAllowConsoleReconnect(new NotChangableForVmInPoolEntityModel<Boolean>()); + setVmId(new NotChangableForVmInPoolEntityModel<String>()); setDescription(new NotChangableForVmInPoolEntityModel<String>()); setComment(new NotChangableForVmInPoolEntityModel<String>()); setMinAllocatedMemory(new NotChangableForVmInPoolEntityModel<Integer>()); @@ -2641,6 +2654,11 @@ isValidTab(TabName.POOL_TAB) ? new PoolNameValidation() : new I18NNameValidation() }); + getValid().setIsValid(true); + if (getVmId().getIsAvailable() && !StringHelper.isNullOrEmpty(getVmId().getEntity())) { + getVmId().validateEntity(new IValidation[] { new GuidValidation() }); + } + getDescription().validateEntity( new IValidation[] { new LengthValidation(DESCRIPTION_MAX_LIMIT), @@ -2651,6 +2669,7 @@ setValidTab(TabName.GENERAL_TAB, isValidTab(TabName.GENERAL_TAB) && getName().getIsValid() + && getVmId().getIsValid() && getDescription().getIsValid() && getComment().getIsValid()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index b06a4be..cb43494 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; +import com.google.inject.Inject; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -7,7 +8,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; - import org.ovirt.engine.core.common.VdcActionUtils; import org.ovirt.engine.core.common.action.AddVmParameters; import org.ovirt.engine.core.common.action.AddVmTemplateParameters; @@ -50,6 +50,7 @@ import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.searchbackend.SearchObjects; import org.ovirt.engine.ui.frontend.AsyncQuery; @@ -58,7 +59,6 @@ import org.ovirt.engine.ui.uicommonweb.Cloner; import org.ovirt.engine.ui.uicommonweb.ConsoleOptionsFrontendPersister.ConsoleContext; import org.ovirt.engine.ui.uicommonweb.ErrorPopupManager; -import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.TagsEqualityComparer; import org.ovirt.engine.ui.uicommonweb.TypeResolver; @@ -86,6 +86,7 @@ import org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; import org.ovirt.engine.ui.uicommonweb.models.tags.TagModel; +import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.models.templates.VmBaseListModel; import org.ovirt.engine.ui.uicommonweb.models.userportal.AttachCdModel; import org.ovirt.engine.ui.uicommonweb.place.WebAdminApplicationPlaces; @@ -101,8 +102,6 @@ import org.ovirt.engine.ui.uicompat.ObservableCollection; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; import org.ovirt.engine.ui.uicompat.UIConstants; - -import com.google.inject.Inject; public class VmListModel extends VmBaseListModel<VM> implements ISupportSystemTreeContext { @@ -2085,6 +2084,9 @@ model.startProgress(null); VM vm = getcurrentVm(); + if (!StringHelper.isNullOrEmpty(model.getVmId().getEntity())) { + vm.setId(new Guid(model.getVmId().getEntity())); + } vm.setUseLatestVersion(model.getTemplate().getSelectedItem() instanceof LatestVmTemplate); AddVmParameters parameters = new AddVmParameters(vm); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java index 6fc94c6..ed1c308 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java @@ -10,7 +10,6 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; - import org.ovirt.engine.core.common.TimeZoneType; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.ArchitectureType; @@ -45,7 +44,6 @@ import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; -import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; @@ -54,6 +52,7 @@ import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType; import org.ovirt.engine.ui.uicommonweb.models.hosts.numa.NumaSupportModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.numa.VmNumaSupportModel; +import org.ovirt.engine.ui.uicommonweb.models.templates.LatestVmTemplate; import org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.InstanceTypeManager; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.UIConstants; @@ -98,11 +97,12 @@ } /** - * If someone overrides the initalize not calling the super, at least this has to be called + * If someone overrides the initialize not calling the super, at least this has to be called */ protected void commonInitialize() { priorityUtil = new PriorityUtil(getModel()); virtioScsiUtil = new VirtioScsiUtil(getModel()); + getModel().getVmId().setIsChangable(false); } public void dataCenterWithClusterSelectedItemChanged() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/GuidValidation.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/GuidValidation.java new file mode 100644 index 0000000..3e45267 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/validation/GuidValidation.java @@ -0,0 +1,12 @@ +package org.ovirt.engine.ui.uicommonweb.validation; + +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class GuidValidation extends RegexValidation +{ + public GuidValidation() + { + setExpression("^[0-9a-f]{8,8}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{4,4}-[0-9a-f]{12,12}$"); //$NON-NLS-1$ + setMessage(ConstantsManager.getInstance().getConstants().invalidGuidMsg()); + } +} diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 906c11e..f62b881 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -1,8 +1,7 @@ package org.ovirt.engine.ui.uicompat; -import org.ovirt.engine.core.common.businessentities.VmPool; - import com.google.gwt.i18n.client.Constants; +import org.ovirt.engine.core.common.businessentities.VmPool; public interface UIConstants extends com.google.gwt.i18n.client.Constants { @@ -2479,4 +2478,7 @@ @DefaultStringValue("Remove the Data Center(s) will move the entities residing on the storage domain(s) to an unregistered state. For further information please consult documentation.") String removeDataCenterWarnningNote(); + + @DefaultStringValue("This field is not a valid Guid (use 0-9,A-F format: 00000000-0000-0000-0000-000000000000)") + String invalidGuidMsg(); } -- To view, visit http://gerrit.ovirt.org/35970 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia13e212369c070d800bfe5a1bb71f1ca5c875fd6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Shahar Havivi <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
