Hello Yair Zaslavsky, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/30755 to review the following change. Change subject: aaa: Adding namespace dropdown list to "add user" dialog ...................................................................... aaa: Adding namespace dropdown list to "add user" dialog This both adds the namespace dropdown list and fixes search to support namespace Topic: AAA Bug-Url: https://bugzilla.redhat.com/1117502 Change-Id: Ic78559243c765271bf8e12abd035deba05226bda Signed-off-by: Yair Zaslavsky <yzasl...@redhat.com> Signed-off-by: Alon Bar-Lev <alo...@redhat.com> --- D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableAuthzNamespacesQuery.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableNamespacesQuery.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/common/queries/DirectorySearchParameters.java D backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAvailableAuthzNamespacesQueryParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainGroupsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainUsersResource.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.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/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 14 files changed, 204 insertions(+), 42 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/30755/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableAuthzNamespacesQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableAuthzNamespacesQuery.java deleted file mode 100644 index 6104d61..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableAuthzNamespacesQuery.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.ovirt.engine.core.bll; - -public class GetAvailableAuthzNamespacesQuery { - -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableNamespacesQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableNamespacesQuery.java new file mode 100644 index 0000000..f522adf --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAvailableNamespacesQuery.java @@ -0,0 +1,37 @@ +package org.ovirt.engine.core.bll; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import org.ovirt.engine.api.extensions.aaa.Authz; +import org.ovirt.engine.core.aaa.AuthzUtils; +import org.ovirt.engine.core.bll.context.EngineContext; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.extensions.mgr.ExtensionProxy; +import org.ovirt.engine.core.utils.collections.MultiValueMapUtils; +import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager; + +public class GetAvailableNamespacesQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { + + public GetAvailableNamespacesQuery(P parameters) { + this(parameters, null); + } + + public GetAvailableNamespacesQuery(P parameters, EngineContext engineContext) { + super(parameters, engineContext); + } + + + @Override + protected void executeQueryCommand() { + HashMap<String, List<String>> namespacesMap = new HashMap<>(); + for (ExtensionProxy authz: EngineExtensionsManager.getInstance().getExtensionsByService(Authz.class.getName())) { + for (String namespace : authz.getContext().get(Authz.ContextKeys.AVAILABLE_NAMESPACES, Arrays.asList("*"))) { + MultiValueMapUtils.addToMap(AuthzUtils.getName(authz), namespace, namespacesMap); + + } + } + setReturnValue(namespacesMap); + } +} 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 5d075f6..0e7810f 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 @@ -1,12 +1,12 @@ package org.ovirt.engine.core.bll; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; -import org.ovirt.engine.api.extensions.aaa.Authz; import org.ovirt.engine.core.aaa.AuthenticationProfileRepository; import org.ovirt.engine.core.aaa.DirectoryGroup; import org.ovirt.engine.core.aaa.DirectoryUser; @@ -33,9 +33,12 @@ import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.SearchEngineIllegalCharacterException; import org.ovirt.engine.core.common.errors.SqlInjectionException; +import org.ovirt.engine.core.common.queries.DirectorySearchParameters; import org.ovirt.engine.core.common.queries.SearchParameters; -import org.ovirt.engine.core.common.utils.ListUtils.Filter; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.ListUtils; +import org.ovirt.engine.core.common.utils.ListUtils.Filter; import org.ovirt.engine.core.compat.DateTime; import org.ovirt.engine.core.compat.TimeSpan; import org.ovirt.engine.core.dao.SearchDAO; @@ -179,11 +182,20 @@ } 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())); + DirectorySearchParameters directorySearchParams = (DirectorySearchParameters) getParameters(); + List<String> namespaces = Arrays.asList(directorySearchParams.getNamespace()); + if (directorySearchParams.getNamespace() == null) { + HashMap<String, List<String>> namespacesMap = + runInternalQuery(VdcQueryType.GetAvailableNamespaces, new VdcQueryParametersBase()).getReturnValue(); + namespaces = namespacesMap.get(data.getDomain()); } + List<DirectoryUser> results = new ArrayList<>(); + for (String namespace : namespaces) { + results.addAll(DirectoryUtils.findDirectoryUsersByQuery(authz, + namespace, + data.getQuery())); + } return results; } @@ -195,9 +207,19 @@ } ExtensionProxy authz = EngineExtensionsManager.getInstance().getExtensionByName(data.getDomain()); + DirectorySearchParameters directorySearchParams = (DirectorySearchParameters) getParameters(); + List<String> namespaces = Arrays.asList(directorySearchParams.getNamespace()); + if (directorySearchParams.getNamespace() == null) { + HashMap<String, List<String>> namespacesMap = + runInternalQuery(VdcQueryType.GetAvailableNamespaces, new VdcQueryParametersBase()).getReturnValue(); + namespaces = namespacesMap.get(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())); + for (String namespace : namespaces) { + results.addAll(DirectoryUtils.findDirectoryGroupsByQuery(authz, + namespace, + data.getQuery())); } return results; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/DirectorySearchParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/DirectorySearchParameters.java new file mode 100644 index 0000000..f96e975 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/DirectorySearchParameters.java @@ -0,0 +1,40 @@ +package org.ovirt.engine.core.common.queries; + +import org.ovirt.engine.core.common.interfaces.SearchType; + +public class DirectorySearchParameters extends SearchParameters { + + /** + * + */ + private static final long serialVersionUID = 1831775270159639568L; + + private String namespace; + + public DirectorySearchParameters() { + super(); + } + + public DirectorySearchParameters(String searchPattern, SearchType searchType, String namespace) { + super(searchPattern, searchType); + this.namespace = namespace; + } + + public DirectorySearchParameters(String searchPattern, SearchType searchType) { + this(searchPattern, searchType, null); + } + + public DirectorySearchParameters(String searchPattern, + SearchType searchType, + boolean caseSensitive, + String namespace) { + super(searchPattern, searchType, caseSensitive); + this.namespace = namespace; + } + + public String getNamespace() { + return namespace; + } + + +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAvailableAuthzNamespacesQueryParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAvailableAuthzNamespacesQueryParameters.java deleted file mode 100644 index 2ae76c5..0000000 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAvailableAuthzNamespacesQueryParameters.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.ovirt.engine.core.common.queries; - -public class GetAvailableAuthzNamespacesQueryParameters extends VdcQueryParametersBase { - - /** - * - */ - private static final long serialVersionUID = 2473511045533756911L; - private String authzName; - - public GetAvailableAuthzNamespacesQueryParameters() { - } - - public GetAvailableAuthzNamespacesQueryParameters(String authzName) { - this.authzName = authzName; - } - - public String getAuthzName() { - return authzName; - } - -} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index d1da520..43aa48e 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -156,6 +156,7 @@ // Directory queries: GetDirectoryUserById(VdcQueryAuthType.User), GetDirectoryGroupById(VdcQueryAuthType.User), + GetAvailableNamespaces(VdcQueryAuthType.User), // Groups queries: GetAllDbGroups, @@ -204,7 +205,6 @@ // Search queries Search, - GetAvailableAuthzNamespaces, // Public services GetDomainList(VdcQueryAuthType.User), diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java index 18891d2..4ccdae0 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendResource.java @@ -75,7 +75,7 @@ protected <T> T getEntity(Class<T> clz, SearchType searchType, String constraint) { try { VdcQueryReturnValue result = runQuery(VdcQueryType.Search, - new SearchParameters(constraint, searchType)); + createSearchParameters(searchType, constraint)); if (!result.getSucceeded()) { backendFailure(result.getExceptionString()); } @@ -85,11 +85,16 @@ } } + protected VdcQueryReturnValue runQuery(VdcQueryType queryType, VdcQueryParametersBase queryParams) { queryParams.setFiltered(isFiltered()); return backend.runQuery(queryType, sessionize(queryParams)); } + protected SearchParameters createSearchParameters(SearchType searchType, String constraint) { + return new SearchParameters(constraint, searchType); + } + protected <T> T getEntity(Class<T> clz, VdcQueryType query, VdcQueryParametersBase queryParams, String identifier) { return getEntity(clz, query, queryParams, identifier, false); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainGroupsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainGroupsResource.java index 615540f..4a0e452 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainGroupsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainGroupsResource.java @@ -14,6 +14,8 @@ import org.ovirt.engine.api.restapi.resource.SingleEntityResource; import org.ovirt.engine.core.aaa.DirectoryGroup; import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.DirectorySearchParameters; +import org.ovirt.engine.core.common.queries.SearchParameters; /** * This resource corresponds to the groups that exist in a directory accessible to the engine. Those groups may or may @@ -40,6 +42,11 @@ return parent; } + @Override + protected SearchParameters createSearchParameters(SearchType searchType, String constraint) { + return new DirectorySearchParameters(constraint, searchType); + } + public Domain getDirectory() { return parent.getDirectory(); } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainUsersResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainUsersResource.java index f19a7c2..a4b4652 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainUsersResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/aaa/BackendDomainUsersResource.java @@ -14,6 +14,8 @@ import org.ovirt.engine.api.restapi.resource.SingleEntityResource; import org.ovirt.engine.core.aaa.DirectoryUser; import org.ovirt.engine.core.common.interfaces.SearchType; +import org.ovirt.engine.core.common.queries.DirectorySearchParameters; +import org.ovirt.engine.core.common.queries.SearchParameters; /** * This resource corresponds to the users that exist in a directory accessible @@ -47,6 +49,11 @@ } @Override + protected SearchParameters createSearchParameters(SearchType searchType, String constraint) { + return new DirectorySearchParameters(constraint, searchType); + } + + @Override @SingleEntityResource public DomainUserResource getDomainUserSubResource(String id) { return inject(new BackendDomainUserResource(id, this)); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index a603f44..56da05e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -1190,6 +1190,9 @@ @DefaultStringValue("Search:") String searchPermissionsPopup(); + @DefaultStringValue("Namespace:") + String namespacePermissionsPopup(); + // Pool General @DefaultStringValue("Name") String namePoolGeneral(); 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 d81f5a0..da34c81 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 @@ -53,6 +53,11 @@ @WithElementId("profile") public ListModelListBoxEditor<Object> profileSelection; + @UiField(provided = true) + @Path("namespace.selectedItem") + @WithElementId("namespace") + public ListModelListBoxEditor<String> namespaceSelection; + @UiField @Ignore public Label roleToAssignLabel; @@ -129,6 +134,13 @@ return ((Role) object).getname(); } }); + + namespaceSelection = new ListModelListBoxEditor<String>(new NullSafeRenderer<String>() { + @Override + protected String renderNullSafe(String object) { + return object; + } + }); } private void initTable(CommonApplicationConstants constants) { @@ -157,6 +169,8 @@ void localize(CommonApplicationConstants constants) { searchButton.setLabel(constants.goPermissionsPopup()); + namespaceSelection.setLabel(constants.namespacePermissionsPopup()); + } @Override 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 2ea7f8a..5056f7a 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 @@ -27,7 +27,7 @@ } .searchStringEditor { - width: 250px; + width: 200px; height: 18px; margin-left: 5px; margin-top: 3px; @@ -39,13 +39,18 @@ height: 30px; } + .namespaceSelection { + width: 320px; + height: 30px; + } + .everyonePanel { height: 30px; margin-top: 3px; } .searchStringPanel { - width: 660px; + width: 860px; height: 30px; } @@ -63,7 +68,7 @@ } </ui:style> - <d:SimpleDialogPanel width="700px" height="500px"> + <d:SimpleDialogPanel width="900px" height="500px"> <d:content> <g:FlowPanel> <g:SimplePanel ui:field="everyonePanel" addStyleNames="{style.everyonePanel}"> @@ -74,6 +79,7 @@ </g:SimplePanel> <g:HorizontalPanel verticalAlignment="ALIGN_MIDDLE" addStyleNames="{style.searchStringPanel}"> <e:ListModelListBoxEditor addStyleNames="{style.profileSelection}" label="{constants.searchPermissionsPopup}" ui:field="profileSelection" /> + <e:ListModelListBoxEditor addStyleNames="{style.namespaceSelection}" label="{constants.namespacePermissionsPopup}" ui:field="namespaceSelection" /> <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/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 3d7639d..2bd09bd 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 @@ -1208,6 +1208,17 @@ return uniqueOsNames; } + public static void getAAANamespaces(AsyncQuery aQuery) { + aQuery.converterCallback = new IAsyncConverter() { + @Override + public Object Convert(Object source, AsyncQuery _asyncQuery) + { + return source != null ? (HashMap<String, List<String>>) source : new HashMap<String, List<String>>(); + } + }; + Frontend.getInstance().runQuery(VdcQueryType.GetAvailableNamespaces, new VdcQueryParametersBase(), aQuery); + } + public static void getRoleList(AsyncQuery aQuery) { aQuery.converterCallback = new IAsyncConverter() { @Override 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 8ce84df..d5be621 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 @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -14,7 +15,7 @@ import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.aaa.DbUser; import org.ovirt.engine.core.common.interfaces.SearchType; -import org.ovirt.engine.core.common.queries.SearchParameters; +import org.ovirt.engine.core.common.queries.DirectorySearchParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.StringHelper; @@ -29,6 +30,7 @@ import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; 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; public class AdElementListModel extends SearchableListModel @@ -45,6 +47,8 @@ } private Iterable privateExcludeItems; + + private HashMap<String, List<String>> namespacesMap; public Iterable getExcludeItems() { @@ -66,6 +70,16 @@ private void setProfile(ListModel value) { privateProfile = value; + } + + private ListModel<String> privateNamespace; + + public void setNamespace(ListModel<String> value) { + privateNamespace = value; + } + + public ListModel<String> getNamespace() { + return privateNamespace; } private ListModel privateRole; @@ -157,6 +171,7 @@ { setRole(new ListModel()); setProfile(new ListModel()); + setNamespace(new ListModel()); setSelectAll(new EntityModel()); getSelectAll().setEntity(false); @@ -179,9 +194,25 @@ @Override public void onSuccess(Object model, Object result) { populateProfiles((List<ProfileEntry>) result); + getProfile().getSelectedItemChangedEvent().addListener(new IEventListener() { + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + populateNamespaces(); + } + }); } })); + AsyncDataProvider.getAAANamespaces(new AsyncQuery(this, new INewAsyncCallback() { + + @Override + public void onSuccess(Object model, Object result) { + if (getProfile().getSelectedItem() != null) { + namespacesMap = (HashMap<String, List<String>>) result; + populateNamespaces(); + } + } + })); AsyncDataProvider.getRoleList(new AsyncQuery(this, new INewAsyncCallback() { @@ -196,6 +227,12 @@ protected void populateProfiles(List<ProfileEntry> profiles) { getProfile().setItems(profiles); getProfile().setSelectedItem(Linq.firstOrDefault(profiles)); + } + + protected void populateNamespaces() { + if (namespacesMap != null) { + getNamespace().setItems(namespacesMap.get(((ProfileEntry) getProfile().getSelectedItem()).getAuthz())); + } } protected void populateRoles(List<Role> roles){ @@ -340,13 +377,13 @@ protected void findGroups(String searchString, AsyncQuery query) { Frontend.getInstance() .runQuery(VdcQueryType.Search, - new SearchParameters("ADGROUP@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryGroup), query); //$NON-NLS-1$ //$NON-NLS-2$ + new DirectorySearchParameters("ADGROUP@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryGroup, getNamespace().getSelectedItem()), query); //$NON-NLS-1$ //$NON-NLS-2$ } protected void findUsers(String searchString, AsyncQuery query) { Frontend.getInstance() .runQuery(VdcQueryType.Search, - new SearchParameters("ADUSER@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryUser), query); //$NON-NLS-1$ //$NON-NLS-2$ + new DirectorySearchParameters("ADUSER@" + ((ProfileEntry) getProfile().getSelectedItem()).getAuthz() + ": " + searchString, SearchType.DirectoryUser, getNamespace().getSelectedItem()), query); //$NON-NLS-1$ //$NON-NLS-2$ } protected void onUserAndAdGroupsLoaded(AdElementListModel adElementListModel) -- To view, visit http://gerrit.ovirt.org/30755 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic78559243c765271bf8e12abd035deba05226bda Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Alon Bar-Lev <alo...@redhat.com> Gerrit-Reviewer: Yair Zaslavsky <yzasl...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches