Tomas Jelinek has uploaded a new change for review. Change subject: adding nic selection to new VM dialog ......................................................................
adding nic selection to new VM dialog Change-Id: I21d59e227936734cf3689d16390f34731a4f0670 Signed-off-by: Tomas Jelinek <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworksEditor.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 A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/DiskListVmToUnitBuilder.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewImageModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NicWithLogicalNetworks.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/VmInterfaceModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/ConsoleUtils.java 22 files changed, 503 insertions(+), 156 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/13272/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java index 96a753d..42e86c8 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/uicommon/SpicePluginImpl.java @@ -131,6 +131,7 @@ var disableEffects = [email protected]::disableEffectsAsString()(); var spiceProxy = [email protected]::getSpiceProxy()(); var model = this; + alert(sendCtrlAltDelete); //alert("Smartcard ["+smartcardEnabled+"] disableEffects ["+disableEffects+"], wanOptionsEnabled ["+wanOptionsEnabled+"], colorDepth ["+colorDepth+"], Host IP ["+hostIp+"], port ["+port+"], fullScreen ["+fullScreen+"], password ["+password+"], numberOfMonitors ["+numberOfMonitors+"], Usb Listen Port ["+usbListenPort+"], Admin Console ["+adminConsole+"], Guest HostName ["+guestHostName+"], Secure Port ["+securePort+"], Ssl Chanels ["+sslChanels+"], cipherSuite ["+cipherSuite+"], Host Subject ["+hostSubject+"], Title [" + title+"], Hot Key ["+hotKey+"], Menu ["+menu+"], GuestID [" + guestID+"], version ["+version+"]"); [email protected]::loadXpi(Ljava/lang/String;)(id); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.java index c36f14b..e586e50 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.java @@ -1,7 +1,13 @@ package org.ovirt.engine.ui.common.widget.network; +import java.util.Collection; + +import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.ui.common.idhandler.HasElementId; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; +import org.ovirt.engine.ui.common.widget.editor.TakesConstrainedValueEditor; +import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; +import org.ovirt.engine.ui.uicommonweb.models.vms.NicWithLogicalNetworks; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.IsEditor; @@ -12,18 +18,31 @@ import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; -public class LogicalNetworkEditor extends Composite implements IsEditor<TakesValueEditor<String>>, TakesValue<String>, HasElementId { +public class LogicalNetworkEditor extends Composite implements IsEditor<TakesValueEditor<NicWithLogicalNetworks>>, TakesValue<NicWithLogicalNetworks>, HasElementId { interface WidgetUiBinder extends UiBinder<Widget, LogicalNetworkEditor> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } - @UiField - ListModelListBoxEditor<Object> logicalNetwork; + @UiField(provided = true) + ListModelListBoxEditor<Network> logicalNetworkEditor; + + private NicWithLogicalNetworks nicWithNetworks; public LogicalNetworkEditor(String elementId) { + logicalNetworkEditor = new ListModelListBoxEditor<Network>( + new NullSafeRenderer<Network>() { + @Override + public String renderNullSafe(Network network) { + if (network.getName() == null) { + return "No Network"; //$NON-NLS-1$ + } + return ((Network) network).getName(); + } + } + ); + initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); - logicalNetwork.setLabel("some network");//$NON-NLS-1$ } @Override @@ -32,17 +51,23 @@ } @Override - public void setValue(String value) { - + public void setValue(NicWithLogicalNetworks nicWithNetworks) { + this.nicWithNetworks = nicWithNetworks; + logicalNetworkEditor.setLabel(nicWithNetworks.getNetworkInterface().getName()); + logicalNetworkEditor.asEditor().getSubEditor().setValue((Network) nicWithNetworks.getSelectedItem()); + ((TakesConstrainedValueEditor<Network>) logicalNetworkEditor.asEditor().getSubEditor()).setAcceptableValues((Collection<Network>) nicWithNetworks.getItems()); } @Override - public String getValue() { - return null; + public NicWithLogicalNetworks getValue() { + // flush + Network network = logicalNetworkEditor.asEditor().getSubEditor().getValue(); + nicWithNetworks.getNetworkInterface().setNetworkName(network.getName()); + return nicWithNetworks; } @Override - public TakesValueEditor<String> asEditor() { + public TakesValueEditor<NicWithLogicalNetworks> asEditor() { return null; } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.ui.xml index 6f886f4..f8afe01 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworkEditor.ui.xml @@ -11,7 +11,7 @@ </ui:style> <g:FlowPanel addStyleNames="{style.mainPanel}"> - <e:ListModelListBoxEditor ui:field="logicalNetwork" /> + <e:ListModelListBoxEditor ui:field="logicalNetworkEditor" /> </g:FlowPanel> </ui:UiBinder> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworksEditor.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworksEditor.java index 72e56db..8656cf6 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworksEditor.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/network/LogicalNetworksEditor.java @@ -1,6 +1,10 @@ package org.ovirt.engine.ui.common.widget.network; +import java.util.ArrayList; +import java.util.List; + import org.ovirt.engine.ui.common.idhandler.HasElementId; +import org.ovirt.engine.ui.uicommonweb.models.vms.NicWithLogicalNetworks; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.IsEditor; @@ -14,7 +18,7 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; -public class LogicalNetworksEditor extends Composite implements IsEditor<TakesValueEditor<Iterable<String>>>, TakesValue<Iterable<String>>, HasElementId { +public class LogicalNetworksEditor extends Composite implements IsEditor<TakesValueEditor<List<NicWithLogicalNetworks>>>, TakesValue<List<NicWithLogicalNetworks>>, HasElementId { interface WidgetUiBinder extends UiBinder<Widget, LogicalNetworksEditor> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); @@ -28,26 +32,39 @@ @UiField Label headerLabel; - private Iterable<String> values; + private List<LogicalNetworkEditor> editors; public LogicalNetworksEditor() { initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); + editors = new ArrayList<LogicalNetworkEditor>(); headerLabel.setText("Assign Logical Networks");//$NON-NLS-1$ - contentPanel.add(new LogicalNetworkEditor(elementId)); } @Override - public void setValue(Iterable<String> values) { - this.values = values; + public void setValue(List<NicWithLogicalNetworks> values) { + if(values == null) { + return; + } + + for (NicWithLogicalNetworks value : values) { + LogicalNetworkEditor networkEditor = new LogicalNetworkEditor(elementId); + editors.add(networkEditor); + networkEditor.setValue(value); + contentPanel.add(networkEditor); + } } @Override - public Iterable<String> getValue() { + public List<NicWithLogicalNetworks> getValue() { + List<NicWithLogicalNetworks> values = new ArrayList<NicWithLogicalNetworks>(); + for (LogicalNetworkEditor editor : editors) { + values.add(editor.getValue()); + } return values; } @Override - public TakesValueEditor<Iterable<String>> asEditor() { + public TakesValueEditor<List<NicWithLogicalNetworks>> asEditor() { return TakesValueEditor.of(this); } 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 fabf3d8..788f1b2 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 @@ -36,6 +36,7 @@ import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxOnlyEditor; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.form.key_value.KeyValueWidget; +import org.ovirt.engine.ui.common.widget.network.LogicalNetworksEditor; import org.ovirt.engine.ui.common.widget.parser.MemorySizeParser; import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; import org.ovirt.engine.ui.common.widget.renderer.MemorySizeRenderer; @@ -481,6 +482,13 @@ @UiField @Ignore Panel generalAdvancedParameterExpanderContent; + + @UiField + Panel logicalNetworksEditorPanel; + + @UiField + @Path(value = "nicWithLogicalNetworks") + LogicalNetworksEditor logicalNetworksEditor; private VmPopupWidgetConfigMap widgetConfiguration; @@ -938,6 +946,18 @@ } }); + // TODO move this into the presenter widget + object.getPropertyChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + PropertyChangedEventArgs e = (PropertyChangedEventArgs) args; + if (e.PropertyName == "nicWithLogicalNetworks") { //$NON-NLS-1$ + logicalNetworksEditor.setValue(object.getNicWithLogicalNetworks()); + } + } + + }); + updateUsbNativeMessageVisibility(object); } @@ -1114,6 +1134,8 @@ @Override public UnitVmModel flush() { priorityEditor.flush(); + // flush also this + logicalNetworksEditor.getValue(); return Driver.driver.flush(); } 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 cdd64a4..eb56aba 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 @@ -5,7 +5,8 @@ xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab" xmlns:s="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage" - xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value"> + xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value" + xmlns:n="urn:import:org.ovirt.engine.ui.common.widget.network"> <ui:with field='constants' type='org.ovirt.engine.ui.common.CommonApplicationConstants'/> @@ -281,8 +282,8 @@ <e:ListModelListBoxEditor ui:field="instanceTypeEditor" /> <e:ListModelListBoxEditor ui:field="imageTypeEditor" /> </g:FlowPanel> - <g:FlowPanel addStyleNames="{style.sectionPanel}"> - + <g:FlowPanel ui:field="logicalNetworksEditorPanel" addStyleNames="{style.sectionPanel}"> + <n:LogicalNetworksEditor ui:field="logicalNetworksEditor" /> </g:FlowPanel> <g:Label ui:field="generalWarningMessage" addStyleNames="{style.warningMessageLabel}" /> </g:FlowPanel> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java new file mode 100644 index 0000000..c39582b --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/AddNullNetworkBuilder.java @@ -0,0 +1,59 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class AddNullNetworkBuilder extends BaseSyncBuilder<List<VmNetworkInterface>, List<? extends ListModel>> { + + private final VDSGroup cluster; + + public AddNullNetworkBuilder(VDSGroup cluster) { + this.cluster = cluster; + } + + @Override + protected void build(List<VmNetworkInterface> source, List<? extends ListModel> destinations) { + if (!isNullNetworkSupported()) { + return; + } + + for (ListModel destination : destinations) { + List<Network> networks = (List<Network>) destination.getItems(); + networks.add(new NullNetwork()); + destination.setItems(networks); + } + } + + private boolean isNullNetworkSupported() { + if (cluster == null || cluster.getcompatibility_version() == null) { + return false; + } + + String clusteVersion = cluster.getcompatibility_version().getValue(); + return (Boolean) AsyncDataProvider.GetConfigValuePreConverted(ConfigurationValues.NetworkLinkingSupported, + clusteVersion); + + } + +} + +/** + * Null object for the network - represents the "no network selected" + */ +class NullNetwork extends Network { + + private static final long serialVersionUID = 1L; + + @Override + public String getName() { + return null; + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java new file mode 100644 index 0000000..59b5343 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/BaseInitSelectedNetworkBuilder.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public abstract class BaseInitSelectedNetworkBuilder extends BaseSyncBuilder<List<VmNetworkInterface>, List<? extends ListModel>> { + @Override + protected void build(List<VmNetworkInterface> source, List<? extends ListModel> destination) { + for (int i = 0; i < source.size(); i++) { + applyForOnePair(source.get(i), destination.get(i)); + } + } + + protected abstract void applyForOnePair(VmNetworkInterface source, ListModel destination); +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java new file mode 100644 index 0000000..f0ad10b --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitEditSelectedNetworkBuilder.java @@ -0,0 +1,35 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.compat.StringHelper; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class InitEditSelectedNetworkBuilder extends BaseInitSelectedNetworkBuilder { + + protected void applyForOnePair(VmNetworkInterface source, ListModel destination) { + List<Network> networks = (List<Network>) destination.getItems(); + networks = networks == null ? new ArrayList<Network>() : networks; + for (Network a : networks) + { + String networkName = a == null ? null : a.getName(); + if (StringHelper.stringsEqual(networkName, source.getNetworkName())) + { + destination.setSelectedItem(a); + return; + } + } + + // In some cases, like importVm the network can be deleted from the nic. + // In these cases, the network can be null even if NetworkLinking is not supported. + // If the user doesn't set the network, when he'll try to run the VM or update/hotPlug the nic he will get a + // canDo. + if (source.getNetworkName() == null) { + destination.setSelectedItem(null); + } + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java new file mode 100644 index 0000000..920d52f --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/InitNewSelectedNetworkBuilder.java @@ -0,0 +1,31 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class InitNewSelectedNetworkBuilder extends BaseInitSelectedNetworkBuilder { + + private String engineNetworkName; + + public InitNewSelectedNetworkBuilder(String engineNetworkName) { + super(); + this.engineNetworkName = engineNetworkName; + } + + protected void applyForOnePair(VmNetworkInterface source, ListModel destination) { + List<Network> networks = (List<Network>) destination.getItems(); + networks = networks == null ? new ArrayList<Network>() : networks; + for (Network network : networks) { + if (engineNetworkName != null && network != null && engineNetworkName.equals(network.getName())) { + destination.setSelectedItem(network); + return; + } + } + + destination.setSelectedItem(networks.size() > 0 ? networks.get(0) : null); + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java new file mode 100644 index 0000000..59d494a --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/network/SetupNetworksBuilder.java @@ -0,0 +1,80 @@ +package org.ovirt.engine.ui.uicommonweb.builders.network; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.NetworkStatus; +import org.ovirt.engine.core.common.utils.LexoNumericComparator; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.builders.Builder; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderList; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class SetupNetworksBuilder<S> implements Builder<S, List<? extends ListModel>> { + + private Guid vdsGroupId; + + private boolean hotUpdateSupported; + + public SetupNetworksBuilder(Guid vdsGroupId, boolean hotUpdateSupported) { + super(); + this.vdsGroupId = vdsGroupId; + this.hotUpdateSupported = hotUpdateSupported; + } + + @Override + public void build(final S source, + final List<? extends ListModel> destination, + final BuilderList<S, List<? extends ListModel>> rest) { + AsyncQuery _asyncQuery = new AsyncQuery(); + _asyncQuery.setModel(this); + _asyncQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void OnSuccess(Object model1, Object result1) + { + ArrayList<Network> networks = new ArrayList<Network>(); + for (Network a : (ArrayList<Network>) result1) + { + if (a.getCluster().getStatus() == NetworkStatus.OPERATIONAL && a.isVmNetwork()) + { + networks.add(a); + } + } + if (hotUpdateSupported) { + networks.add(null); + } + + Collections.sort(networks, new Comparator<Network>() { + + private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); + + @Override + public int compare(Network net1, Network net2) { + if (net1 == null) { + return net2 == null ? 0 : 1; + } else if (net2 == null) { + return -1; + } + return lexoNumeric.compare(net1.getName(), net2.getName()); + } + + }); + + for (ListModel destModel : destination) { + destModel.setItems(networks); + } + + rest.head().build(source, destination, rest.tail()); + } + }; + + AsyncDataProvider.GetClusterNetworkList(_asyncQuery, vdsGroupId); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/DiskListVmToUnitBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/DiskListVmToUnitBuilder.java index 5be68ef..fc16473 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/DiskListVmToUnitBuilder.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/template/DiskListVmToUnitBuilder.java @@ -23,7 +23,6 @@ import org.ovirt.engine.ui.uicommonweb.models.vms.NewDiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; import org.ovirt.engine.ui.uicommonweb.models.vms.VmModelHelper; -import org.ovirt.engine.ui.uicompat.external.StringUtils; public class DiskListVmToUnitBuilder implements Builder<VM, UnitVmModel> { @@ -51,31 +50,16 @@ } InitDisks(disks, destination); - sendWarningForNonExportableDisks(nonExportableDisks, destination); + // TODO fixme - what is the correct warning type? + VmModelHelper.sendWarningForNonExportableDisks(destination, + disks, + VmModelHelper.WarningType.VM_EXPORT); rest.head().build(source, destination, rest.tail()); } }, destination.getHash()), source.getId(), true); - } - - private void sendWarningForNonExportableDisks(List<Disk> nonExportableDisks, UnitVmModel destination) { - if (!nonExportableDisks.isEmpty()) { - final List<String> list = new ArrayList<String>(); - for (Disk disk : nonExportableDisks) { - list.add(disk.getDiskAlias()); - } - - final String s = StringUtils.join(list, ", "); //$NON-NLS-1$ - - // append warning message - // TODO what to use instead of VM_SNAPSHOT? - VmModelHelper.sendWarningForNonExportableDisks(destination, - new ArrayList<Disk>(nonExportableDisks), - VmModelHelper.WarningType.VM_SNAPSHOT); - - } } private void InitDisks(ArrayList<Disk> disks, UnitVmModel destination) diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java index 7309eed..50cb838 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseEditVmInterfaceModel.java @@ -1,18 +1,19 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.ovirt.engine.core.common.action.AddVmInterfaceParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmBase; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; -import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.ui.uicommonweb.Cloner; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.InitEditSelectedNetworkBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -82,26 +83,13 @@ } @Override - protected void initSelectedNetwork() { - List<Network> networks = (List<Network>) getNetwork().getItems(); - networks = networks == null ? new ArrayList<Network>() : networks; - for (Network a : networks) - { - String networkName = a == null ? null : a.getName(); - if (StringHelper.stringsEqual(networkName, getNic().getNetworkName())) - { - getNetwork().setSelectedItem(a); - return; - } - } + protected List<VmNetworkInterface> getNics() { + return Arrays.asList(nic); + } - // In some cases, like importVm the network can be deleted from the nic. - // In these cases, the network can be null even if NetworkLinking is not supported. - // If the user doesn't set the network, when he'll try to run the VM or update/hotPlug the nic he will get a - // canDo. - if (getNic().getNetworkName() == null) { - getNetwork().setSelectedItem(null); - } + @Override + protected BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder() { + return new InitEditSelectedNetworkBuilder(); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java index da30130..23a3e62 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/EditVmInterfaceModel.java @@ -1,13 +1,17 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -122,6 +126,13 @@ } } + @SuppressWarnings("unchecked") + protected void initSelectedNetwork() { + new BuilderExecutor<List<VmNetworkInterface>, List<? extends ListModel>>( + getInitSelectedNetworkBuilder() + ).build(getNics(), Arrays.asList(getNetwork())); + } + boolean isVmUp() { return VMStatus.Up.equals(vm.getStatus()); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewImageModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewImageModelBehavior.java index a5ac72f..3fcbdf7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewImageModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewImageModelBehavior.java @@ -37,11 +37,8 @@ new CustomPropertiesUnitToVmBuilder()).build(vm, getModel()); } - @SuppressWarnings("unchecked") @Override public void InitStorageDomains() { - - new BuilderExecutor<VM, UnitVmModel>().build(vm, getModel()); } @SuppressWarnings("unchecked") diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java index 14f7ee7..418ccaa 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmInterfaceModel.java @@ -7,9 +7,10 @@ import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmBase; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.InitNewSelectedNetworkBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; @@ -19,7 +20,7 @@ public static NewVmInterfaceModel createInstance(VmBase vm, Version clusterCompatibilityVersion, ArrayList<VmNetworkInterface> vmNicList, - EntityModel sourceModel){ + EntityModel sourceModel) { NewVmInterfaceModel instance = new NewVmInterfaceModel(vm, clusterCompatibilityVersion, vmNicList, sourceModel); instance.init(); return instance; @@ -73,16 +74,13 @@ } @Override - protected void initSelectedNetwork() { - List<Network> networks = (List<Network>) getNetwork().getItems(); - networks = networks == null ? new ArrayList<Network>() : networks; - for (Network network : networks) { - if (ENGINE_NETWORK_NAME != null && network != null && ENGINE_NETWORK_NAME.equals(network.getName())) { - getNetwork().setSelectedItem(network); - return; - } - } - getNetwork().setSelectedItem(networks.size() > 0 ? networks.get(0) : null); + protected List<VmNetworkInterface> getNics() { + return null; + } + + @Override + protected BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder() { + return new InitNewSelectedNetworkBuilder(ENGINE_NETWORK_NAME); } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java index d1de8a3..7a86e5a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmWithInstanceTypeModelBehavior.java @@ -1,13 +1,24 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.SearchParameters; import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor.BuilderExecutionFinished; import org.ovirt.engine.ui.uicommonweb.builders.generic.QueryToListBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.AddNullNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.InitNewSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.SetupNetworksBuilder; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; // will be removed and it's content merged into NewVmModelBehavior // it is here just to avoid unnecessary conflict solvings @@ -27,4 +38,41 @@ ).build(null, null); } + @Override + public void Cluster_SelectedItemChanged() { + super.Cluster_SelectedItemChanged(); + initNetworkInterfaceToNetwork(); + } + + @SuppressWarnings("unchecked") + protected void initNetworkInterfaceToNetwork() { + final VDSGroup cluster = (VDSGroup) getModel().getCluster().getSelectedItem(); + if (cluster == null) { + return; + } + + String engineNetworkName = + (String) AsyncDataProvider.GetConfigValuePreConverted(ConfigurationValues.ManagementNetwork); + + VmNetworkInterface networkInterface = new VmNetworkInterface(); + networkInterface.setName(AsyncDataProvider.GetNewNicName(null)); + final NicWithLogicalNetworks defaultNictWithLogicalNetworks = + new NicWithLogicalNetworks(networkInterface); + + new BuilderExecutor<List<VmNetworkInterface>, List<? extends ListModel>>( + new BuilderExecutionFinished<List<VmNetworkInterface>, List<? extends ListModel>>() { + + @Override + public void finished(List<VmNetworkInterface> source, List<? extends ListModel> destination) { + getModel().setNicWithLogicalNetworks(Arrays.asList(defaultNictWithLogicalNetworks)); + } + + }, + + new SetupNetworksBuilder<List<VmNetworkInterface>>(cluster.getId(), false), + new AddNullNetworkBuilder((VDSGroup) getModel().getCluster().getSelectedItem()), + new InitNewSelectedNetworkBuilder(engineNetworkName)) + .build(Arrays.asList(networkInterface), Arrays.asList(defaultNictWithLogicalNetworks)); + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NicWithLogicalNetworks.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NicWithLogicalNetworks.java new file mode 100644 index 0000000..3956569 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NicWithLogicalNetworks.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.ui.uicommonweb.models.vms; + +import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; + +public class NicWithLogicalNetworks extends ListModel { + + private VmNetworkInterface networkInterface; + + public NicWithLogicalNetworks(VmNetworkInterface networkInterface) { + super(); + this.networkInterface = networkInterface; + } + + public VmNetworkInterface getNetworkInterface() { + return networkInterface; + } + +} 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 3cdc3d0..330c13e 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 @@ -157,6 +157,17 @@ } } + private List<NicWithLogicalNetworks> nicWithLogicalNetworks; + + public List<NicWithLogicalNetworks> getNicWithLogicalNetworks() { + return nicWithLogicalNetworks; + } + + public void setNicWithLogicalNetworks(List<NicWithLogicalNetworks> nicWithLogicalNetworks) { + this.nicWithLogicalNetworks = nicWithLogicalNetworks; + OnPropertyChanged(new PropertyChangedEventArgs("nicWithLogicalNetworks")); //$NON-NLS-1$ + } + private VmType privateVmType = getVmType().values()[0]; public VmType getVmType() diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java index 097d53f..134fbd8 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceModel.java @@ -1,25 +1,25 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import java.util.Arrays; +import java.util.List; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.VmBase; import org.ovirt.engine.core.common.businessentities.network.Network; -import org.ovirt.engine.core.common.businessentities.network.NetworkStatus; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.queries.ConfigurationValues; -import org.ovirt.engine.core.common.utils.LexoNumericComparator; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; -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.UICommand; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; +import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor.BuilderExecutionFinished; +import org.ovirt.engine.ui.uicommonweb.builders.network.BaseInitSelectedNetworkBuilder; +import org.ovirt.engine.ui.uicommonweb.builders.network.SetupNetworksBuilder; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -370,6 +370,7 @@ } protected abstract VmNetworkInterface createBaseNic(); + private void onSave() { VmNetworkInterface nic = createBaseNic(); @@ -436,50 +437,31 @@ protected abstract VdcActionType getVdcActionType(); + @SuppressWarnings("unchecked") protected void initNetworks() { - AsyncQuery _asyncQuery = new AsyncQuery(); - _asyncQuery.setModel(this); - _asyncQuery.asyncCallback = new INewAsyncCallback() { - @Override - public void OnSuccess(Object model1, Object result1) - { - ArrayList<Network> networks = new ArrayList<Network>(); - for (Network a : (ArrayList<Network>) result1) - { - if (a.getCluster().getStatus() == NetworkStatus.OPERATIONAL && a.isVmNetwork()) - { - networks.add(a); - } - } - if (hotUpdateSupported) { - networks.add(null); - } + new BuilderExecutor<List<VmNetworkInterface>, List<? extends ListModel>>( + // when all data is fetched and set up, this is called + new NetworksInitedCallback(), + // fetch the networks + new SetupNetworksBuilder<List<VmNetworkInterface>>(getVm().getVdsGroupId(), hotUpdateSupported), + // setup the selected item + getInitSelectedNetworkBuilder() + ).build(getNics(), Arrays.asList(getNetwork())); - Collections.sort(networks, new Comparator<Network>() { - - private LexoNumericComparator lexoNumeric = new LexoNumericComparator(); - - @Override - public int compare(Network net1, Network net2) { - if (net1 == null) { - return net2 == null ? 0 : 1; - } else if (net2 == null) { - return -1; - } - return lexoNumeric.compare(net1.getName(), net2.getName()); - } - - }); - - getNetwork().setItems(networks); - initSelectedNetwork(); - - // fetch completed - okCommand.setIsExecutionAllowed(true); - } - }; - AsyncDataProvider.GetClusterNetworkList(_asyncQuery, getVm().getVdsGroupId()); } + + class NetworksInitedCallback implements BuilderExecutionFinished<List<VmNetworkInterface>, List<? extends ListModel>> { + + @Override + public void finished(List<VmNetworkInterface> source, List<? extends ListModel> destination) { + okCommand.setIsExecutionAllowed(true); + } + + } + + protected abstract BaseInitSelectedNetworkBuilder getInitSelectedNetworkBuilder(); + + protected abstract List<VmNetworkInterface> getNics(); protected void initCommands() { okCommand = new UICommand("OnSave", this); //$NON-NLS-1$ @@ -493,8 +475,6 @@ cancelCommand.setIsCancel(true); getCommands().add(cancelCommand); } - - protected abstract void initSelectedNetwork(); protected abstract void initSelectedType(); 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 d55f5c5..7fba23d 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 @@ -11,6 +11,7 @@ import org.ovirt.engine.core.common.VdcActionUtils; import org.ovirt.engine.core.common.action.AddVmFromScratchParameters; import org.ovirt.engine.core.common.action.AddVmFromTemplateParameters; +import org.ovirt.engine.core.common.action.AddVmInterfaceParameters; import org.ovirt.engine.core.common.action.AddVmTemplateParameters; import org.ovirt.engine.core.common.action.AttachEntityToTagParameters; import org.ovirt.engine.core.common.action.ChangeDiskCommandParameters; @@ -1417,7 +1418,9 @@ final ExportVmModel model = (ExportVmModel) target; @SuppressWarnings("unchecked") final ArrayList<Disk> vmDisks = (ArrayList<Disk>) returnValue; - VmModelHelper.sendWarningForNonExportableDisks(model, vmDisks, VmModelHelper.WarningType.VM_EXPORT); + VmModelHelper.sendWarningForNonExportableDisks(model, + vmDisks, + VmModelHelper.WarningType.VM_EXPORT); } }), @@ -1910,7 +1913,7 @@ VM newVm = (VM) Cloner.clone(getSelectedItem()); - newVm.setName((String)model.getName().getEntity()); + newVm.setName((String) model.getName().getEntity()); AddVmTemplateParameters addVmTemplateParameters = new AddVmTemplateParameters(newVm, @@ -2560,6 +2563,7 @@ this); } } + } else // Update existing VM -> consists of editing VM cluster, and if succeeds - editing VM: { @@ -2865,24 +2869,15 @@ } protected void addVm(final UnitVmModel model) { + if (model.getProgress() != null) { + return; + } if (getcurrentVm().getVmtGuid().equals(NGuid.Empty)) { - if (model.getProgress() != null) { - return; - } - addVmFromScratch(model); } else { - if (model.getProgress() != null) { - return; - } - if ((Boolean) model.getProvisioning().getEntity()) { addVmFromTemplateWithProvisioning(model); } else { - if (model.getProgress() != null) { - return; - } - addVmFromTemplateWithoutProvisioning(model); } } @@ -2939,16 +2934,41 @@ VdcReturnValueBase returnValueBase = result.getReturnValue(); if (returnValueBase != null && returnValueBase.getSucceeded()) { - vmListModel.Cancel(); - vmListModel.setGuideContext(returnValueBase.getActionReturnValue()); - vmListModel.UpdateActionAvailability(); - vmListModel.getGuideCommand().Execute(); + Guid createdVmId = (Guid) returnValueBase.getActionReturnValue(); + createNetworks(createdVmId, model.getNicWithLogicalNetworks()); } } + }, this); } + private void createNetworks(final Guid createdVmId, final List<NicWithLogicalNetworks> nicsWithLogicalNetworks) { + + ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); + + for (NicWithLogicalNetworks nicWithNetworks : nicsWithLogicalNetworks) { + parameters.add(new AddVmInterfaceParameters(createdVmId, nicWithNetworks.getNetworkInterface())); + } + + Frontend.RunMultipleAction( + VdcActionType.AddVmInterface, + parameters, + new IFrontendMultipleActionAsyncCallback() { + + @Override + public void Executed(FrontendMultipleActionAsyncResult result) { + Cancel(); + setGuideContext(createdVmId); + UpdateActionAvailability(); + getGuideCommand().Execute(); + } + }, + this + ); + + } + private void UpdateActionAvailability() { List items = diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/ConsoleUtils.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/ConsoleUtils.java index 495b2a9..34f05ce 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/ConsoleUtils.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/widget/basic/ConsoleUtils.java @@ -148,21 +148,23 @@ * @return false if and only if the client OS type is Windows 7 or newer otherwise returns true */ public boolean isCtrlAltDelEnabled() { - if (!isWindowsClient()) { - return true; - } + return false; - float ntVersion = extractNtVersion(getUserAgentString()); +// if (!isWindowsClient()) { +// return true; +// } +// +// float ntVersion = extractNtVersion(getUserAgentString()); +// +// // For Windows 7 and Windows Server 2008 R2 it is NT 6.1 +// // For Windows 8 and Windows Server 2012 it is NT 6.2 +// // The passing of ctrl+alt+del is enabled only on windows older +// // than Windows 7, so NT less than 6.1 +// if (ntVersion >= 6.1f) { +// return false; +// } - // For Windows 7 and Windows Server 2008 R2 it is NT 6.1 - // For Windows 8 and Windows Server 2012 it is NT 6.2 - // The passing of ctrl+alt+del is enabled only on windows older - // than Windows 7, so NT less than 6.1 - if (ntVersion >= 6.1f) { - return false; - } - - return true; +// return true; } private float extractNtVersion(String userAgentType) { -- To view, visit http://gerrit.ovirt.org/13272 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I21d59e227936734cf3689d16390f34731a4f0670 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
