Hello Alona Kaplan, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/16933 to review the following change. Change subject: webadmin: add Network Provider tab to add host ...................................................................... webadmin: add Network Provider tab to add host Includes similar logic to that in ProviderModel concerning the plugin type, so was reused using NeutronAgentBehavior and NeutronAgentSection. Change-Id: Ib65de6d8dd4422f4ab4b8fd6ca39684bf4f7b5d5 Signed-off-by: Alona Kaplan <alkap...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/EditHostModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/NewHostModel.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/host/HostPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml 6 files changed, 185 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/33/16933/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/EditHostModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/EditHostModel.java index ae414bf..84684c0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/EditHostModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/EditHostModel.java @@ -71,4 +71,9 @@ } } + @Override + public boolean showNetworkProviderTab() { + return false; + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java index cffc535..41fdd02 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java @@ -8,6 +8,9 @@ import org.ovirt.engine.core.common.businessentities.FenceAgentOrder; import org.ovirt.engine.core.common.businessentities.FenceStatusReturnValue; +import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties; +import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.ProviderType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -32,6 +35,8 @@ import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; +import org.ovirt.engine.ui.uicommonweb.models.providers.NeutronAgentBehavior; +import org.ovirt.engine.ui.uicommonweb.models.providers.NeutronPluginTranslator; import org.ovirt.engine.ui.uicommonweb.validation.BaseI18NValidation; import org.ovirt.engine.ui.uicommonweb.validation.HostAddressValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; @@ -39,12 +44,12 @@ import org.ovirt.engine.ui.uicommonweb.validation.KeyValuePairValidation; import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation; import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; -import org.ovirt.engine.ui.uicompat.UIConstants; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.IEventListener; import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; +import org.ovirt.engine.ui.uicompat.UIConstants; public abstract class HostModel extends Model { @@ -652,6 +657,42 @@ privateProviders = value; } + private ListModel externalProviders; + + public void setExternalProviders(ListModel externalProviders) { + this.externalProviders = externalProviders; + } + + public ListModel getExternalProviders() { + return externalProviders; + } + + private ListModel providerType; + + public ListModel getProviderType() { + return providerType; + } + + protected void setProviderType(ListModel value) { + providerType = value; + } + + private ListModel providerPluginType; + + public ListModel getProviderPluginType() { + return providerPluginType; + } + + protected void setProviderPluginType(ListModel value) { + providerPluginType = value; + } + + private NeutronAgentBehavior neutronAgentSection; + + public NeutronAgentBehavior getNeutronAgentSection() { + return neutronAgentSection; + } + public HostModel() { setTestCommand(new UICommand("Test", new ICommandTarget() { //$NON-NLS-1$ @@ -795,6 +836,54 @@ setSpmPriority(new ListModel()); initSpmPriorities(); + + setExternalProviders(new ListModel()); + getExternalProviders().getSelectedItemChangedEvent().addListener(new IEventListener() { + + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + onExternalProviderChanged(); + } + }); + setProviderType(new ListModel()); + getProviderType().setIsChangable(false); + getProviderType().setIsAvailable(false); + setProviderPluginType(new ListModel()); + getProviderPluginType().setIsChangable(false); + getProviderPluginType().setIsAvailable(false); + neutronAgentSection = new NeutronAgentBehavior(getProviderType(), getProviderPluginType()); + neutronAgentSection.setIsAvailable(false); + + onExternalProviderChanged(); + initExternalNetworksList(); + } + + @SuppressWarnings("unchecked") + private void onExternalProviderChanged() { + Provider provider = (Provider) getExternalProviders().getSelectedItem(); + getProviderType().setIsAvailable(provider != null); + getProviderType().setSelectedItem(provider == null ? null : provider.getType()); + if (getProviderType().getSelectedItem() == ProviderType.OPENSTACK_NETWORK) { + OpenstackNetworkProviderProperties properties = ((Provider<OpenstackNetworkProviderProperties>) + getExternalProviders().getSelectedItem()).getAdditionalProperties(); + String pluginName = (properties == null) ? new String() : properties.getPluginType(); + getProviderPluginType().setSelectedItem(NeutronPluginTranslator.getDisplayStringForPluginName(pluginName)); + } + } + + private void initExternalNetworksList() { + AsyncQuery getProvidersQuery = new AsyncQuery(); + getProvidersQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object result) + { + ArrayList<Provider> providers = Linq.toList(Linq.filterNetworkProviders((ArrayList<Provider>) result)); + providers.add(0, null); + getExternalProviders().setItems(providers); + getExternalProviders().setSelectedItem(null); + } + }; + AsyncDataProvider.GetAllProviders(getProvidersQuery); } private void proxyUp() { @@ -1353,8 +1442,11 @@ && getPmSecondaryType().getIsValid() && getPmSecondaryPort().getIsValid() && getPmSecondaryOptions().getIsValid()); - return getIsGeneralTabValid() - && getIsPowerManagementTabValid() && getConsoleAddress().getIsValid(); + + neutronAgentSection.validate(); + + return getIsGeneralTabValid() && getIsPowerManagementTabValid() && getConsoleAddress().getIsValid() + && neutronAgentSection.getIsValid(); } private boolean isEntityModelEmpty(EntityModel model) { @@ -1471,4 +1563,6 @@ protected abstract void updateHosts(); protected abstract void setHostPort(VDS vds); + + public abstract boolean showNetworkProviderTab(); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/NewHostModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/NewHostModel.java index 7aa74b8..4b95750 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/NewHostModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/NewHostModel.java @@ -169,4 +169,9 @@ getProviderSearchFilterLabel().setIsChangable(value); getUpdateHostsCommand().setIsExecutionAllowed(value); } + + @Override + public boolean showNetworkProviderTab() { + return true; + } } 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 1395779..1ef6ca2 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 @@ -495,6 +495,9 @@ @DefaultStringValue("Console") String consoleButtonLabel(); + @DefaultStringValue("Network Provider") + String networkProviderButtonLabel(); + @DefaultStringValue("Override display address") String enableConsoleAddressOverride(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.java index 19beb60..f6f0d9e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.java @@ -3,9 +3,9 @@ import java.util.List; import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; -import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; @@ -23,7 +23,10 @@ import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxOnlyEditor; +import org.ovirt.engine.ui.common.widget.editor.ListModelSuggestBoxEditor; +import org.ovirt.engine.ui.common.widget.renderer.EnumRenderer; import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; +import org.ovirt.engine.ui.common.widget.uicommon.popup.provider.NeutronAgentSection; import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; @@ -278,9 +281,13 @@ @UiField @Ignore + DialogTab networkProviderTab; + + @UiField + @Ignore VerticalPanel spmPanel; - @UiField(provided=true) + @UiField(provided = true) @Ignore InfoIcon consoleAddressInfoIcon; @@ -307,16 +314,40 @@ @UiField FlowPanel externalProviderPanel; + @UiField(provided = true) + @Path(value = "externalProviders.selectedItem") + @WithElementId("externalProviders") + public ListModelListBoxEditor<Object> externalProviderEditor; + + @UiField(provided = true) + @Path(value = "providerType.selectedItem") + @WithElementId("providerType") + public ListModelListBoxEditor<Object> providerTypeEditor; + + @UiField + @Path(value = "providerPluginType.selectedItem") + @WithElementId("providerPluginType") + public ListModelSuggestBoxEditor providerPluginTypeEditor; + + @UiField(provided = true) + @Ignore + NeutronAgentSection neutronAgentSection; + private final Driver driver = GWT.create(Driver.class); private final CommonApplicationTemplates applicationTemplates; private final ApplicationResources resources; + private final ApplicationConstants constants; @Inject - public HostPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, CommonApplicationTemplates applicationTemplates) { + public HostPopupView(EventBus eventBus, + ApplicationResources resources, + ApplicationConstants constants, + CommonApplicationTemplates applicationTemplates) { super(eventBus, resources); this.resources = resources; + this.constants = constants; this.applicationTemplates = applicationTemplates; initEditors(); initInfoIcon(constants); @@ -331,7 +362,8 @@ private void initInfoIcon(ApplicationConstants constants) { consoleAddressInfoIcon = - new InfoIcon(applicationTemplates.italicText(constants.enableConsoleAddressOverrideHelpMessage()), resources); //$NON-NLS-1$ + new InfoIcon(applicationTemplates.italicText(constants.enableConsoleAddressOverrideHelpMessage()), + resources); //$NON-NLS-1$ providerSearchInfoIcon = new InfoIcon(applicationTemplates.italicText(constants.providerSearchInfo()), resources); } @@ -400,6 +432,15 @@ // Check boxes pmEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); externalHostProviderEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); + + externalProviderEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((Provider) object).getName(); + } + }); + providerTypeEditor = new ListModelListBoxEditor<Object>(new EnumRenderer()); + neutronAgentSection = new NeutronAgentSection(constants); } void localize(ApplicationConstants constants) { @@ -450,6 +491,10 @@ // SPM tab spmTab.setLabel(constants.spmTestButtonLabel()); consoleTab.setLabel(constants.consoleButtonLabel()); + + // Network Provider Tab + networkProviderTab.setLabel(constants.networkProviderButtonLabel()); + externalProviderEditor.setLabel(constants.externalProviderLabel()); } private void applyModeCustomizations() { @@ -540,7 +585,7 @@ @Override public void eventRaised(Event ev, Object sender, EventArgs args) { PropertyChangedEventArgs e = (PropertyChangedEventArgs) args; - if (e.PropertyName == "IsChangable") { //$NON-NLS-1$ + if (e.PropertyName == "IsChangable") { //$NON-NLS-1$ proxyListBox.setEnabled(object.getPmProxyPreferencesList().getIsChangable()); } } @@ -553,8 +598,8 @@ List items = (List) object.getPmProxyPreferencesList().getItems(); Object selectedItem = proxyListBox.getSelectedIndex() >= 0 - ? items.get(proxyListBox.getSelectedIndex()) - : null; + ? items.get(proxyListBox.getSelectedIndex()) + : null; object.getPmProxyPreferencesList().setSelectedItem(selectedItem); } @@ -574,7 +619,6 @@ createSpmControls(object); - // Wire events on power management related controls. object.getPmVariants().getSelectedItemChangedEvent().addListener(new IEventListener() { @Override @@ -591,6 +635,9 @@ updatePmPanelsVisibility(true); externalProviderPanel.setVisible(object.showExternalProviderPanel()); + + networkProviderTab.setVisible(object.showNetworkProviderTab()); + neutronAgentSection.edit(object.getNeutronAgentSection()); } private void updatePmPanelsVisibility(boolean primary) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml index 1a1bf39..5e7204c 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostPopupView.ui.xml @@ -5,7 +5,8 @@ xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" xmlns:t="urn:import:org.ovirt.engine.ui.common.widget.dialog.tab" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" - xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> + xmlns:w="urn:import:org.ovirt.engine.ui.common.widget" + xmlns:p="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.provider"> <ui:with field='constants' type='org.ovirt.engine.ui.common.CommonApplicationConstants'/> <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.host.HostPopupView.Style"> @@ -150,6 +151,10 @@ display: none; } + .sectionStyle { + margin-top: 20px; + } + </ui:style> <d:SimpleDialogPanel width="700px" height="500px"> @@ -267,6 +272,20 @@ </t:content> </t:DialogTab> </t:tab> + <t:tab> + <t:DialogTab ui:field="networkProviderTab"> + <t:content> + <g:FlowPanel> + <e:ListModelListBoxEditor ui:field="externalProviderEditor"/> + <e:ListModelListBoxEditor ui:field="providerTypeEditor" /> + <e:ListModelSuggestBoxEditor ui:field = "providerPluginTypeEditor" /> + <g:FlowPanel addStyleNames="{style.sectionStyle}"> + <p:NeutronAgentSection ui:field="neutronAgentSection" /> + </g:FlowPanel> + </g:FlowPanel> + </t:content> + </t:DialogTab> + </t:tab> </t:DialogTabPanel> </d:content> </d:SimpleDialogPanel> -- To view, visit http://gerrit.ovirt.org/16933 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib65de6d8dd4422f4ab4b8fd6ca39684bf4f7b5d5 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <lver...@redhat.com> Gerrit-Reviewer: Alona Kaplan <alkap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches