Lior Vernia has uploaded a new change for review. Change subject: webadmin: Refactored more code into NeutronAgentModel ......................................................................
webadmin: Refactored more code into NeutronAgentModel Added the code concerning the Neutron plugin type into NeutronAgentModel, as it seems to be common to all the pieces of code utilising NeutronAgentModel. Change-Id: I6c4bc0c6aa3a27d7ef6a5b9b5e3fa5007f332561 Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.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/providers/AddProviderModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/EditProviderModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronAgentModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronPluginTranslator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.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/presenter/popup/provider/ProviderPopupPresenterWidget.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 M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java 13 files changed, 197 insertions(+), 186 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/51/17251/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java index 998e1aa..e366445 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java @@ -14,6 +14,7 @@ import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.Provider; +import org.ovirt.engine.core.common.businessentities.ProviderType; import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.ServerCpu; import org.ovirt.engine.core.common.businessentities.Snapshot; @@ -50,6 +51,7 @@ import org.ovirt.engine.ui.uicommonweb.models.vms.DiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.TimeZoneModel; import org.ovirt.engine.ui.uicompat.DateTimeUtils; +import org.ovirt.engine.ui.uicompat.EnumTranslator; import org.ovirt.engine.ui.uicompat.IEqualityComparer; @SuppressWarnings("unused") @@ -1125,6 +1127,7 @@ } public final static class ExternalNetworkComparator implements Comparator<ExternalNetwork>, Serializable { + private static final long serialVersionUID = 4987035011384708563L; private NameableComparator comparator = new NameableComparator(); @Override @@ -1134,6 +1137,7 @@ } public final static class ProviderComparator implements Comparator<Provider>, Serializable { + private static final long serialVersionUID = 627759940118704128L; @Override public int compare(Provider p1, Provider p2) { @@ -1152,4 +1156,14 @@ }); } + public final static class ProviderTypeComparator implements Comparator<ProviderType>, Serializable { + private static final long serialVersionUID = -7917198421355959306L; + + @Override + public int compare(ProviderType type1, ProviderType type2) { + return LexoNumericComparator.comp(EnumTranslator.createAndTranslate(type1), + EnumTranslator.createAndTranslate(type2)); + } + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java index de76c24..4166e0f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostListModel.java @@ -890,7 +890,7 @@ parameters.setRebootAfterInstallation(isVirt) ; parameters.setAuthMethod(model.getAuthenticationMethod()); - Provider externalProvider = (Provider) model.getExternalProviders().getSelectedItem(); + Provider externalProvider = (Provider) model.getNetworkProviders().getSelectedItem(); if (externalProvider != null) { parameters.setProvider(externalProvider.getId()); parameters.setNetworkMappings((String) model.getNeutronAgentModel().getInterfaceMappings().getEntity()); 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 fe1f363..9e04c1d 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 @@ -9,7 +9,6 @@ import org.ovirt.engine.core.common.action.VdsOperationActionParameters.AuthenticationMethod; 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; @@ -37,7 +36,6 @@ import org.ovirt.engine.ui.uicommonweb.models.Model; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.models.providers.NeutronAgentModel; -import org.ovirt.engine.ui.uicommonweb.models.providers.NeutronPluginTranslator; import org.ovirt.engine.ui.uicommonweb.validation.HostAddressValidation; import org.ovirt.engine.ui.uicommonweb.validation.HostnameValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; @@ -775,34 +773,28 @@ privateProviders = value; } - private ListModel externalProviders; + private ListModel networkProviders; - public void setExternalProviders(ListModel externalProviders) { - this.externalProviders = externalProviders; + public void setNetworkProviders(ListModel value) { + this.networkProviders = value; } - public ListModel getExternalProviders() { - return externalProviders; + public ListModel getNetworkProviders() { + return networkProviders; } - private ListModel providerType; + private ListModel networkProviderType; - public ListModel getProviderType() { - return providerType; + public ListModel getNetworkProviderType() { + return networkProviderType; } - protected void setProviderType(ListModel value) { - providerType = value; + protected void setNetworkProviderType(ListModel value) { + networkProviderType = value; } - - private ListModel providerPluginType; public ListModel getProviderPluginType() { - return providerPluginType; - } - - protected void setProviderPluginType(ListModel value) { - providerPluginType = value; + return getNeutronAgentModel().getPluginType(); } private NeutronAgentModel neutronAgentModel; @@ -982,45 +974,36 @@ initSpmPriorities(); fetchPublicKey(); - setExternalProviders(new ListModel()); - getExternalProviders().getSelectedItemChangedEvent().addListener(new IEventListener() { + setNetworkProviders(new ListModel()); + getNetworkProviders().getSelectedItemChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - onExternalProviderChanged(); + onNetworkProviderChanged(); } }); - setProviderType(new ListModel()); - getProviderType().setIsChangable(false); - getProviderType().setIsAvailable(false); - setProviderPluginType(new ListModel()); - getProviderPluginType().setIsChangable(false); - getProviderPluginType().setIsAvailable(false); - neutronAgentModel = new NeutronAgentModel(getProviderType(), getProviderPluginType()); + setNetworkProviderType(new ListModel()); + getNetworkProviderType().setIsChangable(false); + getNetworkProviderType().setIsAvailable(false); + neutronAgentModel = new NeutronAgentModel(); neutronAgentModel.setIsChangable(false); neutronAgentModel.setIsAvailable(false); - onExternalProviderChanged(); - initExternalProvidersList(); + onNetworkProviderChanged(); + initNetworkProvidersList(); } @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)); - if (properties != null) { - getNeutronAgentModel().init(properties.getAgentConfiguration()); - } - } + private void onNetworkProviderChanged() { + Provider provider = (Provider) getNetworkProviders().getSelectedItem(); + getNetworkProviderType().setIsAvailable(provider != null); + getNetworkProviderType().setSelectedItem(provider == null ? null : provider.getType()); + boolean isNeutron = (getNetworkProviderType().getSelectedItem() == ProviderType.OPENSTACK_NETWORK); + getNeutronAgentModel().init(isNeutron ? provider : new Provider()); + getNeutronAgentModel().setIsAvailable(isNeutron); } - private void initExternalProvidersList() { + private void initNetworkProvidersList() { AsyncQuery getProvidersQuery = new AsyncQuery(); getProvidersQuery.asyncCallback = new INewAsyncCallback() { @Override @@ -1028,8 +1011,8 @@ { List<Provider> providers = (List<Provider>) result; providers.add(0, null); - getExternalProviders().setItems(providers); - getExternalProviders().setSelectedItem(null); + getNetworkProviders().setItems(providers); + getNetworkProviders().setSelectedItem(null); } }; AsyncDataProvider.GetAllNetworkProviders(getProvidersQuery); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/AddProviderModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/AddProviderModel.java index d6f5c67..d596784 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/AddProviderModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/AddProviderModel.java @@ -8,7 +8,6 @@ public class AddProviderModel extends ProviderModel { - @SuppressWarnings("unchecked") public AddProviderModel(ProviderListModel sourceListModel) { super(sourceListModel, VdcActionType.AddProvider, new Provider()); setTitle(ConstantsManager.getInstance().getConstants().addProviderTitle()); @@ -16,6 +15,8 @@ getType().setSelectedItem(Linq.firstOrDefault((Iterable<ProviderType>) getType().getItems())); getRequiresAuthentication().setEntity(false); + + getNeutronAgentModel().init(provider); // this is okay because AdditionalProperties == null at this point } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/EditProviderModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/EditProviderModel.java index ae9a326..186c0b6 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/EditProviderModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/EditProviderModel.java @@ -7,9 +7,7 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties; import org.ovirt.engine.core.common.businessentities.Provider; -import org.ovirt.engine.core.common.businessentities.TenantProviderProperties; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; @@ -46,13 +44,8 @@ getUsername().setEntity(provider.getUsername()); getPassword().setEntity(provider.getPassword()); - if (provider.getAdditionalProperties() instanceof TenantProviderProperties) { - getTenantName().setEntity(((TenantProviderProperties) provider.getAdditionalProperties()).getTenantName()); - } - if (isTypeOpenStackNetwork()) { - getNeutronAgentModel().init(((OpenstackNetworkProviderProperties) provider.getAdditionalProperties()). - getAgentConfiguration()); + getNeutronAgentModel().init(provider); } oldUrl = provider.getUrl(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronAgentModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronAgentModel.java index 1e1d640..4087389 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronAgentModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronAgentModel.java @@ -1,15 +1,17 @@ package org.ovirt.engine.ui.uicommonweb.models.providers; import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; +import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties; import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties.AgentConfiguration; import org.ovirt.engine.core.common.businessentities.OpenstackNetworkProviderProperties.QpidConfiguration; -import org.ovirt.engine.core.common.businessentities.ProviderType; +import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.validation.HostAddressValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation; import org.ovirt.engine.ui.uicommonweb.validation.InterfaceMappingsValidation; +import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; @@ -20,9 +22,9 @@ private static final String QPID_PORT_DEFAULT = "5672"; //$NON-NLS-1$ - private final ListModel type; - private final ListModel pluginType; + private ListModel pluginType = new ListModel(); + private EntityModel pluginTypeCustom = new EntityModel(); private EntityModel interfaceMappingsLabel = new EntityModel(); private EntityModel interfaceMappingsExplanation = new EntityModel(); private EntityModel interfaceMappings = new EntityModel(); @@ -31,12 +33,12 @@ private EntityModel qpidUsername = new EntityModel(); private EntityModel qpidPassword = new EntityModel(); - public ListModel getType() { - return type; - } - public ListModel getPluginType() { return pluginType; + } + + public EntityModel isPluginTypeCustom() { + return pluginTypeCustom; } public EntityModel getInterfaceMappingsLabel() { @@ -67,21 +69,12 @@ return qpidPassword; } - public NeutronAgentModel(final ListModel type, final ListModel pluginType) { - this.type = type; - this.pluginType = pluginType; - - getType().getSelectedItemChangedEvent().addListener(new IEventListener() { - @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { - updateAvailability(); - } - }); + public NeutronAgentModel() { getPluginType().getSelectedItemChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - updateAvailability(); - String displayString = getPluginDisplayString(); + String displayString = (String) getPluginType().getSelectedItem(); + isPluginTypeCustom().setEntity(NeutronPluginTranslator.isDisplayStringCustom(displayString)); if (!NeutronPluginTranslator.isDisplayStringCustom(displayString)) { switch(NeutronPluginTranslator.getPluginTypeForDisplayString(displayString)) { case OPEN_VSWITCH: @@ -105,21 +98,32 @@ } }); getPropertyChangedEvent().addListener(new IEventListener() { + @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - if ("IsChangable".equals(((PropertyChangedEventArgs) args).PropertyName)) { //$NON-NLS-1$ - boolean changeable = getIsChangable(); - getInterfaceMappingsLabel().setIsChangable(changeable); - getInterfaceMappingsExplanation().setIsChangable(changeable); - getInterfaceMappings().setIsChangable(changeable); - getQpidHost().setIsChangable(changeable); - getQpidPort().setIsChangable(changeable); - getQpidUsername().setIsChangable(changeable); - getQpidPassword().setIsChangable(changeable); + String propertyName = ((PropertyChangedEventArgs) args).PropertyName; + if ("IsAvailable".equals(propertyName)) { //$NON-NLS-1$ + boolean value = getIsAvailable(); + getPluginType().setIsAvailable(value); + if (!value) { + isPluginTypeCustom().setEntity(true); + } + } else if ("IsChangable".equals(propertyName)) { //$NON-NLS-1$ + boolean value = getIsChangable(); + getPluginType().setIsChangable(value); + getInterfaceMappingsLabel().setIsChangable(value); + getInterfaceMappingsExplanation().setIsChangable(value); + getInterfaceMappings().setIsChangable(value); + getQpidHost().setIsChangable(value); + getQpidPort().setIsChangable(value); + getQpidUsername().setIsChangable(value); + getQpidPassword().setIsChangable(value); } } }); + getPluginType().setItems(NeutronPluginTranslator.getPresetDisplayStrings()); + getPluginType().setSelectedItem(new String()); getInterfaceMappingsLabel().setEntity(ConstantsManager.getInstance().getConstants().interfaceMappings()); getInterfaceMappingsExplanation().setEntity(ConstantsManager.getInstance() .getConstants() @@ -127,57 +131,72 @@ getQpidPort().setEntity(QPID_PORT_DEFAULT); } - private void updateAvailability() { - boolean providerNeutron = getType().getSelectedItem() == ProviderType.OPENSTACK_NETWORK; - getPluginType().setIsAvailable(providerNeutron); - setIsAvailable(providerNeutron - && !NeutronPluginTranslator.isDisplayStringCustom(getPluginDisplayString())); - } - - private String getPluginDisplayString() { - String res = (String) getPluginType().getSelectedItem(); - return (res == null) ? new String() : res; - } - public boolean validate() { - if (getIsAvailable()) { + if (getIsAvailable() && getIsChangable()) { + getPluginType().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); getInterfaceMappings().validateEntity(new IValidation[] { new InterfaceMappingsValidation() }); getQpidHost().validateEntity(new IValidation[] { new HostAddressValidation(true) }); getQpidPort().validateEntity(new IValidation[] { new IntegerValidation(BusinessEntitiesDefinitions.NETWORK_MIN_LEGAL_PORT, BusinessEntitiesDefinitions.NETWORK_MAX_LEGAL_PORT) }); - setIsValid(getInterfaceMappings().getIsValid() && getQpidHost().getIsValid() && getQpidPort().getIsValid()); + + setIsValid(getPluginType().getIsValid() && getInterfaceMappings().getIsValid() + && getQpidHost().getIsValid() && getQpidPort().getIsValid()); } return getIsValid(); } - public void init(AgentConfiguration agentConfiguration) { - if (agentConfiguration != null) { - getInterfaceMappings().setEntity(agentConfiguration.getNetworkMappings()); + public void init(Provider<OpenstackNetworkProviderProperties> provider) { + OpenstackNetworkProviderProperties properties = provider.getAdditionalProperties(); + String pluginName = (properties == null) ? new String() : properties.getPluginType(); + getPluginType().setSelectedItem(NeutronPluginTranslator.getDisplayStringForPluginName(pluginName)); - QpidConfiguration qpidConfiguration = agentConfiguration.getQpidConfiguration(); - if (qpidConfiguration != null) { - getQpidHost().setEntity(qpidConfiguration.getAddress()); - Integer port = qpidConfiguration.getPort(); - getQpidPort().setEntity(port == null ? null : Integer.toString(port)); - getQpidUsername().setEntity(qpidConfiguration.getUsername()); - getQpidPassword().setEntity(qpidConfiguration.getPassword()); + if (properties != null) { + AgentConfiguration agentConfiguration = properties.getAgentConfiguration(); + if (agentConfiguration != null) { + getInterfaceMappings().setEntity(agentConfiguration.getNetworkMappings()); + + QpidConfiguration qpidConfiguration = agentConfiguration.getQpidConfiguration(); + if (qpidConfiguration != null) { + getQpidHost().setEntity(qpidConfiguration.getAddress()); + Integer port = qpidConfiguration.getPort(); + getQpidPort().setEntity(port == null ? null : Integer.toString(port)); + getQpidUsername().setEntity(qpidConfiguration.getUsername()); + getQpidPassword().setEntity(qpidConfiguration.getPassword()); + } } } } - public AgentConfiguration flush() { - AgentConfiguration agentConfiguration = new AgentConfiguration(); - agentConfiguration.setNetworkMappings((String) getInterfaceMappings().getEntity()); + public void flush(Provider<OpenstackNetworkProviderProperties> provider) { + OpenstackNetworkProviderProperties properties = provider.getAdditionalProperties(); + if (properties == null) { + properties = new OpenstackNetworkProviderProperties(); + provider.setAdditionalProperties(properties); + } + properties.setPluginType(NeutronPluginTranslator. + getPluginNameForDisplayString((String) getPluginType().getSelectedItem())); - QpidConfiguration qpidConfiguration = new QpidConfiguration(); - agentConfiguration.setQpidConfiguration(qpidConfiguration); - qpidConfiguration.setAddress((String) getQpidHost().getEntity()); - String port = (String) getQpidPort().getEntity(); - qpidConfiguration.setPort(port == null ? null : Integer.valueOf(port)); - qpidConfiguration.setUsername((String) getQpidUsername().getEntity()); - qpidConfiguration.setPassword((String) getQpidPassword().getEntity()); + if (((Boolean) isPluginTypeCustom().getEntity())) { + properties.setAgentConfiguration(null); + } else { + AgentConfiguration agentConfiguration = properties.getAgentConfiguration(); + if (agentConfiguration == null) { + agentConfiguration = new AgentConfiguration(); + properties.setAgentConfiguration(agentConfiguration); + } + agentConfiguration.setNetworkMappings((String) getInterfaceMappings().getEntity()); - return agentConfiguration; + QpidConfiguration qpidConfiguration = agentConfiguration.getQpidConfiguration(); + if (qpidConfiguration == null) { + qpidConfiguration = new QpidConfiguration(); + agentConfiguration.setQpidConfiguration(qpidConfiguration); + } + qpidConfiguration.setAddress((String) getQpidHost().getEntity()); + String port = (String) getQpidPort().getEntity(); + qpidConfiguration.setPort(port == null ? null : Integer.valueOf(port)); + qpidConfiguration.setUsername((String) getQpidUsername().getEntity()); + qpidConfiguration.setPassword((String) getQpidPassword().getEntity()); + } } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronPluginTranslator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronPluginTranslator.java index 470e2ee..1286e30 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronPluginTranslator.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/NeutronPluginTranslator.java @@ -1,10 +1,13 @@ package org.ovirt.engine.ui.uicommonweb.models.providers; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; -import java.util.Set; import org.ovirt.engine.core.common.businessentities.OpenstackNetworkPluginType; +import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; import org.ovirt.engine.ui.uicompat.EnumTranslator; public class NeutronPluginTranslator { @@ -18,8 +21,10 @@ } } - public static Set<String> getPresetDisplayStrings() { - return pluginForDisplay.keySet(); + public static List<String> getPresetDisplayStrings() { + List<String> list = new ArrayList<String>(pluginForDisplay.keySet()); + Collections.sort(list, new LexoNumericComparator()); + return list; } public static boolean isDisplayStringCustom(String displayString) { @@ -34,8 +39,8 @@ try { return EnumTranslator.createAndTranslate(OpenstackNetworkPluginType.valueOf(pluginName)); } - catch (IllegalArgumentException e) { - return pluginName; + catch (Exception e) { + return pluginName == null ? new String() : pluginName; } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java index 64808ca..f54515a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java @@ -1,11 +1,14 @@ package org.ovirt.engine.ui.uicommonweb.models.providers; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import org.ovirt.engine.core.common.action.ProviderParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.OpenstackImageProviderProperties; -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.TenantProviderProperties; @@ -15,6 +18,7 @@ import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.Uri; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; @@ -56,11 +60,10 @@ private EntityModel password = new EntityModel(); private EntityModel tenantName = new EntityModel(); private ListModel type; - private ListModel pluginType = new ListModel(); private UICommand testCommand; private EntityModel testResult = new EntityModel(); - private NeutronAgentModel neutronAgentModel; + private NeutronAgentModel neutronAgentModel = new NeutronAgentModel(); public EntityModel getName() { return name; @@ -72,6 +75,10 @@ private void setType(ListModel value) { type = value; + } + + public ListModel getPluginType() { + return getNeutronAgentModel().getPluginType(); } public EntityModel getDescription() { @@ -100,10 +107,6 @@ public EntityModel getTenantName() { return tenantName; - } - - public ListModel getPluginType() { - return pluginType; } public UICommand getTestCommand() { @@ -181,27 +184,26 @@ getType().getSelectedItemChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - getTenantName().setIsAvailable(isTypeTenantAware()); - - boolean providerNeutron = isTypeOpenStackNetwork(); - getApiVersion().setIsAvailable(providerNeutron); - if (providerNeutron) { - OpenstackNetworkProviderProperties properties = - (OpenstackNetworkProviderProperties) provider.getAdditionalProperties(); - String pluginName = (properties == null) ? new String() : properties.getPluginType(); - getPluginType().setSelectedItem(NeutronPluginTranslator.getDisplayStringForPluginName(pluginName)); + boolean isTenant = isTypeTenantAware(); + getTenantName().setIsAvailable(isTenant); + if (isTenant) { + TenantProviderProperties properties = (TenantProviderProperties) provider.getAdditionalProperties(); + getTenantName().setEntity(properties == null ? null : properties.getTenantName()); } + + boolean isNeutron = isTypeOpenStackNetwork(); + getApiVersion().setIsAvailable(isNeutron); + getNeutronAgentModel().setIsAvailable(isNeutron); } }); - neutronAgentModel = new NeutronAgentModel(getType(), getPluginType()); - - getPluginType().setIsAvailable(false); + getNeutronAgentModel().setIsAvailable(false); getApiVersion().setIsAvailable(false); getTenantName().setIsAvailable(false); - getType().setItems(Arrays.asList(ProviderType.values())); - getPluginType().setItems(NeutronPluginTranslator.getPresetDisplayStrings()); + List<ProviderType> providerTypes = new ArrayList<ProviderType>(Arrays.asList(ProviderType.values())); + Collections.sort(providerTypes, new Linq.ProviderTypeComparator()); + getType().setItems(providerTypes); getApiVersion().setItems(Arrays.asList("v2.0")); //$NON-NLS-1$ UICommand tempVar = new UICommand(CMD_SAVE, this); @@ -218,7 +220,6 @@ private boolean validate() { getName().validateEntity(new IValidation[] { new NotEmptyValidation() }); getType().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); - getPluginType().validateSelectedItem(new IValidation[] { new NotEmptyValidation() }); getUsername().validateEntity(new IValidation[] { new NotEmptyValidation() }); getPassword().validateEntity(new IValidation[] { new NotEmptyValidation() }); getTenantName().validateEntity(new IValidation[] { new NotEmptyValidation()} ); @@ -226,9 +227,8 @@ new UrlValidation(Uri.SCHEME_HTTP, Uri.SCHEME_HTTPS) }); getNeutronAgentModel().validate(); - return getName().getIsValid() && getType().getIsValid() && getPluginType().getIsValid() - && getUrl().getIsValid() && getUsername().getIsValid() && getPassword().getIsValid() - && getTenantName().getIsValid() && getNeutronAgentModel().getIsValid(); + return getName().getIsValid() && getType().getIsValid() && getUrl().getIsValid() && getUsername().getIsValid() + && getPassword().getIsValid() && getTenantName().getIsValid() && getNeutronAgentModel().getIsValid(); } private void cancel() { @@ -242,11 +242,7 @@ provider.setUrl((String) url.getEntity()); if (isTypeOpenStackNetwork()) { - OpenstackNetworkProviderProperties properties = new OpenstackNetworkProviderProperties(); - properties.setPluginType(NeutronPluginTranslator. - getPluginNameForDisplayString((String) getPluginType().getSelectedItem())); - properties.setAgentConfiguration(getNeutronAgentModel().flush()); - provider.setAdditionalProperties(properties); + getNeutronAgentModel().flush(provider); } else if (isTypeOpenStackImage()) { provider.setAdditionalProperties(new OpenstackImageProviderProperties()); } 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 c70399d..6d8a70e 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 @@ -525,6 +525,9 @@ @DefaultStringValue("Network Provider") String networkProviderButtonLabel(); + @DefaultStringValue("External Network Provider") + String externalNetworkProviderLabel(); + @DefaultStringValue("Override display address") String enableConsoleAddressOverride(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java index 4f4d01c..c5234c0 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/provider/ProviderPopupPresenterWidget.java @@ -6,8 +6,6 @@ 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 com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.shared.EventBus; @@ -45,13 +43,13 @@ getView().setTestResultImage((String) model.getTestResult().getEntity()); } }); - model.getNeutronAgentModel().getPropertyChangedEvent().addListener(new IEventListener() { + model.getNeutronAgentModel().isPluginTypeCustom().getEntityChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - if ("IsAvailable".equals(((PropertyChangedEventArgs) args).PropertyName)) { //$NON-NLS-1$ - getView().setAgentTabVisibility(model.getNeutronAgentModel().getIsAvailable()); - } + getView().setAgentTabVisibility(!(Boolean) model.getNeutronAgentModel() + .isPluginTypeCustom() + .getEntity()); } }); } 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 8bb6970..05206e8 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 @@ -389,21 +389,21 @@ FlowPanel externalProviderPanel; @UiField(provided = true) - @WithElementId("externalProvider") - public EntityModelWidgetWithInfo externalProvider; + @WithElementId("networkProvider") + public EntityModelWidgetWithInfo networkProvider; @Ignore - @WithElementId("externalProviderLabel") - public EntityModelLabel externalProviderLabel; + @WithElementId("networkProviderLabel") + public EntityModelLabel networkProviderLabel; - @Path(value = "externalProviders.selectedItem") - @WithElementId("externalProviderEditor") - public ListModelListBoxOnlyEditor<Object> externalProviderEditor; + @Path(value = "networkProviders.selectedItem") + @WithElementId("networkProviderEditor") + public ListModelListBoxOnlyEditor<Object> networkProviderEditor; @UiField(provided = true) - @Path(value = "providerType.selectedItem") - @WithElementId("providerType") - public ListModelListBoxEditor<Object> providerTypeEditor; + @Path(value = "networkProviderType.selectedItem") + @WithElementId("networkProviderType") + public ListModelListBoxEditor<Object> networkProviderTypeEditor; @UiField @Path(value = "providerPluginType.selectedItem") @@ -535,15 +535,15 @@ pmEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); externalHostProviderEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); - externalProviderLabel = new EntityModelLabel(); - externalProviderEditor = new ListModelListBoxOnlyEditor<Object>(new NullSafeRenderer<Object>() { + networkProviderLabel = new EntityModelLabel(); + networkProviderEditor = new ListModelListBoxOnlyEditor<Object>(new NullSafeRenderer<Object>() { @Override public String renderNullSafe(Object object) { return ((Provider) object).getName(); } }); - externalProvider = new EntityModelWidgetWithInfo(externalProviderLabel, externalProviderEditor, resources); - providerTypeEditor = new ListModelListBoxEditor<Object>(new EnumRenderer()); + networkProvider = new EntityModelWidgetWithInfo(networkProviderLabel, networkProviderEditor, resources); + networkProviderTypeEditor = new ListModelListBoxEditor<Object>(new EnumRenderer()); neutronAgentWidget = new NeutronAgentWidget(constants, resources, applicationTemplates); rbPassword = new RadioButton("1"); //$NON-NLS-1$ rbPublicKey = new RadioButton("1"); //$NON-NLS-1$ @@ -606,9 +606,9 @@ // Network Provider Tab networkProviderTab.setLabel(constants.networkProviderButtonLabel()); - externalProviderLabel.setText(constants.externalProviderLabel()); - externalProvider.setExplanation(applicationTemplates.italicText(constants.externalProviderExplanation())); - providerTypeEditor.setLabel(constants.typeProvider()); + networkProviderLabel.setText(constants.externalNetworkProviderLabel()); + networkProvider.setExplanation(applicationTemplates.italicText(constants.externalProviderExplanation())); + networkProviderTypeEditor.setLabel(constants.typeProvider()); providerPluginTypeEditor.setLabel(constants.pluginType()); } @@ -794,16 +794,15 @@ networkProviderTab.setVisible(object.showNetworkProviderTab()); final NeutronAgentModel model = object.getNeutronAgentModel(); neutronAgentWidget.edit(model); - neutronAgentPanel.setVisible(model.getIsAvailable()); - model.getPropertyChangedEvent().addListener(new IEventListener() { + neutronAgentPanel.setVisible(!(Boolean) model.isPluginTypeCustom().getEntity()); + model.isPluginTypeCustom().getEntityChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - if ("IsAvailable".equals(((PropertyChangedEventArgs) args).PropertyName)) { //$NON-NLS-1$ - neutronAgentPanel.setVisible(model.getIsAvailable()); - } + neutronAgentPanel.setVisible(!(Boolean) model.isPluginTypeCustom().getEntity()); } }); + addTextAndLinkAlert(fetchPanel, appConstants.fetchingHostFingerprint(), object.getSSHFingerPrint()); nameEditor.setFocus(true); } 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 5c93b1f..b4072ac 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 @@ -362,8 +362,8 @@ <t:DialogTab ui:field="networkProviderTab"> <t:content> <g:FlowPanel> - <w:EntityModelWidgetWithInfo ui:field="externalProvider"/> - <e:ListModelListBoxEditor ui:field="providerTypeEditor" /> + <w:EntityModelWidgetWithInfo ui:field="networkProvider"/> + <e:ListModelListBoxEditor ui:field="networkProviderTypeEditor" /> <e:ListModelSuggestBoxEditor ui:field = "providerPluginTypeEditor" /> <g:FlowPanel ui:field="neutronAgentPanel" addStyleNames="{style.sectionStyle}"> <p:NeutronAgentWidget ui:field="neutronAgentWidget" /> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java index 9029b96..5d036bc 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/provider/ProviderPopupView.java @@ -166,7 +166,7 @@ @Override public void edit(ProviderModel model) { - setAgentTabVisibility(model.getNeutronAgentModel().getIsAvailable()); + setAgentTabVisibility(!(Boolean) model.getNeutronAgentModel().isPluginTypeCustom().getEntity()); driver.edit(model); neutronAgentWidget.edit(model.getNeutronAgentModel()); } -- To view, visit http://gerrit.ovirt.org/17251 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6c4bc0c6aa3a27d7ef6a5b9b5e3fa5007f332561 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
