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
