Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Acknowledge labels in Setup Networks dialog
......................................................................

webadmin: Acknowledge labels in Setup Networks dialog

Modified the Setup Networks initiation to also take into account
network labels, i.e. to create corresponding panels and populate them
with their related networks.

Change-Id: I4e7d712fcae59b4e03ff365408161f5472dc235d
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkItemModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkLabelModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkGroup.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkLabelPanel.java
7 files changed, 197 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/71/22971/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java
index 36ee175..1280044 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java
@@ -6,6 +6,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeSet;
 
 import org.ovirt.engine.core.common.action.SetupNetworksParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -36,6 +37,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkCommand;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkInterfaceModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkItemModel;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkLabelModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkOperation;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkOperationFactory;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkOperationFactory.OperationMap;
@@ -117,6 +119,8 @@
 
     private Map<String, LogicalNetworkModel> networkMap;
 
+    private Map<String, NetworkLabelModel> labelMap;
+
     private final List<String> networksToSync = new ArrayList<String>();
 
     // The purpose of this map is to keep the network parameters while moving 
the network from one nic to another
@@ -128,6 +132,7 @@
     private final Map<String, NetworkParameters> netToBeforeSyncParams;
     private final SearchableListModel sourceListModel;
     private List<VdsNetworkInterface> allBonds;
+    private Collection<String> dcLabels;
     private NetworkOperation currentCandidate;
     private NetworkItemModel<?> currentOp1;
     private NetworkItemModel<?> currentOp2;
@@ -136,6 +141,7 @@
     private final UICommand okCommand;
     public static final String NIC = "nic"; //$NON-NLS-1$
     public static final String NETWORK = "network"; //$NON-NLS-1$
+    public static final String LABEL = "label"; //$NON-NLS-1$
 
     public HostSetupNetworksModel(SearchableListModel listModel) {
         this.sourceListModel = listModel;
@@ -515,8 +521,17 @@
 
     private void initNetworkModels() {
         Map<String, LogicalNetworkModel> networkModels = new HashMap<String, 
LogicalNetworkModel>();
+        labelMap = new HashMap<String, NetworkLabelModel>();
         for (Network network : allNetworks) {
-            networkModels.put(network.getName(), new 
LogicalNetworkModel(network, this));
+            LogicalNetworkModel networkModel = new 
LogicalNetworkModel(network, this);
+            networkModels.put(network.getName(), networkModel);
+
+            NetworkLabelModel labelModel = labelMap.get(network.getLabel());
+            if (labelModel == null) {
+                labelModel = new NetworkLabelModel(network.getLabel(), this);
+                labelMap.put(network.getLabel(), labelModel);
+            }
+            labelModel.getNetworks().add(networkModel);
         }
         setNetworks(networkModels);
     }
@@ -548,6 +563,20 @@
 
             if (isPhysicalInterface) {
                 physicalNics.add(nic);
+                for (String label : nic.getLabels()) {
+                    NetworkLabelModel labelModel = labelMap.get(label);
+                    if (labelModel != null) {
+                        List<LogicalNetworkModel> nicNetworks = 
nicToNetwork.get(nicName);
+                        if (nicNetworks == null) {
+                            nicNetworks = new ArrayList<LogicalNetworkModel>();
+                            nicToNetwork.put(nicName, nicNetworks);
+                        }
+                        nicNetworks.add(labelModel);
+                        for (LogicalNetworkModel networkModel : 
labelModel.getNetworks()) {
+                            networkModel.attachViaLabel();
+                        }
+                    }
+                }
             }
 
             // is the nic bonded?
@@ -588,19 +617,20 @@
                 } else {
                     ifName = nicName;
                 }
-                Collection<LogicalNetworkModel> nicNetworks = new 
ArrayList<LogicalNetworkModel>();
-                nicNetworks.add(networkModel);
+                Collection<LogicalNetworkModel> bridgeNetworks = new 
ArrayList<LogicalNetworkModel>();
+                bridgeNetworks.add(networkModel);
                 // set iface bridge to network
                 NetworkInterfaceModel existingEridge = 
networkModel.getVlanNic();
                 assert existingEridge == null : "should have only one bridge, 
but found " + existingEridge; //$NON-NLS-1$
-                networkModel.setBridge(new NetworkInterfaceModel(nic, 
nicNetworks, this));
+                networkModel.setBridge(new NetworkInterfaceModel(nic, 
bridgeNetworks, this));
 
-                if (nicToNetwork.containsKey(ifName)) {
-                    nicToNetwork.get(ifName).add(networkModel);
-                } else {
-                    List<LogicalNetworkModel> bridgedNetworks = new 
ArrayList<LogicalNetworkModel>();
-                    bridgedNetworks.add(networkModel);
-                    nicToNetwork.put(ifName, bridgedNetworks);
+                if 
(!nicMap.get(ifName).getLabels().contains(networkModel.getEntity().getLabel())) 
{
+                    List<LogicalNetworkModel> nicNetworks = 
nicToNetwork.get(ifName);
+                    if (nicNetworks == null) {
+                        nicNetworks = new ArrayList<LogicalNetworkModel>();
+                        nicToNetwork.put(ifName, nicNetworks);
+                    }
+                    nicNetworks.add(networkModel);
                 }
 
                 if (!networkModel.isInSync() && networkModel.isManaged()) {
@@ -648,6 +678,18 @@
         setNics(nicModels);
     }
 
+    private void queryLabels() {
+        
AsyncDataProvider.getNetworkLabelsByDataCenterId(getEntity().getStoragePoolId(),
 new AsyncQuery(new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                dcLabels = (Collection<String>) returnValue;
+
+                initNicModels();
+                stopProgress();
+            }
+        }));
+    }
+
     private void queryFreeBonds() {
         // query for all unused, existing bonds on the host
         AsyncQuery asyncQuery = new AsyncQuery();
@@ -660,8 +702,8 @@
                         (List<VdsNetworkInterface>) ((VdcQueryReturnValue) 
returnValue).getReturnValue();
                 allBonds = bonds;
 
-                initNicModels();
-                stopProgress();
+                // chain the DC labels query
+                queryLabels();
             }
         };
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java
index 8b6600b..843c8c3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java
@@ -19,6 +19,7 @@
 
     private boolean selected;
     private boolean management;
+    private boolean attachedViaLabel;
     private NetworkInterfaceModel attachedToNic;
     private NetworkInterfaceModel vlanNic;
 
@@ -32,6 +33,10 @@
         if 
(HostInterfaceListModel.ENGINE_NETWORK_NAME.equals(network.getName())) {
             setManagement(true);
         }
+    }
+
+    public void attachViaLabel() {
+        attachedViaLabel = true;
     }
 
     /**
@@ -201,7 +206,7 @@
     }
 
     public boolean isAttached() {
-        return attachedToNic != null;
+        return attachedToNic != null || attachedViaLabel;
     }
 
     public boolean isManagement() {
@@ -235,7 +240,7 @@
     }
 
     public NetworkImplementationDetails getNetworkImplementationDetails() {
-        if (!isAttached()) {
+        if (attachedToNic == null) {
             return null;
         }
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkItemModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkItemModel.java
index 2c29881..64ff065 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkItemModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkItemModel.java
@@ -25,9 +25,17 @@
         this.setupModel = setupModel;
     }
 
+    protected int getMajorSortKey() {
+        return 1;
+    }
+
     @Override
     public int compareTo(NetworkItemModel<T> o) {
-        return LexoNumericComparator.comp(getName(), o.getName());
+        if (getMajorSortKey() == o.getMajorSortKey()) {
+            return LexoNumericComparator.comp(getName(), o.getName());
+        } else {
+            return getMajorSortKey() < o.getMajorSortKey() ? -1 : 1;
+        }
     }
 
     public String getError() {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkLabelModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkLabelModel.java
new file mode 100644
index 0000000..e8fd413
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkLabelModel.java
@@ -0,0 +1,44 @@
+package org.ovirt.engine.ui.uicommonweb.models.hosts.network;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.HostSetupNetworksModel;
+
+public class NetworkLabelModel extends LogicalNetworkModel {
+
+    private final String label;
+    private final List<LogicalNetworkModel> labelNetworks;
+
+    public NetworkLabelModel(String label, HostSetupNetworksModel setupModel) {
+        super(setupModel);
+        this.label = label;
+        labelNetworks = new ArrayList<LogicalNetworkModel>();
+    }
+
+    @Override
+    public String getName() {
+        return label;
+    }
+
+    @Override
+    public NetworkStatus getStatus() {
+        return null;
+    }
+
+    @Override
+    public String getType() {
+        return HostSetupNetworksModel.LABEL;
+    }
+
+    @Override
+    protected int getMajorSortKey() {
+        return 0;
+    }
+
+    public List<LogicalNetworkModel> getNetworks() {
+        return labelNetworks;
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java
index a52fe45..ab0fe4f 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/NetworkOperationFactory.java
@@ -41,7 +41,12 @@
      * @return
      */
     public static NetworkOperation operationFor(NetworkItemModel<?> op1, 
NetworkItemModel<?> op2, boolean isDrag) {
-        // first of all, if the network is external then there's no valid 
operation for it
+        // no valid operation for network labels
+        if (op1 instanceof NetworkLabelModel) {
+            return NetworkOperation.NULL_OPERATION;
+        }
+
+        // no valid operation for external networks
         if (op1 instanceof LogicalNetworkModel) {
             LogicalNetworkModel network = (LogicalNetworkModel) op1;
             if (network.getEntity().isExternal()) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkGroup.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkGroup.java
index 083806e..8a3a479 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkGroup.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkGroup.java
@@ -7,6 +7,7 @@
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.BondNetworkInterfaceModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.LogicalNetworkModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkInterfaceModel;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkLabelModel;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
 import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider;
 
@@ -77,7 +78,11 @@
             flexCellFormatter.setRowSpan(0, 0, networkSize);
             FlexTable networkTable = new FlexTable();
             for (int i = 0; i < networkSize; i++) {
-                networkTable.setWidget(i, 0, new 
InternalNetworkPanel(networks.get(i), style));
+                if (networks.get(i) instanceof NetworkLabelModel) {
+                    networkTable.setWidget(i, 0, new 
NetworkLabelPanel((NetworkLabelModel) networks.get(i), style));
+                } else {
+                    networkTable.setWidget(i, 0, new 
InternalNetworkPanel(networks.get(i), style));
+                }
             }
             networkTable.setWidth("100%"); //$NON-NLS-1$
             table.setWidget(0, 2, networkTable);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkLabelPanel.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkLabelPanel.java
new file mode 100644
index 0000000..080a5f0
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkLabelPanel.java
@@ -0,0 +1,71 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.host.panels;
+
+import java.util.Collections;
+import java.util.List;
+
+import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.LogicalNetworkModel;
+import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkLabelModel;
+
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.HTMLTable.ColumnFormatter;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class NetworkLabelPanel extends NetworkPanel {
+
+    public NetworkLabelPanel(NetworkLabelModel item, NetworkPanelsStyle style) 
{
+        super(item, style, false);
+    }
+
+    @Override
+    protected Widget getContents() {
+        VerticalPanel vPanel = new VerticalPanel();
+        vPanel.setSpacing(5);
+        vPanel.setWidth("100%"); //$NON-NLS-1$
+
+        Grid titleRow = new Grid(1, 2);
+        titleRow.setCellSpacing(3);
+
+        ColumnFormatter columnFormatter = titleRow.getColumnFormatter();
+        columnFormatter.setWidth(0, "30px"); //$NON-NLS-1$
+        columnFormatter.setWidth(1, "100%"); //$NON-NLS-1$
+        titleRow.setWidth("100%"); //$NON-NLS-1$
+        titleRow.setHeight("27px"); //$NON-NLS-1$
+
+        Label titleLabel = new Label(item.getName());
+        titleLabel.setHeight("100%"); //$NON-NLS-1$
+        Image labelImage = new Image(resources.bond());
+
+        titleRow.setWidget(0, 0, labelImage);
+        titleRow.setWidget(0, 1, titleLabel);
+        titleRow.setCellSpacing(3);
+        titleRow.setCellPadding(3);
+        vPanel.add(titleRow);
+
+        getElement().addClassName(style.bondPanel());
+        List<LogicalNetworkModel> networks = ((NetworkLabelModel) 
item).getNetworks();
+        Collections.sort(networks);
+
+        for (LogicalNetworkModel network : networks) {
+            InternalNetworkPanel networkPanel = new 
InternalNetworkPanel(network, style);
+            networkPanel.parentPanel = this;
+            vPanel.add(networkPanel);
+        }
+
+        return vPanel;
+    }
+
+    @Override
+    protected void onAction() {
+        // Do nothing
+    }
+
+    @Override
+    protected ImageResource getStatusImage() {
+        return null;
+    }
+
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4e7d712fcae59b4e03ff365408161f5472dc235d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <lver...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to