Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: webadmin: Add managemenet network field to new/edit cluster 
dialog
......................................................................

webadmin: Add managemenet network field to new/edit cluster dialog

Add managemenet network field to new/edit cluster dialog.

Change-Id: I055babd6037f127235c349499f1545396e38333f
Signed-off-by: Yevgeny Zaspitsky <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
7 files changed, 157 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/37141/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index 0215c5b..baa912b 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -597,17 +597,30 @@
                 aQuery);
     }
 
+    public void getDefaultManagementNetwork(AsyncQuery aQuery, Guid networkId) 
{
+        aQuery.converterCallback = new AsIsAsyncConverter();
+        Frontend.getInstance().runQuery(
+                VdcQueryType.GetDefaultManagementNetwork,
+                new IdQueryParameters(networkId),
+                aQuery);
+    }
+
+    public void getManagementNetwork(AsyncQuery aQuery, Guid clusterId) {
+        aQuery.converterCallback = new AsIsAsyncConverter();
+        Frontend.getInstance().runQuery(
+                VdcQueryType.GetManagementNetwork,
+                new IdQueryParameters(clusterId),
+                aQuery);
+    }
+
     public void isManagementNetwork(AsyncQuery aQuery, Guid networkId) {
-        runBooleanQueryByEntityId(VdcQueryType.IsManagementNetwork, aQuery, 
networkId);
+        aQuery.converterCallback = new BooleanAsyncConverter();
+        Frontend.getInstance().runQuery(VdcQueryType.IsManagementNetwork, new 
IdQueryParameters(networkId), aQuery);
     }
 
     public void isClusterEmpty(AsyncQuery aQuery, Guid clusterId) {
-        runBooleanQueryByEntityId(VdcQueryType.IsClusterEmpty, aQuery, 
clusterId);
-    }
-
-    private void runBooleanQueryByEntityId(VdcQueryType queryType, AsyncQuery 
aQuery, Guid id) {
         aQuery.converterCallback = new BooleanAsyncConverter();
-        Frontend.getInstance().runQuery(queryType, new IdQueryParameters(id), 
aQuery);
+        Frontend.getInstance().runQuery(VdcQueryType.IsClusterEmpty, new 
IdQueryParameters(clusterId), aQuery);
     }
 
     public void getHostArchitecture(AsyncQuery aQuery, Guid id) {
@@ -3835,4 +3848,12 @@
             return (Boolean) source;
         }
     }
+
+    private static class AsIsAsyncConverter implements IAsyncConverter {
+        @Override
+        public Object Convert(Object source, AsyncQuery _asyncQuery)
+        {
+            return source;
+        }
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
index af8f429..2ee65bd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterListModel.java
@@ -17,6 +17,7 @@
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VmRngDevice;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
@@ -764,9 +765,20 @@
 
         model.startProgress(null);
 
-        Frontend.getInstance().runAction(model.getIsNew() ? 
VdcActionType.AddVdsGroup : VdcActionType.UpdateVdsGroup,
-                model.getIsNew() ? new AddClusterOperationParameters(cluster) :
-                                   new VdsGroupOperationParameters(cluster),
+        final VdsGroupOperationParameters clusterOperationParameters;
+        final VdcActionType actionType;
+        if (model.getIsNew()) {
+            actionType = VdcActionType.AddVdsGroup;
+            final Network managementNetwork = 
model.getManagementNetwork().getSelectedItem();
+            final Guid managementNetworkId = managementNetwork == null ? null 
: managementNetwork.getId();
+            clusterOperationParameters = new 
AddClusterOperationParameters(cluster, managementNetworkId);
+        } else {
+            actionType = VdcActionType.UpdateVdsGroup;
+            clusterOperationParameters = new 
VdsGroupOperationParameters(cluster);
+        }
+        Frontend.getInstance().runAction(
+                actionType,
+                clusterOperationParameters,
                 new IFrontendActionAsyncCallback() {
                     @Override
                     public void executed(FrontendActionAsyncResult result) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
index 662470ba..7b771bd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/clusters/ClusterModel.java
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -16,6 +17,7 @@
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VmRngDevice;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
@@ -35,9 +37,9 @@
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
+import org.ovirt.engine.ui.uicommonweb.models.FilteredListModel;
 import org.ovirt.engine.ui.uicommonweb.models.HasValidatedTabs;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
-import org.ovirt.engine.ui.uicommonweb.models.FilteredListModel;
 import org.ovirt.engine.ui.uicommonweb.models.TabName;
 import org.ovirt.engine.ui.uicommonweb.models.ValidationCompleteEvent;
 import org.ovirt.engine.ui.uicommonweb.models.vms.SerialNumberPolicyModel;
@@ -208,6 +210,16 @@
     public void setDataCenter(ListModel<StoragePool> value)
     {
         privateDataCenter = value;
+    }
+
+    private ListModel<Network> managementNetwork;
+
+    public void setManagementNetwork(ListModel<Network> managementNetwork) {
+        this.managementNetwork = managementNetwork;
+    }
+
+    public ListModel<Network> getManagementNetwork() {
+        return managementNetwork;
     }
 
     private FilteredListModel<ServerCpu> privateCPU;
@@ -1125,6 +1137,14 @@
         setArchitecture(new ListModel<ArchitectureType>());
         
getArchitecture().setIsAvailable(ApplicationModeHelper.isModeSupported(ApplicationMode.VirtOnly));
 
+        setManagementNetwork(new ListModel<Network>());
+        if (isEdit) {
+            
getManagementNetwork().setChangeProhibitionReason(ConstantsManager.getInstance()
+                    .getConstants()
+                    
.prohibitManagementNetworkChangeInEditClusterInfoMessage());
+            getManagementNetwork().setIsChangable(false);
+        }
+
         setCPU(new FilteredListModel<ServerCpu>());
         getCPU().setIsAvailable(ApplicationModeHelper.getUiMode() != 
ApplicationMode.GlusterOnly);
         getCPU().getSelectedItemChangedEvent().addListener(this);
@@ -1293,29 +1313,90 @@
         _asyncQuery.setModel(this);
         _asyncQuery.asyncCallback = new INewAsyncCallback() {
             @Override
-            public void onSuccess(Object model, Object result)
-            {
+            public void onSuccess(Object model, Object result) {
                 ClusterModel clusterModel = (ClusterModel) model;
-                ArrayList<StoragePool> dataCenters = (ArrayList<StoragePool>) 
result;
+                List<StoragePool> dataCenters = (List<StoragePool>) result;
 
                 clusterModel.getDataCenter().setItems(dataCenters);
 
                 clusterModel.getDataCenter().setSelectedItem(null);
-                for (StoragePool a : dataCenters)
-                {
-                    if (clusterModel.getEntity().getStoragePoolId() != null
-                            && 
a.getId().equals(clusterModel.getEntity().getStoragePoolId()))
-                    {
-                        clusterModel.getDataCenter().setSelectedItem(a);
+                final Guid dataCenterId = 
clusterModel.getEntity().getStoragePoolId();
+                for (StoragePool dataCenter : dataCenters) {
+                    if (dataCenterId != null && 
dataCenter.getId().equals(dataCenterId)) {
+                        
clusterModel.getDataCenter().setSelectedItem(dataCenter);
                         break;
                     }
                 }
-                
clusterModel.getDataCenter().setIsChangable(clusterModel.getDataCenter().getSelectedItem()
 == null);
+                final StoragePool selectedDataCenter = 
clusterModel.getDataCenter().getSelectedItem();
+                clusterModel.getDataCenter().setIsChangable(selectedDataCenter 
== null);
 
                 
clusterModel.setMigrateOnErrorOption(clusterModel.getEntity().getMigrateOnError());
+
+                final Guid selectedDataCenterId = selectedDataCenter == null ? 
null : selectedDataCenter.getId();
+                if (getIsEdit()) {
+                    loadCurrentClusteManagementNetwork();
+                } else {
+                    loadDcNetworks(selectedDataCenterId);
+                }
             }
         };
         AsyncDataProvider.getInstance().getDataCenterList(_asyncQuery);
+    }
+
+    private void loadCurrentClusteManagementNetwork() {
+        final AsyncQuery getManagementNetworkQuery = new AsyncQuery(this, new 
INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                final ClusterModel clusterModel = (ClusterModel) model;
+                final Network managementNetwork = (Network) returnValue;
+                if (managementNetwork == null) {
+                    setEmptyNetworkList(clusterModel);
+                } else {
+                    
clusterModel.getManagementNetwork().setItems(Collections.singletonList(managementNetwork));
+                    
clusterModel.getManagementNetwork().setSelectedItem(managementNetwork);
+                }
+            }
+        });
+        
AsyncDataProvider.getInstance().getManagementNetwork(getManagementNetworkQuery, 
getClusterId());
+    }
+
+    private void setEmptyNetworkList(ClusterModel clusterModel) {
+        clusterModel.getManagementNetwork().setItems(Collections.<Network> 
emptyList());
+    }
+
+    private void loadDcNetworks(final Guid dataCenterId) {
+        if (dataCenterId == null) {
+            setEmptyNetworkList(this);
+            return;
+        }
+        final AsyncQuery getAllDataCenterNetworksQuery = new AsyncQuery(this, 
new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                final ClusterModel clusterModel = (ClusterModel) model;
+                final List<Network> dcNetworks = (List<Network>) returnValue;
+                clusterModel.getManagementNetwork().setItems(dcNetworks);
+
+                final AsyncQuery getDefaultManagementNetworkQuery =
+                        new AsyncQuery(clusterModel, new INewAsyncCallback() {
+                            @Override
+                            public void onSuccess(Object model, Object 
returnValue) {
+                                ClusterModel clusterModel = (ClusterModel) 
model;
+                                Network defaultManagementNetwork = (Network) 
returnValue;
+                                if (defaultManagementNetwork != null) {
+                                    for (Network network : dcNetworks) {
+                                        if 
(network.getId().equals(defaultManagementNetwork.getId())) {
+                                            
clusterModel.getManagementNetwork().setSelectedItem(network);
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                        });
+                AsyncDataProvider.getInstance()
+                        
.getDefaultManagementNetwork(getDefaultManagementNetworkQuery, dataCenterId);
+            }
+        });
+        
AsyncDataProvider.getInstance().getAllDataCenterNetworks(getAllDataCenterNetworksQuery,
 dataCenterId);
     }
 
     @Override
@@ -1713,6 +1794,8 @@
             }
         };
         AsyncDataProvider.getInstance().getDataCenterVersions(_asyncQuery, 
selectedDataCenter.getId());
+
+        loadDcNetworks(selectedDataCenter.getId());
     }
 
     private void clusterPolicyChanged() {
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 281c61a..31cce82 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -2461,4 +2461,7 @@
 
     @DefaultStringValue("Click on Numa Pinning to configure VM's virtual node 
span on top of physical host NUMA nodes")
     String numaInfoMessage();
+
+    @DefaultStringValue("Changing management network is allowed through manage 
networks screen")
+    String prohibitManagementNetworkChangeInEditClusterInfoMessage();
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
index 35b7146..b26a36d 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java
@@ -281,6 +281,9 @@
     @DefaultStringValue("Comment")
     String commentLabel();
 
+    @DefaultStringValue("Management Network")
+    String managementNetworkLabel();
+
     @DefaultStringValue("VM network")
     String vmNetworkLabel();
 
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
index 929df12..69c3bed 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.java
@@ -3,6 +3,7 @@
 import org.ovirt.engine.core.common.businessentities.ArchitectureType;
 import org.ovirt.engine.core.common.businessentities.ServerCpu;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.network.Network;
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.scheduling.ClusterPolicy;
 import org.ovirt.engine.core.compat.Version;
@@ -100,6 +101,11 @@
     @Path(value = "comment.entity")
     @WithElementId
     StringEntityModelTextBoxEditor commentEditor;
+
+    @UiField(provided = true)
+    @Path(value = "managementNetwork.selectedItem")
+    @WithElementId
+    ListModelListBoxEditor<Network> managementNetworkEditor;
 
     @UiField(provided = true)
     @Path(value = "CPU.selectedItem")
@@ -441,6 +447,7 @@
         nameEditor.setLabel(constants.clusterPopupNameLabel());
         descriptionEditor.setLabel(constants.clusterPopupDescriptionLabel());
         commentEditor.setLabel(constants.commentLabel());
+        managementNetworkEditor.setLabel(constants.managementNetworkLabel());
         cpuEditor.setLabel(constants.clusterPopupCPUTypeLabel());
         architectureEditor.setLabel(constants.clusterPopupArchitectureLabel());
         versionEditor.setLabel(constants.clusterPopupVersionLabel());
@@ -532,6 +539,13 @@
             }
         });
 
+        managementNetworkEditor = new ListModelListBoxEditor<Network>(new 
NullSafeRenderer<Network>() {
+            @Override
+            protected String renderNullSafe(Network network) {
+                return network.getName();
+            }
+        });
+
         cpuEditor = new ListModelListBoxEditor<ServerCpu>(new 
NullSafeRenderer<ServerCpu>() {
             @Override
             public String renderNullSafe(ServerCpu object) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
index 23ce195..6177e73 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/cluster/ClusterPopupView.ui.xml
@@ -167,6 +167,7 @@
                                 <ge:StringEntityModelTextBoxEditor 
ui:field="nameEditor" />
                                 <ge:StringEntityModelTextBoxEditor 
ui:field="descriptionEditor" />
                                 <ge:StringEntityModelTextBoxEditor 
ui:field="commentEditor" />
+                                <e:ListModelListBoxEditor 
ui:field="managementNetworkEditor" />
                                 <e:ListModelListBoxEditor 
ui:field="architectureEditor" />
                                 <e:ListModelListBoxEditor ui:field="cpuEditor" 
/>
                                 <e:ListModelListBoxEditor 
ui:field="versionEditor" />


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

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

Reply via email to