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

Reply via email to