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

Reply via email to