Martin Betak has uploaded a new change for review.

Change subject: frontend: Support for configuring VM.migration_downtime
......................................................................

frontend: Support for configuring VM.migration_downtime

Enable user to configure in the New/Edit-VM dialog the new property
representing maximum number of milliseconds a VM can be down during live
migration.

Change-Id: Ib69d4f275561516f143ec8360e7b5b20644794fd
Signed-off-by: Martin Betak <[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/CommonApplicationMessages.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelCheckBoxOnlyEditor.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.ui.xml
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/templates/TemplateListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
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/TemplateVmModelBehavior.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/VmSnapshotListModel.java
15 files changed, 240 insertions(+), 59 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/23141/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 38964bb..2760314 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
@@ -1603,4 +1603,9 @@
     @DefaultStringValue("Override SPICE proxy")
     String defineSpiceProxyEnable();
 
+    @DefaultStringValue("Use custom migration downtime")
+    String overrideMigrationDowntimeLabel();
+
+    @DefaultStringValue("Migration downtime (ms)")
+    String migrationDowntimeLabel();
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
index abde869..e6dbcb1 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationMessages.java
@@ -144,4 +144,6 @@
     @DefaultMessage("{0} or {1}")
     String or(String a, String b);
 
+    @DefaultMessage("Represents maximum number of milliseconds the VM can be 
down during live migration. Default value is {0}ms")
+    String migrationDowntimeInfo(Integer milliseconds);
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelCheckBoxOnlyEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelCheckBoxOnlyEditor.java
index 9a163ed..5cecc60 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelCheckBoxOnlyEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelCheckBoxOnlyEditor.java
@@ -3,8 +3,23 @@
 import com.google.gwt.dom.client.Style.Display;
 import com.google.gwt.dom.client.Style.Float;
 import com.google.gwt.user.client.ui.Widget;
+import org.ovirt.engine.ui.common.widget.Align;
+import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
 
 public class EntityModelCheckBoxOnlyEditor extends EntityModelCheckBoxEditor {
+
+    public EntityModelCheckBoxOnlyEditor() {
+        super(Align.LEFT); // align not important since label is not shown
+    }
+
+    public EntityModelCheckBoxOnlyEditor(VisibilityRenderer 
visibilityRenderer) {
+        super(Align.LEFT, visibilityRenderer);
+    }
+
+    public EntityModelCheckBoxOnlyEditor(VisibilityRenderer 
visibilityRenderer, boolean useFullWidthIfAvailable) {
+        super(Align.LEFT, visibilityRenderer, useFullWidthIfAvailable);
+    }
+
     @Override
     protected void initWidget(Widget wrapperWidget) {
         super.initWidget(wrapperWidget);
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.java
new file mode 100644
index 0000000..d36364c
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.java
@@ -0,0 +1,68 @@
+package org.ovirt.engine.ui.common.widget.editor.generic;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+import org.ovirt.engine.ui.common.CommonApplicationResources;
+import org.ovirt.engine.ui.common.CommonApplicationTemplates;
+import org.ovirt.engine.ui.common.widget.AbstractValidatedWidget;
+import org.ovirt.engine.ui.common.widget.dialog.InfoIcon;
+import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicompat.Event;
+import org.ovirt.engine.ui.uicompat.EventArgs;
+import org.ovirt.engine.ui.uicompat.IEventListener;
+
+public class OverridableEntityEditor<T> extends Composite {
+
+    interface WidgetUiBinder extends UiBinder<Widget, OverridableEntityEditor> 
{
+        WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
+    }
+
+    private static CommonApplicationTemplates applicationTemplates = 
GWT.create(CommonApplicationTemplates.class);
+    private static CommonApplicationResources resources = 
GWT.create(CommonApplicationResources.class);
+
+    @UiField(provided = true)
+    EntityModelCheckBoxOnlyEditor checkBox;
+
+    @UiField(provided = true)
+    Label label;
+
+    @UiField(provided = true)
+    InfoIcon infoIcon;
+
+    @UiField(provided = true)
+    AbstractValidatedWidget editor;
+
+    public OverridableEntityEditor(String labelText, String iconText, final 
AbstractValidatedWidget editor) {
+        this.infoIcon = new 
InfoIcon(applicationTemplates.italicText(iconText), resources);
+        this.checkBox = new EntityModelCheckBoxOnlyEditor();
+        this.label = new Label(labelText);
+        this.editor = editor;
+
+        initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
+    }
+
+    public void edit(final EntityModel<T> entityModel) {
+        this.checkBox.asCheckBox().addValueChangeHandler(new 
ValueChangeHandler<Boolean>() {
+            @Override
+            public void onValueChange(ValueChangeEvent<Boolean> 
booleanValueChangeEvent) {
+                
entityModel.setIsChangable(Boolean.TRUE.equals(booleanValueChangeEvent.getValue()));
+            }
+        });
+        entityModel.getEntityChangedEvent().addListener(new IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                checkBox.asCheckBox().setValue(entityModel.getEntity() != 
null);
+            }
+        });
+    }
+
+    public void setTabIndex(int tabIndex) {
+        checkBox.setTabIndex(tabIndex);
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.ui.xml
new file mode 100644
index 0000000..e8729e4
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/OverridableEntityEditor.ui.xml
@@ -0,0 +1,40 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+             xmlns:g="urn:import:com.google.gwt.user.client.ui"
+             xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"
+             xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog"
+             
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic">
+
+  <ui:style>
+    .checkBoxStyle {
+      display: inline;
+      float: left;
+      width: 20px;
+    }
+
+    .labelStyle {
+      display: inline-block;
+      float: left;
+      max-width: 200px;
+    }
+
+    .iconStyle {
+      display: inline;
+      float: left;
+    }
+
+    .editorStyle {
+      display: inline;
+      max-width: 230px;
+      float: right;
+    }
+  </ui:style>
+
+  <g:FlowPanel width="100%">
+    <ge:EntityModelCheckBoxOnlyEditor ui:field="checkBox" 
addStyleNames="{style.checkBoxStyle}"  />
+    <g:Label ui:field="label" addStyleNames="{style.labelStyle}" />
+    <d:InfoIcon ui:field="infoIcon" addStyleNames="{style.iconStyle}" />
+    <w:AbstractValidatedWidget ui:field="editor" 
addStyleNames="{style.editorStyle}}" />
+  </g:FlowPanel>
+
+</ui:UiBinder>
\ No newline at end of file
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 c1f7ca3..6651ba4 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
@@ -49,6 +49,7 @@
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.Align;
 import org.ovirt.engine.ui.common.widget.EntityModelWidgetWithInfo;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.OverridableEntityEditor;
 import org.ovirt.engine.ui.common.widget.dialog.AdvancedParametersExpander;
 import org.ovirt.engine.ui.common.widget.dialog.InfoIcon;
 import org.ovirt.engine.ui.common.widget.dialog.tab.DialogTab;
@@ -122,6 +123,8 @@
         String migrationSelectorInner();
 
         String isVirtioScsiEnabledEditor();
+
+        String migrationDowntime();
     }
 
     @UiField
@@ -438,6 +441,15 @@
     @Path(value = "migrationMode.selectedItem")
     @WithElementId("migrationMode")
     public ListModelListBoxEditor<MigrationSupport> migrationModeEditor;
+
+    @UiField(provided = true)
+    @Ignore
+    public OverridableEntityEditor<Integer> overrideMigrationDowntimeEditor;
+
+    @UiField(provided = true)
+    @Path(value = "migrationDowntime.entity")
+    @WithElementId("migrationDowntime")
+    public IntegerEntityModelTextBoxOnlyEditor migrationDowntimeEditor;
 
     @UiField(provided = true)
     @Ignore
@@ -939,6 +951,13 @@
         migrationModeEditor =
                 new ListModelListBoxEditor<MigrationSupport>(new 
EnumRenderer(), new ModeSwitchingVisibilityRenderer());
 
+        migrationDowntimeEditor = new IntegerEntityModelTextBoxOnlyEditor(new 
ModeSwitchingVisibilityRenderer());
+        final Integer defaultMaximumMigrationDowntime = (Integer) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.DefaultMaximumMigrationDowntime);
+        overrideMigrationDowntimeEditor = new OverridableEntityEditor(
+                constants.migrationDowntimeLabel(),
+                
messages.migrationDowntimeInfo(defaultMaximumMigrationDowntime),
+                migrationDowntimeEditor);
+
         // Resource Allocation
         provisioningThinEditor =
                 new EntityModelRadioButtonEditor("provisioningGroup", new 
ModeSwitchingVisibilityRenderer()); //$NON-NLS-1$
@@ -1040,6 +1059,7 @@
         // specificHostEditor.setLabel("Specific");
         hostCpuEditor.setLabel(constants.useHostCpu());
         cpuPinning.setLabel(constants.cpuPinningLabel());
+        migrationDowntimeEditor.setLabel(constants.migrationDowntimeLabel());
 
         // High Availability Tab
         isHighlyAvailableEditor.setLabel(constants.highlyAvailableVmPopup());
@@ -1093,6 +1113,7 @@
         driver.edit(model);
         profilesInstanceTypeEditor.edit(model.getNicsWithLogicalNetworks());
         customPropertiesSheetEditor.edit(model.getCustomPropertySheet());
+        overrideMigrationDowntimeEditor.edit(model.getMigrationDowntime());
         initTabAvailabilityListeners(model);
         initListeners(model);
         hideAlwaysHiddenFields();
@@ -1458,6 +1479,8 @@
         specificHost.setTabIndex(nextTabIndex++);
         defaultHostEditor.setTabIndex(nextTabIndex++);
         migrationModeEditor.setTabIndex(nextTabIndex++);
+        overrideMigrationDowntimeEditor.setTabIndex(nextTabIndex++);
+        migrationDowntimeEditor.setTabIndex(nextTabIndex++);
         hostCpuEditor.setTabIndex(nextTabIndex++);
 
         // ==High Availability Tab==
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 c636bc9..7a8f9de 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
@@ -15,36 +15,40 @@
 
     <ui:style 
type="org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractVmPopupWidget.Style">
 
-               .sectionPanel {
-                       margin-bottom: 20px;
-               }
+      .sectionPanel {
+        margin-bottom: 20px;
+      }
 
-        .sectionPanelTight {
-            margin-bottom: 6px;
-            float: left;
-            width: 100%;
-        }
+      .sectionPanelTight {
+        margin-bottom: 6px;
+        float: left;
+        width: 100%;
+      }
 
-               .sectionLabel {
-                       font-weight: bold;
-                       margin-top: 10px;
-                       margin-bottom: 5px;
-               }
+      .sectionLabel {
+        font-weight: bold;
+        margin-top: 10px;
+        margin-bottom: 5px;
+      }
 
-               .sectionComment {
-                       margin-top: 10px;
-                       margin-left: 5px;
-                       font-style: italic;
-               }
+      .sectionComment {
+        margin-top: 10px;
+        margin-left: 5px;
+        font-style: italic;
+      }
 
-               .horizontallyAlignedCheckBox {
-                       float: left;
-                       padding-right: 15px;
-               }
+      .horizontallyAlignedCheckBox {
+        float: left;
+        padding-right: 15px;
+      }
 
-               .horizontallyAlignedCheckBoxContent {
-<!--                   turns off the original styles -->
-               }
+      .horizontallyAlignedCheckBoxContent {
+      }
+
+      .migrationDowntime {
+
+      }
+      <!--                     turns off the original styles -->
 
                .checkboxWithLongLabel,.checkbox {
                        margin-left: -9px;
@@ -495,6 +499,10 @@
                                                <g:VerticalPanel width="100%" 
addStyleNames="{style.hostRunMigrationOptions}">
                                                        
<e:ListModelListBoxEditor ui:field="migrationModeEditor" 
addStyleNames="{style.migrationSelect}"/>
                                                        
<ge:EntityModelCheckBoxEditor ui:field="hostCpuEditor" 
addStyleNames="{style.checkbox}" />
+              <g:FlowPanel>
+                <ge:OverridableEntityEditor 
ui:field="overrideMigrationDowntimeEditor" addStyleNames="{style.checkbox}" />
+                <ge:IntegerEntityModelTextBoxOnlyEditor 
ui:field="migrationDowntimeEditor" addStyleNames="{style.migrationDowntime}" />
+              </g:FlowPanel>
                                                </g:VerticalPanel>
                                        </g:FlowPanel>
                                </t:content>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index 749fae5..6a46857 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -461,6 +461,7 @@
         
template.setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem());
         template.setCreatedByUserId(selectedItem.getCreatedByUserId());
         template.setSingleQxlPci(model.getIsSingleQxlEnabled().getEntity());
+        
template.setMigrationDowntime(model.getMigrationDowntime().getEntity());
 
         if (model.getQuota().getIsAvailable() && 
model.getQuota().getSelectedItem() != null) {
             template.setQuotaId(model.getQuota().getSelectedItem().getId());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
index 4148a62..63bc5c3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
@@ -624,6 +624,7 @@
         tempVar.setKernelUrl(vm.getKernelUrl());
         tempVar.setKernelParams(vm.getKernelParams());
         tempVar.setVncKeyboardLayout(vm.getVncKeyboardLayout());
+        tempVar.setMigrationDowntime(vm.getMigrationDowntime());
         VM newvm = tempVar;
 
         EntityModel<DisplayType> displayProtocolSelectedItem = 
model.getDisplayProtocol().getSelectedItem();
@@ -1069,6 +1070,7 @@
         }
 
         gettempVm().setCpuPinning(model.getCpuPinning().getEntity());
+        
gettempVm().setMigrationDowntime(model.getMigrationDowntime().getEntity());
 
         VDS defaultHost = model.getDefaultHost().getSelectedItem();
         if (model.getIsAutoAssign().getEntity())
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
index b5c9849..9285669 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java
@@ -262,6 +262,8 @@
 
         getModel().getCpuPinning().setEntity(vm.getCpuPinning());
         initPriority(vm.getPriority());
+
+        getModel().getMigrationDowntime().setEntity(vm.getMigrationDowntime());
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
index ae01221..b501a13 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java
@@ -240,6 +240,7 @@
         getModel().getUsbPolicy().setSelectedItem(this.vm.getUsbPolicy());
         
getModel().getIsSmartcardEnabled().setEntity(this.vm.isSmartcardEnabled());
         
getModel().getVncKeyboardLayout().setSelectedItem(this.vm.getVncKeyboardLayout());
+        
getModel().getMigrationDowntime().setEntity(this.vm.getMigrationDowntime());
 
         initPriority(this.vm.getPriority());
     }
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 1d5f39c..9d72807 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
@@ -110,6 +110,7 @@
 
             
getModel().getIsDeleteProtected().setEntity(template.isDeleteProtected());
             getModel().selectSsoMethod(template.getSsoMethod());
+            
getModel().getMigrationDowntime().setEntity(template.getMigrationDowntime());
 
             getModel().getIsStateless().setEntity(template.isStateless());
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
index 03491e8..565074b 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java
@@ -171,6 +171,7 @@
         getModel().selectSsoMethod(this.template.getSsoMethod());
         
getModel().getIsSmartcardEnabled().setEntity(this.template.isSmartcardEnabled());
         
getModel().getVncKeyboardLayout().setSelectedItem(this.template.getVncKeyboardLayout());
+        
getModel().getMigrationDowntime().setEntity(this.template.getMigrationDowntime());
 
         
getModel().getKernel_parameters().setEntity(this.template.getKernelParams());
         getModel().getKernel_path().setEntity(this.template.getKernelUrl());
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 eb516fa..6f5647d 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
@@ -989,6 +989,16 @@
         migrationMode = value;
     }
 
+    private NotChangableForVmInPoolEntityModel<Integer> migrationDowntime;
+
+    public EntityModel<Integer> getMigrationDowntime() {
+        return migrationDowntime;
+    }
+
+    private void 
setMigrationDowntime(NotChangableForVmInPoolEntityModel<Integer> value) {
+        migrationDowntime = value;
+    }
+
     private NotChangableForVmInPoolEntityModel<Boolean> 
privateIsTemplatePublic;
 
     public EntityModel<Boolean> getIsTemplatePublic()
@@ -1276,6 +1286,9 @@
         setMigrationMode(new 
NotChangableForVmInPoolListModel<MigrationSupport>());
         getMigrationMode().getSelectedItemChangedEvent().addListener(this);
 
+        setMigrationDowntime(new 
NotChangableForVmInPoolEntityModel<Integer>());
+        getMigrationDowntime().getEntityChangedEvent().addListener(this);
+
         setHostCpu(new NotChangableForVmInPoolEntityModel<Boolean>());
         getHostCpu().getEntityChangedEvent().addListener(this);
 
@@ -1509,7 +1522,6 @@
             }
         }
     }
-
     private void vmTypeChanged() {
         behavior.vmTypeChanged(getVmType().getSelectedItem());
     }
@@ -1546,25 +1558,23 @@
     protected void initNumOfMonitors()
     {
         AsyncDataProvider.getNumOfMonitorList(new AsyncQuery(this,
-                new INewAsyncCallback() {
-                    @Override
-                    public void onSuccess(Object target, Object returnValue) {
+                                                             new 
INewAsyncCallback() {
+                                                                 @Override
+                                                                 public void 
onSuccess(Object target, Object returnValue) {
 
-                        UnitVmModel model = (UnitVmModel) target;
-                        Integer oldNumOfMonitors = null;
-                        if (model.getNumOfMonitors().getSelectedItem() != null)
-                        {
-                            oldNumOfMonitors = 
model.getNumOfMonitors().getSelectedItem();
-                        }
-                        ArrayList<Integer> numOfMonitors = 
(ArrayList<Integer>) returnValue;
-                        model.getNumOfMonitors().setItems(numOfMonitors);
-                        if (oldNumOfMonitors != null)
-                        {
-                            
model.getNumOfMonitors().setSelectedItem(oldNumOfMonitors);
-                        }
+                                                                     
UnitVmModel model = (UnitVmModel) target;
+                                                                     Integer 
oldNumOfMonitors = null;
+                                                                     if 
(model.getNumOfMonitors().getSelectedItem() != null) {
+                                                                         
oldNumOfMonitors = model.getNumOfMonitors().getSelectedItem();
+                                                                     }
+                                                                     
ArrayList<Integer> numOfMonitors = (ArrayList<Integer>) returnValue;
+                                                                     
model.getNumOfMonitors().setItems(numOfMonitors);
+                                                                     if 
(oldNumOfMonitors != null) {
+                                                                         
model.getNumOfMonitors().setSelectedItem(oldNumOfMonitors);
+                                                                     }
 
-                    }
-                }, getHash()));
+                                                                 }
+                                                             }, getHash()));
 
     }
 
@@ -1622,29 +1632,29 @@
     private void initMinimalVmMemSize()
     {
         AsyncDataProvider.getMinimalVmMemSize(new AsyncQuery(this,
-                new INewAsyncCallback() {
-                    @Override
-                    public void onSuccess(Object target, Object returnValue) {
+                                                             new 
INewAsyncCallback() {
+                                                                 @Override
+                                                                 public void 
onSuccess(Object target, Object returnValue) {
 
-                        UnitVmModel vmModel = (UnitVmModel) target;
-                        vmModel.set_MinMemSize((Integer) returnValue);
+                                                                     
UnitVmModel vmModel = (UnitVmModel) target;
+                                                                     
vmModel.set_MinMemSize((Integer) returnValue);
 
-                    }
-                }, getHash()));
+                                                                 }
+                                                             }, getHash()));
     }
 
     private void initMaximalVmMemSize32OS()
     {
         AsyncDataProvider.getMaximalVmMemSize32OS(new AsyncQuery(this,
-                new INewAsyncCallback() {
-                    @Override
-                    public void onSuccess(Object target, Object returnValue) {
+                                                                 new 
INewAsyncCallback() {
+                                                                     @Override
+                                                                     public 
void onSuccess(Object target, Object returnValue) {
 
-                        UnitVmModel vmModel = (UnitVmModel) target;
-                        vmModel.set_MaxMemSize32((Integer) returnValue);
+                                                                         
UnitVmModel vmModel = (UnitVmModel) target;
+                                                                         
vmModel.set_MaxMemSize32((Integer) returnValue);
 
-                    }
-                }, getHash()));
+                                                                     }
+                                                                 }, 
getHash()));
     }
 
     private void updateMaximalVmMemSize()
@@ -1833,7 +1843,7 @@
                 }
             };
             AsyncDataProvider.getVmWatchdogTypes(osType,
-                    cluster.getcompatibility_version(), asyncQuery);
+                                                 
cluster.getcompatibility_version(), asyncQuery);
         }
     }
 
@@ -2298,7 +2308,7 @@
 
         setIsFirstRunTabValid(getDomain().getIsValid() && 
getTimeZone().getIsValid());
         setIsDisplayTabValid(getUsbPolicy().getIsValid() && 
getNumOfMonitors().getIsValid() && getSpiceProxy().getIsValid());
-        setIsHostTabValid(getDefaultHost().getIsValid());
+        setIsHostTabValid(getDefaultHost().getIsValid() && 
getMigrationDowntime().getIsValid());
         setIsAllocationTabValid(getDisksAllocationModel().getIsValid() && 
getMinAllocatedMemory().getIsValid()
                 && getCpuSharesAmount().getIsValid());
         setIsBootSequenceTabValid(getCdImage().getIsValid() && 
getKernel_path().getIsValid());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index 15b2754..af3e8f7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -606,6 +606,8 @@
 
         
getcurrentVm().setVncKeyboardLayout(model.getVncKeyboardLayout().getSelectedItem());
 
+        
getcurrentVm().setMigrationDowntime(model.getMigrationDowntime().getEntity());
+
         EntityModel<DisplayType> displayProtocolSelectedItem = 
model.getDisplayProtocol().getSelectedItem();
         
getcurrentVm().setDefaultDisplayType(displayProtocolSelectedItem.getEntity());
 


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

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

Reply via email to