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

Reply via email to