Ravi Nori has uploaded a new change for review. Change subject: core, userportal: Cannot add AD group to a new VM from the user portal ......................................................................
core, userportal: Cannot add AD group to a new VM from the user portal After creating a new VM from the user portal, it's not possible to add an AD group to the VM Change-Id: I9cce0e664b5bbe0110a03f41e1d6eb9c822cf8ef Bug-Url: https://bugzilla.redhat.com/1114041 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.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 4 files changed, 92 insertions(+), 26 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/30707/1 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 14c42e5..8a9b252 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 @@ -158,7 +158,7 @@ GetDirectoryGroupById(VdcQueryAuthType.User), // Groups queries: - GetAllDbGroups, + GetAllDbGroups(VdcQueryAuthType.User), GetDbGroupById, // VM pools queries diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java index 50a4610..d2dcb3c 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Linq.java @@ -32,6 +32,7 @@ import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.aaa.DbGroup; import org.ovirt.engine.core.common.businessentities.aaa.DbUser; import org.ovirt.engine.core.common.businessentities.comparators.LexoNumericComparator; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; @@ -1123,10 +1124,43 @@ @Override public boolean match(DbUser source) { + String targetName = target.getLoginName(); + if (!StringHelper.isNullOrEmpty(targetName)) { + targetName = targetName.toLowerCase(); + } return ObjectUtils.objectsEqual(source.getDomain(), target.getDomain()) && (StringHelper.isNullOrEmpty(target.getLoginName()) || "*".equals(target.getLoginName()) //$NON-NLS-1$ - || source.getLoginName().toLowerCase().startsWith(target.getLoginName())); + || source.getLoginName().toLowerCase().startsWith(targetName)); + } + } + + public final static class DbGroupPredicate implements IPredicate<DbGroup> + { + private final DbGroup target; + + public DbGroupPredicate(DbGroup target) + { + this.target = target; + } + + @Override + public boolean match(DbGroup source) + { + String groupName = source.getName().toLowerCase(); + String targetName = target.getName(); + if (!StringHelper.isNullOrEmpty(targetName)) { + targetName = targetName.toLowerCase(); + } + int lastIndex = groupName.lastIndexOf("/"); //$NON-NLS-1$ + if (lastIndex != -1) { + groupName = groupName.substring(lastIndex+1); + } + return ObjectUtils.objectsEqual(source.getDomain(), target.getDomain()) + && (StringHelper.isNullOrEmpty(target.getName()) + || "*".equals(target.getName()) //$NON-NLS-1$ + || groupName.startsWith(targetName)) + || source.getName().toLowerCase().startsWith(targetName); } } 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..8c980ea 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 @@ -286,27 +286,7 @@ } } adElementListModel.setgroups(new ArrayList<EntityModel>()); - for (IVdcQueryable item : (Collection<IVdcQueryable>) ((VdcQueryReturnValue) ReturnValue).getReturnValue()) - { - DirectoryGroup a = (DirectoryGroup) item; - if (!excludeUsers.contains(a.getId())) - { - // XXX: This should use DbGroup and not DbUser. - DbUser tempVar3 = new DbUser(); - tempVar3.setExternalId(a.getId()); - tempVar3.setFirstName(a.getName()); - tempVar3.setLastName(""); //$NON-NLS-1$ - tempVar3.setLoginName(""); //$NON-NLS-1$ - tempVar3.setDomain(a.getDirectoryName()); - tempVar3.setNamespace(a.getNamespace()); - DbUser user = tempVar3; - - EntityModel tempVar4 = new EntityModel(); - tempVar4.setEntity(user); - adElementListModel.getgroups().add(tempVar4); - } - } - + addGroupsToModel(queryReturnValue, excludeUsers); onUserAndAdGroupsLoaded(adElementListModel); } }; @@ -326,6 +306,28 @@ } } + protected void addGroupsToModel(VdcQueryReturnValue returnValue, Set<String> excludeUsers) { + for (IVdcQueryable item : (Collection<IVdcQueryable>) returnValue.getReturnValue()) + { + DirectoryGroup a = (DirectoryGroup) item; + if (!excludeUsers.contains(a.getId())) + { + // XXX: This should use DbGroup and not DbUser. + DbUser tempVar3 = new DbUser(); + tempVar3.setExternalId(a.getId()); + tempVar3.setFirstName(a.getName()); + tempVar3.setLastName(""); //$NON-NLS-1$ + tempVar3.setLoginName(""); //$NON-NLS-1$ + tempVar3.setDomain(a.getDirectoryName()); + tempVar3.setNamespace(a.getNamespace()); + DbUser user = tempVar3; + + EntityModel tempVar4 = new EntityModel(); + tempVar4.setEntity(user); + getgroups().add(tempVar4); + } + } + } protected Set<String> getExcludeUsers() { Set<String> excludeUsers = new HashSet<String>(); if (getExcludeItems() != null) { 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 ff49665..990cabf 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 @@ -4,6 +4,7 @@ import java.util.Set; import org.ovirt.engine.core.aaa.ProfileEntry; +import org.ovirt.engine.core.common.businessentities.aaa.DbGroup; import org.ovirt.engine.core.common.businessentities.aaa.DbUser; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -47,9 +48,38 @@ } @Override + protected void addGroupsToModel(VdcQueryReturnValue returnValue, Set<String> excludeUsers) { + Iterable<DbGroup> filteredGroups = Linq.where((ArrayList<DbGroup>) returnValue.getReturnValue(), + new Linq.DbGroupPredicate(getTargetDbGroup())); + + for (DbGroup group : filteredGroups) + { + if (!excludeUsers.contains(group.getId().toString())) + { + DbUser dbUser = new DbUser(); + dbUser.setExternalId(group.getExternalId()); + dbUser.setFirstName(group.getName()); + dbUser.setLastName(""); //$NON-NLS-1$ + dbUser.setLoginName(""); //$NON-NLS-1$ + dbUser.setDomain(group.getDomain()); + dbUser.setNamespace(group.getNamespace()); + + EntityModel entity = new EntityModel(); + entity.setEntity(dbUser); + getgroups().add(entity); + } + } + } + + private DbGroup getTargetDbGroup() { + DbGroup dbGroup = new DbGroup(); + dbGroup.setName(getSearchString()); + dbGroup.setDomain(((ProfileEntry) getProfile().getSelectedItem()).getAuthz()); + return dbGroup; + } + + @Override protected void findGroups(String searchString, AsyncQuery query) { - AdElementListModel adElementListModel = (AdElementListModel) query.getModel(); - adElementListModel.setgroups(new ArrayList<EntityModel>()); - super.onUserAndAdGroupsLoaded(adElementListModel); + Frontend.getInstance().runQuery(VdcQueryType.GetAllDbGroups, getParameters(), query); } } -- To view, visit http://gerrit.ovirt.org/30707 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I9cce0e664b5bbe0110a03f41e1d6eb9c822cf8ef Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches