Yaniv Bronhaim has uploaded a new change for review. Change subject: ui: adding discover host integration to AddHost view ......................................................................
ui: adding discover host integration to AddHost view This patch adds sublist under AddHost to allow picking and provision foreman hosts. Wiki: http://www.ovirt.org/Features/AdvancedForemanIntegration Change-Id: I0faf667019760326019368f044ee16265d41a620 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1081371 Signed-off-by: Yaniv Bronhaim <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.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/hosts/NewHostModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/providers/ProviderModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties 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 M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusCell.java 13 files changed, 326 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/27623/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index 1097506..2f81005 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -310,6 +310,10 @@ <!-- Scheduling --> <include name="common/scheduling/*.java"/> <include name="common/scheduling/parameters/*.java"/> + <!-- Foreman Objects --> + <include name="common/businessentities/ExternalHostGroup.java"/> + <include name="common/businessentities/ExternalHost.java"/> + <include name="common/businessentities/ExternalDiscoveredHost.java"/> </source> <super-source path="ui/uioverrides" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index b4a98a5..5c6e2fc 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -2985,6 +2985,41 @@ aQuery); } + public static void GetExternalProviderDiscoveredHostList(AsyncQuery aQuery, Provider provider) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + if (source == null) + { + return new ArrayList<VDS>(); + } + return source; + } + }; + ProviderQueryParameters params = new ProviderQueryParameters(); + params.setProvider(provider); + Frontend.getInstance().runQuery(VdcQueryType.GetDiscoveredHostListFromExternalProvider, params, aQuery); + } + + public static void GetExternalProviderHostGroupList(AsyncQuery aQuery, Provider provider) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + if (source == null) + { + return new ArrayList<VDS>(); + } + return source; + } + }; + + ProviderQueryParameters params = new ProviderQueryParameters(); + params.setProvider(provider); + Frontend.getInstance().runQuery(VdcQueryType.GetHostGroupsFromExternalProvider, params, aQuery); + } + public static void getAllProviders(AsyncQuery aQuery) { aQuery.converterCallback = new IAsyncConverter() { @Override 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 b58752f..ed3e5b8 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 @@ -28,6 +28,8 @@ import org.ovirt.engine.core.common.action.VdsActionParameters; import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; import org.ovirt.engine.core.common.businessentities.DbUser; +import org.ovirt.engine.core.common.businessentities.ExternalDiscoveredHost; +import org.ovirt.engine.core.common.businessentities.ExternalHostGroup; import org.ovirt.engine.core.common.businessentities.FenceActionType; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.RoleType; @@ -932,7 +934,6 @@ host.setDisablePowerManagementPolicy(model.getDisableAutomaticPowerManagement().getEntity()); host.setPmKdumpDetection(model.getPmKdumpDetection().getEntity()); - cancelConfirm(); model.startProgress(null); @@ -956,6 +957,14 @@ parameters.setNetworkMappings(model.getInterfaceMappings().getEntity()); } + if (model.getIsProvioning()) { + Provider provider = (Provider) model.getProviders().getSelectedItem(); + ExternalHostGroup hostGroup = (ExternalHostGroup) model.getExternalHostGroups().getSelectedItem(); + parameters.setAddProvisioned(provider.getId(), hostGroup, + ((ExternalDiscoveredHost)model.getExternalDiscoveredHosts().getSelectedItem()).getMac(), + ((ExternalDiscoveredHost)model.getExternalDiscoveredHosts().getSelectedItem()).getName()); + } + Frontend.getInstance().runAction(VdcActionType.AddVds, parameters, new IFrontendActionAsyncCallback() { @Override 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 ba1dfd8..33c01dd 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 @@ -91,6 +91,10 @@ return getHostId() == null; } + public boolean getIsProvioning() { + return getExternalDiscoveredHosts().getSelectedItem() != null; + } + private Guid privateHostId; public Guid getHostId() @@ -566,6 +570,16 @@ pmSecondaryConcurrent = value; } + private ListModel<String> externalHostsType; + + public ListModel<String> getExternalHostsType() { + return externalHostsType; + } + + private void setExternalHostsType(ListModel<String> value) { + externalHostsType = value; + } + private ListModel<String> pmVariants; public ListModel<String> getPmVariants() { @@ -786,6 +800,18 @@ privateExternalHostName = value; } + private ListModel privateExternalDiscoveredHosts; + + public ListModel getExternalDiscoveredHosts() { return privateExternalDiscoveredHosts; } + + protected void setExternalDiscoveredHosts(ListModel value) { privateExternalDiscoveredHosts = value; } + + private ListModel privateExternalHostGroups; + + public ListModel getExternalHostGroups() { return privateExternalHostGroups; } + + protected void setExternalHostGroups(ListModel value) { privateExternalHostGroups = value; } + private EntityModel<String> privateComment; public EntityModel<String> getComment() @@ -940,7 +966,21 @@ getProviderSearchFilter().setIsAvailable(false); setProviderSearchFilterLabel(new EntityModel<String>()); getProviderSearchFilterLabel().setIsAvailable(false); + setExternalDiscoveredHosts(new ListModel()); + getExternalDiscoveredHosts().setIsAvailable(false); + getExternalDiscoveredHosts().setSelectedItem(null); + setExternalHostGroups(new ListModel()); + getExternalHostGroups().setIsAvailable(false); + getExternalHostGroups().setSelectedItem(null); getUpdateHostsCommand().setIsExecutionAllowed(false); + + setExternalHostsType(new ListModel<String>()); + List<String> externalHostsTypes = new ArrayList<String>(); + externalHostsTypes.add(ConstantsManager.getInstance().getConstants().externalHostsDiscovered()); + externalHostsTypes.add(ConstantsManager.getInstance().getConstants().externalHostsProvisioned()); + getExternalHostsType().setItems(externalHostsTypes); + getExternalHostsType().setSelectedItem(externalHostsTypes.get(0)); + // Initialize primary PM fields. setManagementIp(new EntityModel<String>()); setPmUserName(new EntityModel<String>()); @@ -1754,7 +1794,7 @@ getCluster().setSelectedItem(Linq.firstOrDefault(clusters)); } - if (vds.getStatus() != VDSStatus.Maintenance && vds.getStatus() != VDSStatus.PendingApproval) { + if (vds.getStatus() != VDSStatus.Maintenance && vds.getStatus() != VDSStatus.PendingApproval && vds.getStatus() != VDSStatus.InstallingOS) { setAllowChangeHostPlacementPropertiesWhenNotInMaintenance(); } else if (selectedSystemTreeItem != null) 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 9ee8e2f..7e6d5e8 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 @@ -2,6 +2,8 @@ import java.util.ArrayList; +import org.ovirt.engine.core.common.businessentities.ExternalDiscoveredHost; +import org.ovirt.engine.core.common.businessentities.ExternalHostGroup; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.ProviderType; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -24,6 +26,10 @@ super(); getExternalHostName().getSelectedItemChangedEvent().addListener(this); getExternalHostName().setIsAvailable(ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly); + getExternalDiscoveredHosts().getSelectedItemChangedEvent().addListener(this); + getExternalDiscoveredHosts().setIsAvailable(ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly); + getExternalHostGroups().getSelectedItemChangedEvent().addListener(this); + getExternalHostGroups().setIsAvailable(ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly); getExternalHostProviderEnabled().setIsAvailable(ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly); getProviders().getSelectedItemChangedEvent().addListener(this); getProviders().setIsAvailable(ApplicationModeHelper.getUiMode() != ApplicationMode.GlusterOnly); @@ -38,18 +44,46 @@ getExternalHostProviderEnabled().getEntityChangedEvent().addListener(externalHostsListener); getExternalHostProviderEnabled().setEntity(false); getExternalHostName().setIsChangable(false); + getExternalDiscoveredHosts().setEntity(false); + getExternalDiscoveredHosts().setIsChangable(false); + getExternalDiscoveredHosts().setSelectedItem(null); + getExternalHostGroups().setEntity(false); + getExternalHostGroups().setIsChangable(false); + getExternalHostGroups().setSelectedItem(null); setEnableSearchHost(false); + + UpdateExternalHostModels(); } private void hostName_SelectedItemChanged() { - VDS host = getExternalHostName().getSelectedItem(); - + VDS host = (VDS) getExternalHostName().getSelectedItem(); + getExternalDiscoveredHosts().setSelectedItem(null); + getExternalHostGroups().setIsAvailable(false); + getExternalHostGroups().setIsChangable(false); if (host == null) { host = new VDS(); } updateModelFromVds(host, null, false, null); + getHost().setEntity(host.getName()); + getHost().setIsChangable(false); + } + + private void discoverHostName_SelectedItemChanged() { + ExternalDiscoveredHost dhost = (ExternalDiscoveredHost) getExternalDiscoveredHosts().getSelectedItem(); + getExternalHostName().setSelectedItem(null); + getExternalHostGroups().setIsAvailable(true); + getExternalHostGroups().setIsChangable(true); + + VDS vds = new VDS(); + if (dhost != null) + { + vds.setVdsName(dhost.getName()); + vds.setHostName(dhost.getIp()); + } + updateModelFromVds(vds, null, false, null); + getName().setIsChangable(true); } private void providers_SelectedItemChanged() { @@ -57,6 +91,10 @@ setEnableSearchHost(provider != null); getExternalHostName().setItems(null); getExternalHostName().setIsChangable(false); + getExternalDiscoveredHosts().setIsChangable(false); + getExternalDiscoveredHosts().setItems(null); + getExternalHostGroups().setIsChangable(false); + getExternalHostGroups().setItems(null); } private void updateHostList(String searchFilter) { @@ -76,9 +114,43 @@ } }; AsyncDataProvider.getExternalProviderHostList(getHostsQuery, provider.getId(), true, searchFilter); + + AsyncQuery getDiscoveredHostsQuery = new AsyncQuery(); + getDiscoveredHostsQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object result) + { + ArrayList<ExternalDiscoveredHost> hosts = (ArrayList<ExternalDiscoveredHost>) result; + ListModel externalDiscoveredHostsListModel = getExternalDiscoveredHosts(); + hosts.add(0, null); + externalDiscoveredHostsListModel.setItems(hosts); + externalDiscoveredHostsListModel.setIsChangable(true); + } + }; + AsyncDataProvider.GetExternalProviderDiscoveredHostList(getDiscoveredHostsQuery, provider); + + AsyncQuery getHostGroupsQuery = new AsyncQuery(); + getHostGroupsQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object result) + { + ArrayList<ExternalHostGroup> hostGroups = (ArrayList<ExternalHostGroup>) result; + ListModel externalHostGroupsListModel = getExternalHostGroups(); + hostGroups.add(0, null); + externalHostGroupsListModel.setItems(hostGroups); + externalHostGroupsListModel.setIsChangable(true); + } + }; + AsyncDataProvider.GetExternalProviderHostGroupList(getHostGroupsQuery, provider); } else { getExternalHostName().setItems(null); getExternalHostName().setIsChangable(false); + getExternalDiscoveredHosts().setItems(null); + getExternalDiscoveredHosts().setIsChangable(false); + getExternalDiscoveredHosts().setSelectedItem(null); + getExternalHostGroups().setItems(null); + getExternalHostGroups().setIsChangable(false); + getExternalHostGroups().setSelectedItem(null); setEnableSearchHost(false); } } @@ -96,6 +168,8 @@ ListModel<Provider> providersListModel = getProviders(); providersListModel.setItems(providers); providersListModel.setIsChangable(true); + providersListModel.setSelectedItem(providers.get(0)); + updateHostList(""); } }; AsyncDataProvider.getAllProvidersByType(getProvidersQuery, ProviderType.FOREMAN); @@ -112,6 +186,9 @@ hostName_SelectedItemChanged(); } else if (ev.matchesDefinition(ListModel.selectedItemChangedEventDefinition) && sender == getProviders()) { providers_SelectedItemChanged(); + } else if (ev.matchesDefinition(ListModel.selectedItemChangedEventDefinition) && sender == + getExternalDiscoveredHosts()) { + discoverHostName_SelectedItemChanged(); } } @@ -169,6 +246,26 @@ private void setHostProviderWidgetsAvailability(boolean enabled) { getProviders().setIsAvailable(enabled); + getExternalHostsType().setIsAvailable(enabled); + + if (enabled) { + updateHostList(""); + showExternalDiscoveredHost(true); + showExternalProvisionedHosts(false); + } else { + showExternalDiscoveredHost(false); + showExternalProvisionedHosts(false); + } + } + + private void showExternalDiscoveredHost(boolean enabled) { + getExternalDiscoveredHosts().setIsAvailable(enabled); + getExternalDiscoveredHosts().setSelectedItem(null); + getExternalHostGroups().setIsAvailable(enabled); + getExternalHostGroups().setSelectedItem(null); + } + + private void showExternalProvisionedHosts(boolean enabled) { getProviderSearchFilter().setIsAvailable(enabled); getProviderSearchFilterLabel().setIsAvailable(enabled); getExternalHostName().setIsAvailable(enabled); 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 9ce10c4..716bcbb 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 @@ -138,8 +138,10 @@ } private boolean isTypeRequiresAuthentication() { - ProviderType type = getType().getSelectedItem(); - return type == ProviderType.FOREMAN; + // TODO: rememeber to remove. this to allow using foreman livecd that does not require authentication. + //ProviderType type = (ProviderType) getType().getSelectedItem(); + //return type == ProviderType.FOREMAN; + return false; } private String getDefaultUrl(ProviderType type) { diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java index 353fbf7..88c40bb 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Enums.java @@ -97,6 +97,8 @@ String VDSStatus___Connecting(); + String VDSStatus___InstallingOS(); + String VdsTransparentHugePages___Never(); String VdsTransparentHugePages___MAdvise(); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 13cbd5b..5dbba86 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -2006,6 +2006,12 @@ @DefaultStringValue("Secondary") String secondaryPmVariant(); + @DefaultStringValue("Discovered Hosts") + String externalHostsDiscovered(); + + @DefaultStringValue("Provisioned Hosts") + String externalHostsProvisioned(); + @DefaultStringValue("Eject") String eject(); diff --git a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties index 2f28358..ea960d5 100644 --- a/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties +++ b/frontend/webadmin/modules/uicompat/src/main/resources/org/ovirt/engine/ui/uicompat/Enums.properties @@ -46,6 +46,7 @@ VDSStatus___Unassigned=Unassigned VDSStatus___Up=Up VDSStatus___Connecting=Connecting +VDSStatus___InstallingOS=Installing OS VdsTransparentHugePages___Never=Off VdsTransparentHugePages___MAdvise=On Demand VdsTransparentHugePages___Always=On 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 75e62fe..234aec7 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 @@ -205,6 +205,15 @@ @DefaultStringValue("External Provider") String externalProviderLabel(); + @DefaultStringValue("Host Provider") + String hostProviderTabLabel(); + + @DefaultStringValue("Discovered Hosts") + String discoveredHostsLabel(); + + @DefaultStringValue("Host Groups") + String hostGroupsLabel(); + @DefaultStringValue("If you would like this host's networks to be provisioned by an external provider, please choose it from the list.") String externalProviderExplanation(); @@ -494,13 +503,16 @@ @DefaultStringValue("Authentication") String hostPopupAuthLabel(); + @DefaultStringValue("Set Root Password") + String hostPopupAuthLabelForExternalHost(); + @DefaultStringValue("Automatically configure host firewall") String hostPopupOverrideIpTablesLabel(); - @DefaultStringValue("Use External Providers") + @DefaultStringValue("Use Foreman Providers") String hostPopupEnableExternalHostProvider(); - @DefaultStringValue("External Hosts") + @DefaultStringValue("Foreman Hosts") String hostPopupExternalHostName(); @DefaultStringValue("Update Hosts") 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 257e831..0ef6fad 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,6 +3,8 @@ import java.util.List; import org.ovirt.engine.core.common.action.VdsOperationActionParameters.AuthenticationMethod; +import org.ovirt.engine.core.common.businessentities.ExternalDiscoveredHost; +import org.ovirt.engine.core.common.businessentities.ExternalHostGroup; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; @@ -147,9 +149,24 @@ ListModelListBoxEditor<VDS> externalHostNameEditor; @UiField(provided = true) + @Path(value = "externalHostsType.selectedItem") + @WithElementId("externalHostsType") + ListModelListBoxOnlyEditor<String> externalHostsTypeEditor; + + @UiField(provided = true) @Path(value = "providers.selectedItem") @WithElementId("providers") ListModelListBoxEditor<Provider> providersEditor; + + @UiField(provided = true) + @Path(value = "externalDiscoveredHosts.selectedItem") + @WithElementId("externalDiscoveredHosts") + ListModelListBoxEditor<Object> externalDiscoveredHostsEditor; + + @UiField(provided = true) + @Path(value = "externalHostGroups.selectedItem") + @WithElementId("externalHostGroups") + ListModelListBoxEditor<Object> externalHostGroupsEditor; @UiField @Path(value = "host.entity") @@ -501,6 +518,22 @@ pmSecondaryTypeEditor = new ListModelListBoxEditor<String>(new StringRenderer<String>()); + externalDiscoveredHostsEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + public String renderNullSafe(Object object) { + return ((ExternalDiscoveredHost) object).getName(); + } + }); + + externalHostGroupsEditor = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + @Override + protected String renderNullSafe(Object object) { + return ((ExternalHostGroup) object).getName(); + } + }); + + externalHostsTypeEditor = new ListModelListBoxOnlyEditor<String>(new StringRenderer<String>()); + // Check boxes pmEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); externalHostProviderEnabledEditor = new EntityModelCheckBoxEditor(Align.RIGHT); @@ -573,6 +606,9 @@ // Network Provider Tab networkProviderTab.setLabel(constants.networkProviderButtonLabel()); + + externalDiscoveredHostsEditor.setLabel(constants.discoveredHostsLabel()); + externalHostGroupsEditor.setLabel(constants.hostGroupsLabel()); } private void applyModeCustomizations() { @@ -631,6 +667,26 @@ if (e.propertyName == "IsAvailable") { //$NON-NLS-1$ setPkPasswordSectionVisiblity(false); } + } + }); + + object.getExternalHostsType().getPropertyChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + PropertyChangedEventArgs e = (PropertyChangedEventArgs) args; + if (e.propertyName == "SelectedItem") { //$NON-NLS-1$ + boolean isDiscoverVisible = externalDiscoveredHostsEditor.isVisible(); + showExternalDiscoveredHost(!isDiscoverVisible); + showExternalProvisionedHosts(isDiscoverVisible); + usualFormToDiscover(isDiscoverVisible); + } + } + }); + + object.getExternalHostProviderEnabled().getPropertyChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + usualFormToDiscover(!object.getExternalHostProviderEnabled().getEntity()); } }); @@ -750,6 +806,18 @@ } }); + object.getExternalHostsType().getSelectedItemChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + + ListModel model = (ListModel) sender; + List items = (List) model.getItems(); + Object selectedItem = model.getSelectedItem(); + + updatePmPanelsVisibility(items.indexOf(selectedItem) == 0); + } + }); + updatePmPanelsVisibility(true); initExternalHostProviderWidgets(object.showExternalProviderPanel()); // TODO: remove setIsChangable when configured ssh username is enabled @@ -767,7 +835,10 @@ // All the rest shouldn't be visible externalHostProviderEnabledEditor.setVisible(isAvailable); externalHostNameEditor.setVisible(false); + externalHostsTypeEditor.setVisible(false); providersEditor.setVisible(false); + externalDiscoveredHostsEditor.setVisible(false); + externalHostGroupsEditor.setVisible(false); searchProviderPanel.setVisible(false); } @@ -789,6 +860,39 @@ pmPrimaryPanel.setVisible(primary); pmSecondaryPanel.setVisible(!primary); + } + + private void showExternalDiscoveredHost(boolean enabled) { + externalDiscoveredHostsEditor.setVisible(enabled); + externalHostGroupsEditor.setVisible(enabled); + } + private void showExternalProvisionedHosts(boolean enabled) { + externalHostNameEditor.setVisible(enabled); + searchProviderPanel.setVisible(enabled); + providerSearchFilterLabel.setVisible(enabled); + providerSearchFilterEditor.setVisible(enabled); + } + + private void usualFormToDiscover(boolean isUsual) { + if (!isUsual) { + authLabel.setText(constants.hostPopupAuthLabelForExternalHost()); + rbPublicKey.setVisible(false); + expanderContent.setVisible(false); + publicKeyEditor.getElement().getStyle().setVisibility(Visibility.HIDDEN); + authSshPortEditor.getElement().getStyle().setVisibility(Visibility.HIDDEN); + hostAddressEditor.setEnabled(true); + } else { + // Return to usual form + authLabel.setText(constants.hostPopupAuthLabel()); + rbPublicKey.setVisible(true); + expanderContent.setVisible(true); + publicKeyEditor.getElement().getStyle().setVisibility(Visibility.VISIBLE); + authSshPortEditor.getElement().getStyle().setVisibility(Visibility.VISIBLE); + + // maybe we can avoid the latter somehow + rbPassword.setEnabled(true); + displayPassPkWindow(true); + } } private void createSpmControls(final HostModel object) { @@ -937,6 +1041,8 @@ clusterEditor.setTabIndex(nextTabIndex++); externalHostProviderEnabledEditor.setTabIndex(nextTabIndex++); providersEditor.setTabIndex(nextTabIndex++); + externalDiscoveredHostsEditor.setTabIndex(nextTabIndex++); + externalHostGroupsEditor.setTabIndex(nextTabIndex++); providerSearchFilterLabel.setTabIndex(nextTabIndex++); nameEditor.setTabIndex(nextTabIndex++); hostAddressEditor.setTabIndex(nextTabIndex++); 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 64978c7..b7895c7 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 @@ -230,6 +230,7 @@ <ge:EntityModelCheckBoxEditor ui:field="externalHostProviderEnabledEditor"/> <e:ListModelListBoxEditor ui:field="providersEditor"/> </g:HorizontalPanel> + <e:ListModelListBoxOnlyEditor ui:field="externalHostsTypeEditor"/> <g:FlowPanel ui:field="searchProviderPanel" width="100%"> <g:FlowPanel addStyleNames="{style.filterIcon}"> <ge:StringEntityModelTextBoxEditor ui:field="providerSearchFilterLabel"/> @@ -243,6 +244,8 @@ </g:FlowPanel> </g:FlowPanel> <e:ListModelListBoxEditor ui:field="externalHostNameEditor"/> + <e:ListModelListBoxEditor ui:field="externalDiscoveredHostsEditor"/> + <e:ListModelListBoxEditor ui:field="externalHostGroupsEditor"/> </g:FlowPanel> <g:FlowPanel> <ge:StringEntityModelTextBoxEditor ui:field="nameEditor"/> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusCell.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusCell.java index 7a0620e..cacc6fd 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusCell.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/table/column/HostStatusCell.java @@ -57,6 +57,7 @@ statusImage = resources.nonOperationalImage(); break; case PendingApproval: + case InstallingOS: statusImage = resources.unconfiguredImage(); break; case Initializing: -- To view, visit http://gerrit.ovirt.org/27623 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0faf667019760326019368f044ee16265d41a620 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Yaniv Bronhaim <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
