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

Reply via email to