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

Reply via email to