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 <[email protected]>
Signed-off-by: Alon Bar-Lev <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches