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 <[email protected]> --- R backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDbGroupsQuery.java 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 5 files changed, 94 insertions(+), 26 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/12/30712/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllAdGroupsQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDbGroupsQuery.java similarity index 77% rename from backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllAdGroupsQuery.java rename to backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDbGroupsQuery.java index 957f25e..aff6af6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllAdGroupsQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAllDbGroupsQuery.java @@ -3,8 +3,8 @@ import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.dal.dbbroker.DbFacade; -public class GetAllAdGroupsQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { - public GetAllAdGroupsQuery(P parameters) { +public class GetAllDbGroupsQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> { + public GetAllDbGroupsQuery(P parameters) { super(parameters); } 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 8815637..ab5869e 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 @@ -133,7 +133,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 a43f2b4..9381cfe 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 @@ -10,6 +10,7 @@ import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.AuditLog; +import org.ovirt.engine.core.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; @@ -43,6 +44,7 @@ import org.ovirt.engine.core.common.scheduling.ClusterPolicy; import org.ovirt.engine.core.common.scheduling.PolicyUnit; import org.ovirt.engine.core.common.scheduling.PolicyUnitType; +import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.compat.Version; @@ -1094,10 +1096,43 @@ @Override public boolean match(DbUser source) { + String targetName = target.getLoginName(); + if (!StringHelper.isNullOrEmpty(targetName)) { + targetName = targetName.toLowerCase(); + } return StringHelper.stringsEqual(source.getDomain(), target.getDomain()) && (StringHelper.isNullOrEmpty(target.getLoginName()) || StringHelper.stringsEqual(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 2ba0a2a..10c4a0c 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,25 +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.getDirectory().getName()); - DbUser user = tempVar3; - - EntityModel tempVar4 = new EntityModel(); - tempVar4.setEntity(user); - adElementListModel.getgroups().add(tempVar4); - } - } + addGroupsToModel(queryReturnValue, excludeUsers); onUserAndAdGroupsLoaded(adElementListModel); } @@ -325,6 +307,28 @@ } } + protected void addGroupsToModel(VdcQueryReturnValue returnValue, Set<ExternalId> 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.getDirectory().getName()); + DbUser user = tempVar3; + + EntityModel tempVar4 = new EntityModel(); + tempVar4.setEntity(user); + getgroups().add(tempVar4); + } + } + } + protected Set<ExternalId> getExcludeUsers() { Set<ExternalId> excludeUsers = new HashSet<ExternalId>(); 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 43de9f8..0cf4bb5 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.common.businessentities.DbGroup; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -47,9 +48,37 @@ } @Override + protected void addGroupsToModel(VdcQueryReturnValue returnValue, Set<ExternalId> excludeUsers) { + Iterable<DbGroup> filteredGroups = Linq.where((ArrayList<DbGroup>) returnValue.getReturnValue(), + new Linq.DbGroupPredicate(getTargetDbGroup())); + + for (DbGroup group : filteredGroups) + { + if (!excludeUsers.contains(group.getExternalId())) + { + 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()); + + EntityModel entity = new EntityModel(); + entity.setEntity(dbUser); + getgroups().add(entity); + } + } + } + + private DbGroup getTargetDbGroup() { + DbGroup dbGroup = new DbGroup(); + dbGroup.setName(getSearchString()); + dbGroup.setDomain((String) getDomain().getSelectedItem()); + 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/30712 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.4 Gerrit-Owner: Ravi Nori <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
