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