Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Add network custom properties in Setup Networks
......................................................................

webadmin: Add network custom properties in Setup Networks

Added a custom properties widget to the edit network dialog inside
Setup Networks in case the host is in a cluster that supports the
feature, applied validation and made sure changes are flushed to the
backend entity.

Change-Id: I1bc9f38f48fcf1bd9998228d316093db2db69782
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostInterfaceModel.java
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/vms/key_value/KeyValueModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.ui.xml
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/SetupNetworksInterfacePopupView.java
7 files changed, 65 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/50/26650/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
index fb46f72..bdf520d 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java
@@ -90,6 +90,9 @@
     VncKeyboardLayout(ConfigAuthType.User),
     VncKeyboardLayoutValidValues(ConfigAuthType.User),
     CustomDeviceProperties(ConfigAuthType.User),
+    NetworkCustomPropertiesSupported,
+    PreDefinedNetworkCustomProperties,
+    UserDefinedNetworkCustomProperties,
     MultipleGatewaysSupported,
     HostNetworkQosSupported,
     VirtIoScsiEnabled(ConfigAuthType.User),
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostInterfaceModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostInterfaceModel.java
index 35b4c15..56c99a3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostInterfaceModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostInterfaceModel.java
@@ -10,6 +10,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.datacenters.BaseNetworkQosModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel;
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.IpAddressValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
@@ -265,6 +266,16 @@
         this.qosModel = qosModel;
     }
 
+    private KeyValueModel customPropertiesModel;
+
+    public KeyValueModel getCustomPropertiesModel() {
+        return customPropertiesModel;
+    }
+
+    private void setCustomPropertiesModel(KeyValueModel customProperties) {
+        this.customPropertiesModel = customProperties;
+    }
+
     public HostInterfaceModel() {
         this(false);
     }
@@ -283,6 +294,7 @@
         setCommitChanges(new EntityModel());
         setQosOverridden(new EntityModel<Boolean>());
         setQosModel(new BaseNetworkQosModel());
+        setCustomPropertiesModel(new KeyValueModel());
 
         setIsToSync(new EntityModel(){
             @Override
@@ -309,6 +321,7 @@
         getGateway().setIsChangable(false);
         getQosOverridden().setIsAvailable(false);
         getQosModel().setIsAvailable(false);
+        getCustomPropertiesModel().setIsAvailable(false);
 
         getNetwork().getSelectedItemChangedEvent().addListener(this);
         getQosOverridden().getEntityChangedEvent().addListener(this);
@@ -396,8 +409,9 @@
         }
 
         getQosModel().validate();
+        getCustomPropertiesModel().validate();
 
         return getNetwork().getIsValid() && getAddress().getIsValid() && 
getSubnet().getIsValid()
-                && getGateway().getIsValid() && getQosModel().getIsValid();
+                && getGateway().getIsValid() && getQosModel().getIsValid() && 
getCustomPropertiesModel().getIsValid();
     }
 }
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 8e80b0d..e09f179 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
@@ -47,6 +47,7 @@
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkOperationFactory;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkOperationFactory.OperationMap;
 import 
org.ovirt.engine.ui.uicommonweb.models.hosts.network.OperationCadidateEventArgs;
+import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
@@ -375,6 +376,7 @@
                             : logicalNetwork.getAttachedToNic().getEntity();
 
             final HostInterfaceModel networkDialogModel;
+            String version = 
getEntity().getVdsGroupCompatibilityVersion().getValue();
             if (logicalNetwork.isManagement()) {
                 networkDialogModel = new HostManagementNetworkModel(true);
                 
networkDialogModel.setTitle(ConstantsManager.getInstance().getConstants().editManagementNetworkTitle());
@@ -391,7 +393,7 @@
                 
networkDialogModel.getNetwork().setSelectedItem(logicalNetwork.getEntity());
                 networkDialogModel.getGateway()
                         .setIsAvailable((Boolean) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.MultipleGatewaysSupported,
-                                
getEntity().getVdsGroupCompatibilityVersion().getValue()));
+                                version));
             }
             
networkDialogModel.setOriginalNetParams(netToBeforeSyncParams.get(logicalNetwork.getName()));
             networkDialogModel.getAddress().setEntity(entity.getAddress());
@@ -404,12 +406,25 @@
             networkDialogModel.getIsToSync()
                     
.setEntity(networksToSync.contains(logicalNetwork.getName()));
             if ((Boolean) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.HostNetworkQosSupported,
-                    getEntity().getVdsGroupCompatibilityVersion().getValue())) 
{
+                    version)) {
                 networkDialogModel.getQosOverridden().setIsAvailable(true);
                 networkDialogModel.getQosModel().setIsAvailable(true);
                 
networkDialogModel.getQosOverridden().setEntity(entity.isQosOverridden());
                 networkDialogModel.getQosModel().init(entity.getQos());
             }
+            if ((Boolean) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.NetworkCustomPropertiesSupported,
+                    version)) {
+                KeyValueModel customPropertiesModel = 
networkDialogModel.getCustomPropertiesModel();
+                customPropertiesModel.setIsAvailable(true);
+                Map<String, String> validProperties =
+                        KeyValueModel.convertProperties((String) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.PreDefinedNetworkCustomProperties,
+                                version));
+                
validProperties.putAll(KeyValueModel.convertProperties((String) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.UserDefinedNetworkCustomProperties,
+                        version)));
+                customPropertiesModel.setKeyValueMap(validProperties);
+                
customPropertiesModel.deserialize(KeyValueModel.convertProperties(entity.getCustomProperties()));
+            }
+
             editPopup = networkDialogModel;
 
             // OK Target
@@ -431,6 +446,11 @@
                         
entity.setQos(networkDialogModel.getQosModel().flush());
                     }
 
+                    if 
(networkDialogModel.getCustomPropertiesModel().getIsAvailable()) {
+                        
entity.setCustomProperties(KeyValueModel.convertProperties(networkDialogModel.getCustomPropertiesModel()
+                                .serialize()));
+                    }
+
                     if ((Boolean) 
networkDialogModel.getIsToSync().getEntity()) {
                         networksToSync.add(logicalNetwork.getName());
                     } else {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/key_value/KeyValueModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/key_value/KeyValueModel.java
index 104d58d..0812c8c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/key_value/KeyValueModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/key_value/KeyValueModel.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms.key_value;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -107,6 +108,18 @@
         deserialize(saveEntity);
     }
 
+    public void setKeyValueMap(Map<String, String> keyValueMap) {
+        if (keyValueMap == null) {
+            return;
+        }
+
+        List<String> lines = new ArrayList<String>();
+        for (Map.Entry<String, String> entry : keyValueMap.entrySet()) {
+            lines.add(entry.getKey() + '=' + entry.getValue());
+        }
+        setKeyValueString(lines);
+    }
+
     public String serialize() {
         StringBuilder builder = new StringBuilder();
         if (getItems() == null) {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
index 04a7c82..8ae0bdf 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostInterfaceModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.key_value.KeyValueModel;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
 import org.ovirt.engine.ui.uicompat.IEventListener;
@@ -26,6 +27,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.host.HostInterfacePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.networkQoS.NetworkQosWidget;
 import org.ovirt.engine.ui.common.widget.editor.EnumRadioEditor;
+import org.ovirt.engine.ui.common.widget.form.key_value.KeyValueWidget;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
@@ -96,6 +98,10 @@
     @UiField(provided = true)
     @Ignore
     NetworkQosWidget qosWidget;
+
+    @UiField(provided = true)
+    @Ignore
+    KeyValueWidget<KeyValueModel> customPropertiesWidget;
 
     @UiField(provided = true)
     @Path(value = "checkConnectivity.entity")
@@ -174,6 +180,7 @@
         });
         bootProtocol = new 
EnumRadioEditor<NetworkBootProtocol>(NetworkBootProtocol.class, eventBus);
         qosWidget = new NetworkQosWidget(constants);
+        customPropertiesWidget = new KeyValueWidget<KeyValueModel>("320px", 
"150px"); //$NON-NLS-1$ $NON-NLS-2$
 
         qosOverridden = new 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor(Align.RIGHT);
         checkConnectivity = new EntityModelCheckBoxEditor(Align.RIGHT);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.ui.xml
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.ui.xml
index ffc0289..1912701 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.ui.xml
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.ui.xml
@@ -5,7 +5,8 @@
        xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab"
        xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" 
xmlns:we="urn:import:org.ovirt.engine.ui.webadmin.widget.editor"
        xmlns:w="urn:import:org.ovirt.engine.ui.webadmin.widget" 
xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"
-       
xmlns:n="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.networkQoS">
+       
xmlns:n="urn:import:org.ovirt.engine.ui.webadmin.section.main.view.popup.networkQoS"
+       xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value">
 
        <ui:style 
type="org.ovirt.engine.ui.webadmin.section.main.view.popup.host.HostInterfacePopupView.Style">
                .checkCon{
@@ -40,6 +41,7 @@
                                                        
<ge:EntityModelCheckBoxEditor ui:field="qosOverridden" />
                                                        <n:NetworkQosWidget 
ui:field="qosWidget" />
                                                </g:FlowPanel>
+                                               <k:KeyValueWidget 
ui:field="customPropertiesWidget" />
                                                <g:HorizontalPanel>
                                                        
<e:EntityModelCheckBoxEditor ui:field="isToSync" />
                                                        <d:InfoIcon 
ui:field="isToSyncInfo"/>
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/SetupNetworksInterfacePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/SetupNetworksInterfacePopupView.java
index 185e8d9..50c0433 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/SetupNetworksInterfacePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/SetupNetworksInterfacePopupView.java
@@ -44,5 +44,7 @@
         bootProtocolLabel.setEnabled(object.getBootProtocolsAvailable());
         bootProtocol.setEnabled(object.getBootProtocolsAvailable());
         bootProtocol.setEnabled(NetworkBootProtocol.NONE, 
object.getNoneBootProtocolAvailable());
+
+        customPropertiesWidget.edit(object.getCustomPropertiesModel());
     }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1bc9f38f48fcf1bd9998228d316093db2db69782
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