Yair Zaslavsky has uploaded a new change for review. Change subject: aaa: Fixing search to search by authz ......................................................................
aaa: Fixing search to search by authz In this patch, search is fixed to search by authz. In addition - at frontend, the drop down list for domains shows a combination of (profile,authz) (i.e - (profile,domain) Bug-Url: https://bugzilla.redhat.com/1117488 Change-Id: Ic1867577a900e2c7a815d443b771e2576bd8aea2 Topic: AAA Signed-off-by: Yair Zaslavsky <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAAAProfileListQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/ProfileEntry.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.ui.xml 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/users/AdElementListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPortalAdElementListModel.java 9 files changed, 107 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/30247/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAAAProfileListQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAAAProfileListQuery.java index 64e2df6..5268909 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAAAProfileListQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAAAProfileListQuery.java @@ -2,10 +2,13 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.List; import org.ovirt.engine.core.aaa.AuthenticationProfile; import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; +import org.ovirt.engine.core.aaa.AuthzUtils; +import org.ovirt.engine.core.aaa.ProfileEntry; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; public class GetAAAProfileListQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { @@ -17,12 +20,20 @@ @Override protected void executeQueryCommand() { List<AuthenticationProfile> profiles = AuthenticationProfileRepository.getInstance().getProfiles(); - List<String> names = new ArrayList<>(profiles.size()); + List<ProfileEntry> names = new ArrayList<>(profiles.size()); for (AuthenticationProfile profile : profiles) { - names.add(profile.getName()); + names.add(new ProfileEntry(profile.getName(), AuthzUtils.getName(profile.getAuthz()))); } - Collections.sort(names); + Collections.sort(names, new Comparator<ProfileEntry>() { + @Override + public int compare(ProfileEntry lhs, ProfileEntry rhs) { + return lhs.getProfile().compareTo(rhs.getProfile()) != 0 ? + lhs.getProfile().compareTo(rhs.getProfile()) + : lhs.getAuthz().compareTo(rhs.getAuthz()); + + } + }); getQueryReturnValue().setReturnValue(names); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java index 479946d..0515273 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java @@ -45,6 +45,7 @@ import org.ovirt.engine.core.searchbackend.SyntaxCheckerFactory; import org.ovirt.engine.core.searchbackend.SyntaxContainer; import org.ovirt.engine.core.searchbackend.SyntaxError; +import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager; public class SearchQuery<P extends SearchParameters> extends QueriesCommandBase<P> { private static final HashMap<String, QueryData> mQueriesCache = new HashMap<String, QueryData>(); @@ -177,7 +178,7 @@ return Collections.emptyList(); } - ExtensionProxy authz = AuthenticationProfileRepository.getInstance().getProfile(data.getDomain()).getAuthz(); + ExtensionProxy authz = EngineExtensionsManager.getInstance().getExtensionByName(data.getDomain()); List<DirectoryUser> results = new ArrayList<>(); for (String namespace : authz.getContext().<List<String>> get(Authz.ContextKeys.AVAILABLE_NAMESPACES)) { results.addAll(DirectoryUtils.findDirectoryUsersByQuery(authz, namespace, data.getQuery())); @@ -193,7 +194,7 @@ return Collections.emptyList(); } - ExtensionProxy authz = AuthenticationProfileRepository.getInstance().getProfile(data.getDomain()).getAuthz(); + ExtensionProxy authz = EngineExtensionsManager.getInstance().getExtensionByName(data.getDomain()); List<DirectoryGroup> results = new ArrayList<>(); for (String namespace : authz.getContext().<List<String>> get(Authz.ContextKeys.AVAILABLE_NAMESPACES)) { results.addAll(DirectoryUtils.findDirectoryGroupsByQuery(authz, namespace, data.getQuery())); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/ProfileEntry.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/ProfileEntry.java new file mode 100644 index 0000000..bedb4b6 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/aaa/ProfileEntry.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.core.aaa; + +import java.io.Serializable; + +public class ProfileEntry implements Serializable { + + private static final long serialVersionUID = 8525199877264821199L; + + private String profile; + private String authz; + + public ProfileEntry() { + } + + public ProfileEntry(String profile, String authz) { + this.profile = profile; + this.authz = authz; + } + + public String getProfile() { + return profile; + } + + public String getAuthz() { + return authz; + } + + public String toString() { + return profile + " (" + authz + ")"; //$NON-NLS-1$ //$NON-NLS-2$ + } + +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.java index f11358f..d2d2d0f 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.java @@ -2,6 +2,7 @@ import java.util.ArrayList; +import org.ovirt.engine.core.aaa.ProfileEntry; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.ui.common.CommonApplicationConstants; @@ -48,9 +49,9 @@ public UiCommandButton searchButton; @UiField(provided = true) - @Path("domain.selectedItem") - @WithElementId("domain") - public ListModelListBoxEditor<Object> domainSelection; + @Path("profile.selectedItem") + @WithElementId("profile") + public ListModelListBoxEditor<Object> profileSelection; @UiField @Ignore @@ -115,10 +116,10 @@ protected abstract T doFlush(); private void initListBoxEditors() { - domainSelection = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { + profileSelection = new ListModelListBoxEditor<Object>(new NullSafeRenderer<Object>() { @Override public String renderNullSafe(Object object) { - return object.toString(); + return ((ProfileEntry) object).toString(); } }); @@ -213,7 +214,7 @@ @Override public void changeStateOfElementsWhenAccessIsForEveryone(boolean isEveryone) { - domainSelection.setEnabled(!isEveryone); + profileSelection.setEnabled(!isEveryone); searchStringEditor.setEnabled(!isEveryone); searchButton.getCommand().setIsExecutionAllowed(!isEveryone); searchItems.setVisible(!isEveryone); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.ui.xml index 166d509..2ea7f8a 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/popup/permissions/AbstractPermissionsPopupView.ui.xml @@ -34,7 +34,7 @@ margin-bottom: 3px; } - .domainSelection { + .profileSelection { width: 300px; height: 30px; } @@ -73,7 +73,7 @@ </g:HorizontalPanel> </g:SimplePanel> <g:HorizontalPanel verticalAlignment="ALIGN_MIDDLE" addStyleNames="{style.searchStringPanel}"> - <e:ListModelListBoxEditor addStyleNames="{style.domainSelection}" label="{constants.searchPermissionsPopup}" ui:field="domainSelection" /> + <e:ListModelListBoxEditor addStyleNames="{style.profileSelection}" label="{constants.searchPermissionsPopup}" ui:field="profileSelection" /> <e:TextBoxChanger addStyleNames="{style.searchStringEditor}" ui:field="searchStringEditor" /> <w:UiCommandButton ui:field="searchButton" addStyleNames="{style.goButton} appv_searchButton_pfly_fix" /> </g:HorizontalPanel> 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 3821706..66ad0f8 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 @@ -17,6 +17,7 @@ <include name="common/businessentities/LdapUser.java" /> <include name="aaa/AuthType.java" /> <include name="aaa/DirectoryEntry.java" /> + <include name="aaa/ProfileEntry.java" /> <include name="aaa/DirectoryEntryStatus.java" /> <include name="aaa/DirectoryGroup.java" /> <include name="aaa/DirectoryUser.java" /> 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 902fe62..1213db2 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 @@ -16,6 +16,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.ovirt.engine.core.aaa.ProfileEntry; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.EventNotificationEntity; import org.ovirt.engine.core.common.VdcActionUtils; @@ -471,16 +472,25 @@ return diskInterfaces; } + public static void getAAAProfilesList(AsyncQuery aQuery) { + convertAAAProfilesResult(aQuery); + Frontend.getInstance().runQuery(VdcQueryType.GetAAAProfileList, new VdcQueryParametersBase(), aQuery); + } + public static void getAAAProfilesListViaPublic(AsyncQuery aQuery) { + convertAAAProfilesResult(aQuery); + Frontend.getInstance().runPublicQuery(VdcQueryType.GetAAAProfileList, new VdcQueryParametersBase(), aQuery); + } + + public static void getAAAProfilesEntriesList(AsyncQuery aQuery) { aQuery.converterCallback = new IAsyncConverter() { @Override public Object Convert(Object source, AsyncQuery _asyncQuery) { - return source != null ? new ArrayList<String>((ArrayList<String>) source) - : new ArrayList<String>(); + return source != null ? (Collection<ProfileEntry>) source : new ArrayList<ProfileEntry>(); } }; - Frontend.getInstance().runPublicQuery(VdcQueryType.GetAAAProfileList, new VdcQueryParametersBase(), aQuery); + Frontend.getInstance().runQuery(VdcQueryType.GetAAAProfileList, new VdcQueryParametersBase(), aQuery); } public static void getIsoDomainByDataCenterId(AsyncQuery aQuery, Guid dataCenterId) { @@ -1195,18 +1205,6 @@ public static HashMap<Integer, String> getOsUniqueOsNames() { return uniqueOsNames; - } - - public static void getAAAProfilesList(AsyncQuery aQuery) { - aQuery.converterCallback = new IAsyncConverter() { - @Override - public Object Convert(Object source, AsyncQuery _asyncQuery) - { - return source != null ? new ArrayList<String>((ArrayList<String>) source) - : new ArrayList<String>(); - } - }; - Frontend.getInstance().runQuery(VdcQueryType.GetAAAProfileList, new VdcQueryParametersBase(), aQuery); } public static void getRoleList(AsyncQuery aQuery) { @@ -3765,4 +3763,19 @@ model.setRole(storageDomainType); } } + + private static void convertAAAProfilesResult(AsyncQuery aQuery) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + List<String> results = new ArrayList<String>(); + for (ProfileEntry profileEntry : (Collection<ProfileEntry>) source) { + results.add(profileEntry.getProfile()); + } + return results; + } + }; + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java index ecec2f1..1a94543 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/AdElementListModel.java @@ -9,6 +9,7 @@ import org.ovirt.engine.core.aaa.DirectoryGroup; import org.ovirt.engine.core.aaa.DirectoryUser; +import org.ovirt.engine.core.aaa.ProfileEntry; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.common.businessentities.Role; @@ -55,16 +56,16 @@ privateExcludeItems = value; } - private ListModel privateDomain; + private ListModel privateProfile; - public ListModel getDomain() + public ListModel getProfile() { - return privateDomain; + return privateProfile; } - private void setDomain(ListModel value) + private void setProfile(ListModel value) { - privateDomain = value; + privateProfile = value; } private ListModel privateRole; @@ -155,7 +156,7 @@ public AdElementListModel() { setRole(new ListModel()); - setDomain(new ListModel()); + setProfile(new ListModel()); setSelectAll(new EntityModel()); getSelectAll().setEntity(false); @@ -173,11 +174,11 @@ setIsTimerDisabled(true); - AsyncDataProvider.getAAAProfilesList(new AsyncQuery(this, new INewAsyncCallback() { + AsyncDataProvider.getAAAProfilesEntriesList(new AsyncQuery(this, new INewAsyncCallback() { @Override public void onSuccess(Object model, Object result) { - populateDomains((List<String>) result); + populateProfiles((List<ProfileEntry>) result); } })); @@ -192,9 +193,9 @@ })); } - protected void populateDomains(List<String> domains){ - getDomain().setItems(domains); - getDomain().setSelectedItem(Linq.firstOrDefault(domains)); + protected void populateProfiles(List<ProfileEntry> profiles) { + getProfile().setItems(profiles); + getProfile().setSelectedItem(Linq.firstOrDefault(profiles)); } protected void populateRoles(List<Role> roles){ @@ -337,11 +338,15 @@ } protected void findGroups(String searchString, AsyncQuery query) { - Frontend.getInstance().runQuery(VdcQueryType.Search, new SearchParameters("ADGROUP@" + getDomain().getSelectedItem() + ": " + searchString, SearchType.DirectoryGroup), query); //$NON-NLS-1$ //$NON-NLS-2$ + Frontend.getInstance() + .runQuery(VdcQueryType.Search, + new SearchParameters("ADGROUP@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryGroup), query); //$NON-NLS-1$ //$NON-NLS-2$ } protected void findUsers(String searchString, AsyncQuery query) { - Frontend.getInstance().runQuery(VdcQueryType.Search, new SearchParameters("ADUSER@" + getDomain().getSelectedItem() + ": " + searchString, SearchType.DirectoryUser), query); //$NON-NLS-1$ //$NON-NLS-2$ + Frontend.getInstance() + .runQuery(VdcQueryType.Search, + new SearchParameters("ADUSER@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryUser), query); //$NON-NLS-1$ //$NON-NLS-2$ } protected void onUserAndAdGroupsLoaded(AdElementListModel adElementListModel) diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPortalAdElementListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPortalAdElementListModel.java index 558ef21..2185618 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPortalAdElementListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserPortalAdElementListModel.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Set; +import org.ovirt.engine.core.aaa.ProfileEntry; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -41,7 +42,7 @@ private DbUser getTargetDbUser() { DbUser dbUser = new DbUser(); dbUser.setLoginName(getSearchString()); - dbUser.setDomain(getDomain().getSelectedItem().toString()); + dbUser.setDomain(((ProfileEntry) getProfile().getSelectedItem()).getAuthz()); return dbUser; } -- To view, visit http://gerrit.ovirt.org/30247 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic1867577a900e2c7a815d443b771e2576bd8aea2 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Yair Zaslavsky <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
