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 <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Alona Kaplan <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches