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

Reply via email to