Hello Ravi Nori,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/36313

to review the following change.

Change subject: aaa: remove user/group sync
......................................................................

aaa: remove user/group sync

Since all queries are performed using the engine sessions
table, the users groups are always derived from the principal
on user login there is no need to periodically sync users.
The groupids is updated on user login

Change-Id: I15248a628647430d7f3d22e68e66456caffbcb40
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1176306
Signed-off-by: Ravi Nori <[email protected]>
Signed-off-by: Alon Bar-Lev <[email protected]>
---
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAuthzGroupsByUserIdQuery.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/AddUserCommand.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DbUserCacheManager.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/AuthzGroup.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
M 
frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.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/UserGroupListModel.java
M packaging/dbscripts/ad_groups_sp.sql
15 files changed, 103 insertions(+), 293 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/13/36313/1

diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
index 6cdfc85..df81bb7 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/AuthzUtils.java
@@ -1,15 +1,7 @@
 package org.ovirt.engine.core.aaa;
 
-import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Map;
-import java.util.Set;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,10 +11,7 @@
 import org.ovirt.engine.api.extensions.ExtMap;
 import org.ovirt.engine.api.extensions.aaa.Authn;
 import org.ovirt.engine.api.extensions.aaa.Authz;
-import org.ovirt.engine.api.extensions.aaa.Authz.GroupRecord;
-import org.ovirt.engine.api.extensions.aaa.Authz.PrincipalRecord;
 import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
-import org.ovirt.engine.core.utils.collections.MultiValueMapUtils;
 
 public class AuthzUtils {
 
@@ -72,76 +61,6 @@
             ret = output.<ExtMap> get(Authz.InvokeKeys.PRINCIPAL_RECORD);
         }
         return ret;
-    }
-
-    public static Collection<ExtMap> fetchPrincipalsByIdsRecursively(
-            final ExtensionProxy extension,
-            final String namespace,
-            final Collection<String> ids) {
-
-        Map<String, ExtMap> groupsCache = new HashMap<>();
-        Map<String, Set<String>> idsToFetchPerNamespace = new HashMap<String, 
Set<String>>();
-        Collection<ExtMap> principals = findPrincipalsByIds(extension, 
namespace, ids, true, false);
-        for (ExtMap principal : principals) {
-            for (ExtMap memberOf : principal.get(PrincipalRecord.GROUPS, 
Collections.<ExtMap> emptyList())) {
-                addIdToFetch(idsToFetchPerNamespace, memberOf);
-            }
-        }
-        while (!idsToFetchPerNamespace.isEmpty()) {
-            List<ExtMap> groups = new ArrayList<>();
-            for (Entry<String, Set<String>> entry : 
idsToFetchPerNamespace.entrySet()) {
-                groups.addAll(findGroupRecordsByIds(extension,
-                        entry.getKey(),
-                        entry.getValue(),
-                        true,
-                        false));
-            }
-            idsToFetchPerNamespace.clear();
-            for (ExtMap group : groups) {
-                groupsCache.put(group.<String> get(GroupRecord.ID), group);
-                for (ExtMap memberOf : group.get(GroupRecord.GROUPS, 
Collections.<ExtMap> emptyList())) {
-                    if 
(!groupsCache.containsKey(memberOf.get(GroupRecord.ID))) {
-                        addIdToFetch(idsToFetchPerNamespace, memberOf);
-                    }
-                }
-            }
-        }
-        // After the groups are fetched, the "group membership" tree for the 
principals should be modified accordingly.
-        for (ExtMap principal : principals) {
-            Deque<String> loopPrevention = new ArrayDeque<>();
-            constructGroupsMembershipTree(principal, PrincipalRecord.GROUPS, 
groupsCache, loopPrevention);
-        }
-        return principals;
-    }
-
-    private static void addIdToFetch(Map<String, Set<String>> 
idsToFetchPerNamespace, ExtMap memberOf) {
-        
MultiValueMapUtils.addToMapOfSets(memberOf.<String>get(GroupRecord.NAMESPACE), 
memberOf.<String> get(GroupRecord.ID), idsToFetchPerNamespace);
-    }
-
-    private static ExtMap constructGroupsMembershipTree(ExtMap entity, ExtKey 
key, Map<String, ExtMap> groupsCache, Deque<String> loopPrevention) {
-        List<ExtMap> groups = new ArrayList<>();
-        for (ExtMap memberOf : entity.get(key, Collections.<ExtMap> 
emptyList())) {
-            if (loopPrevention.contains(memberOf.get(GroupRecord.ID))) {
-                log.error(
-                    "Group recursion detected for group '{}' stack is {}",
-                    memberOf.get(GroupRecord.NAME),
-                    loopPrevention
-                );
-            } else {
-                loopPrevention.push(memberOf.<String>get(GroupRecord.ID));
-                groups.add(
-                    constructGroupsMembershipTree(
-                        groupsCache.get(memberOf.get(GroupRecord.ID)).clone(),
-                        GroupRecord.GROUPS,
-                        groupsCache,
-                        loopPrevention
-                    )
-                );
-                loopPrevention.pop();
-            }
-        }
-        entity.put(key, groups);
-        return entity;
     }
 
     public static Collection<ExtMap> queryPrincipalRecords(
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAuthzGroupsByUserIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAuthzGroupsByUserIdQuery.java
new file mode 100644
index 0000000..157379b
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAuthzGroupsByUserIdQuery.java
@@ -0,0 +1,49 @@
+package org.ovirt.engine.core.bll;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.aaa.Authz.GroupRecord;
+import org.ovirt.engine.api.extensions.aaa.Authz.PrincipalRecord;
+import org.ovirt.engine.core.aaa.AuthzUtils;
+import org.ovirt.engine.core.bll.aaa.DirectoryUtils;
+import org.ovirt.engine.core.common.businessentities.aaa.AuthzGroup;
+import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager;
+
+public class GetAuthzGroupsByUserIdQuery<P extends IdQueryParameters> extends 
QueriesCommandBase<P> {
+
+    public GetAuthzGroupsByUserIdQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        
getQueryReturnValue().setReturnValue(getDirectoryUser(getDbFacade().getDbUserDao().get(getParameters().getId())));
+    }
+
+    private Collection<AuthzGroup> getDirectoryUser(DbUser dbUser) {
+
+        Collection<AuthzGroup> groups = new ArrayList<>();
+
+        Collection<ExtMap> principalRecords = AuthzUtils.findPrincipalsByIds(
+                
EngineExtensionsManager.getInstance().getExtensionByName(dbUser.getDomain()),
+                dbUser.getNamespace(),
+                Arrays.asList(dbUser.getExternalId()),
+                true,
+                true);
+        if (!principalRecords.isEmpty()) {
+            ExtMap principalRecord = principalRecords.iterator().next();
+            DirectoryUtils.flatGroups(principalRecord);
+            for (ExtMap group : principalRecord.get(PrincipalRecord.GROUPS, 
Collections.<ExtMap> emptyList())) {
+                groups.add(new AuthzGroup(dbUser.getDomain(), 
group.<String>get(GroupRecord.NAMESPACE), group.<String>get(GroupRecord.NAME)));
+            }
+        }
+
+        return groups;
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
deleted file mode 100644
index 87310cd..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDbGroupsByUserIdQuery.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.ovirt.engine.core.bll;
-
-import org.ovirt.engine.core.common.queries.IdQueryParameters;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dao.DbGroupDAO;
-
-public class GetDbGroupsByUserIdQuery<P extends IdQueryParameters> extends 
QueriesCommandBase<P> {
-
-    public GetDbGroupsByUserIdQuery(P parameters) {
-        super(parameters);
-    }
-
-    @Override
-    protected void executeQueryCommand() {
-        final Guid id = getParameters().getId();
-        final DbGroupDAO dao = getDbFacade().getDbGroupDao();
-        getQueryReturnValue().setReturnValue(dao.getByUserId(id));
-    }
-
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index 499d431..e292a20 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -8,7 +8,6 @@
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
 
-import org.ovirt.engine.core.bll.aaa.DbUserCacheManager;
 import org.ovirt.engine.core.bll.dwh.DwhHeartBeat;
 import org.ovirt.engine.core.bll.gluster.GlusterJobsManager;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
@@ -58,9 +57,6 @@
             // recover from engine failure
             PmHealthCheckManager.getInstance().recover(hosts);
 
-            // Create authentication profiles for all the domains that exist 
in the database:
-            // TODO: remove this later, and rely only on the custom and built 
in extensions directories configuration
-            DbUserCacheManager.getInstance().init();
             CommandCoordinatorUtil.initAsyncTaskManager();
             ResourceManager.getInstance().init();
             OvfDataUpdater.getInstance().initOvfDataUpdater();
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/AddUserCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/AddUserCommand.java
index eccfcf6..bb9e480 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/AddUserCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/AddUserCommand.java
@@ -39,8 +39,6 @@
     @Override
     protected void executeCommand() {
         DbUser user = getParameters().getUserToAdd();
-        DbUser syncResult = SyncUsers.sync(user);
-        user = syncResult != null ? syncResult : user;
         DbUser userFromDb =
                 
DbFacade.getInstance().getDbUserDao().getByExternalId(user.getDomain(), 
user.getExternalId());
         if (userFromDb == null) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DbUserCacheManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DbUserCacheManager.java
deleted file mode 100644
index 7e6d021..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/DbUserCacheManager.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.ovirt.engine.core.bll.aaa;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.ovirt.engine.core.common.businessentities.aaa.DbGroup;
-import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
-import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
-import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
-
-public class DbUserCacheManager {
-    private static final Log log = LogFactory.getLog(DbUserCacheManager.class);
-    private static final DbUserCacheManager _instance = new 
DbUserCacheManager();
-    private boolean initialized = false;
-    private final Map<String, DbGroup> groupsMap = new HashMap<>();
-
-    public static DbUserCacheManager getInstance() {
-        return _instance;
-    }
-
-    private DbUserCacheManager() {
-    }
-
-    public void init() {
-        if (!initialized) {
-            log.info("Start initializing " + getClass().getSimpleName());
-
-            int mRefreshRate = Config.<Integer> 
getValue(ConfigValues.UserRefreshRate);
-            SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(
-                this,
-                "refreshAllUsers",
-                new Class[] {},
-                new Object[] {},
-                0,
-                mRefreshRate,
-                TimeUnit.SECONDS
-            );
-            initialized = true;
-            log.info("Finished initializing " + getClass().getSimpleName());
-
-        }
-    }
-
-
-    /**
-     * Load all the users from the database and refresh them.
-     */
-    @OnTimerMethodAnnotation("refreshAllUsers")
-    public void refreshAllUsers() {
-        List<DbUser> activeUsers = new ArrayList<>();
-        for (DbUser dbUser : DbFacade.getInstance().getDbUserDao().getAll()) {
-            if (dbUser.isActive()) {
-                activeUsers.add(dbUser);
-            }
-        }
-        for (DbUser user : SyncUsers.sync(activeUsers)) {
-            DbFacade.getInstance().getDbUserDao().update(user);
-        }
-    }
-
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
deleted file mode 100644
index 5102145..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/aaa/SyncUsers.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.ovirt.engine.core.bll.aaa;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.ovirt.engine.api.extensions.ExtMap;
-import org.ovirt.engine.core.aaa.AuthzUtils;
-import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
-import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
-import org.ovirt.engine.core.utils.collections.MultiValueMapUtils;
-import org.ovirt.engine.core.utils.extensionsmgr.EngineExtensionsManager;
-import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
-
-public class SyncUsers {
-
-    private static final Log log = LogFactory.getLog(SyncUsers.class);
-
-    public static DbUser sync(DbUser dbUser) {
-        List<DbUser> synchedUsers = sync(Arrays.asList(dbUser));
-        return synchedUsers.isEmpty() ? null : synchedUsers.get(0);
-    }
-
-    public static List<DbUser> sync(List<DbUser> dbUsers) {
-        List<DbUser> usersToUpdate = new ArrayList<>();
-        Map<String, Map<String, Set<String>>> authzToNamespaceToUserIds = new 
HashMap<>();
-        Map<String, List<DbUser>> dbUsersPerAuthz = new HashMap<>();
-
-        //Initialize the entries based on authz in the map
-        for (DbUser dbUser : dbUsers) {
-            MultiValueMapUtils.addToMap(dbUser.getDomain(), dbUser, 
dbUsersPerAuthz);
-            if (!authzToNamespaceToUserIds.containsKey(dbUser.getDomain())) {
-                authzToNamespaceToUserIds.put(dbUser.getDomain(), new 
HashMap<String, Set<String>>());
-            }
-            MultiValueMapUtils.addToMapOfSets(dbUser.getNamespace(), 
dbUser.getExternalId(), authzToNamespaceToUserIds.get(dbUser.getDomain()));
-        }
-
-        for (Entry<String, Map<String, Set<String>>> entry : 
authzToNamespaceToUserIds.entrySet()) {
-            Map<String, DbUser> activeUsers = new HashMap<>();
-            String authz = entry.getKey();
-            try {
-                ExtensionProxy authzExtension = 
EngineExtensionsManager.getInstance().getExtensionByName(authz);
-                for (Entry<String, Set<String>> userIdsPerNamespace : 
entry.getValue().entrySet()) {
-                    for (
-                        ExtMap principal :
-                        AuthzUtils.fetchPrincipalsByIdsRecursively(
-                                authzExtension, userIdsPerNamespace.getKey(),
-                                userIdsPerNamespace.getValue())
-                        ) {
-                            DbUser dbUser = 
DirectoryUtils.mapPrincipalRecordToDbUser(authz, principal);
-                            activeUsers.put(dbUser.getExternalId(), dbUser);
-                    }
-                }
-
-                for (DbUser dbUser : dbUsersPerAuthz.get(authz)) {
-                    DbUser activeUser = 
activeUsers.get(dbUser.getExternalId());
-                    if (activeUser != null) {
-                        if (!activeUser.equals(dbUser)) {
-                            activeUser.setId(dbUser.getId());
-                            activeUser.setAdmin(dbUser.isAdmin());
-                            log.infoFormat("Principal {0}::{1} synchronized",
-                                    activeUser.getLoginName(),
-                                    activeUser.getDomain());
-                            usersToUpdate.add(activeUser);
-                        }
-                    } else {
-                        log.infoFormat("Deactivating non existing principal 
{0}::{1}",
-                                dbUser.getLoginName(),
-                                dbUser.getDomain());
-                        dbUser.setActive(false);
-                        usersToUpdate.add(dbUser);
-                    }
-                }
-            } catch (Exception ex) {
-                log.errorFormat("Error during user synchronization of 
extension {0}. Exception message is {1}",
-                        authz, ex.getMessage());
-                log.debug("", ex);
-            }
-        }
-        return usersToUpdate;
-    }
-}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/AuthzGroup.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/AuthzGroup.java
new file mode 100644
index 0000000..8394434
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/aaa/AuthzGroup.java
@@ -0,0 +1,46 @@
+package org.ovirt.engine.core.common.businessentities.aaa;
+
+import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
+
+public class AuthzGroup extends IVdcQueryable {
+    private static final long serialVersionUID = -5698641275510275709L;
+
+    private String authz;
+    private String namespace;
+    private String name;
+
+    public AuthzGroup() {
+        super();
+    }
+
+    public AuthzGroup(String authz, String namespace, String name) {
+        this.authz = authz;
+        this.namespace = namespace;
+        this.name = name;
+    }
+
+    public String getAuthz() {
+        return authz;
+    }
+
+    public void setAuthz(String authz) {
+        this.authz = authz;
+    }
+
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}
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 6573f46..c33f976 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
@@ -163,7 +163,7 @@
     // Groups queries:
     GetAllDbGroups(VdcQueryAuthType.User),
     GetDbGroupById,
-    GetDbGroupsByUserId,
+    GetAuthzGroupsByUserId,
 
     // VM pools queries
     GetVmPoolById(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
index bf7ba67..72f195b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAO.java
@@ -80,5 +80,4 @@
      */
     void remove(Guid id);
 
-    List<DbGroup> getByUserId(Guid id);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
index 67fd24e..be30cf8 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DbGroupDAODbFacadeImpl.java
@@ -85,15 +85,6 @@
     }
 
     @Override
-    public List<DbGroup> getByUserId(Guid id) {
-        return getCallsHandler().executeReadList("GetGroupsByUserId",
-                DbGroupRowMapper.instance,
-                getCustomMapSqlParameterSource()
-                        .addValue("id", id));
-
-    }
-
-    @Override
     public void save(DbGroup group) {
         if (Guid.isNullOrEmpty(group.getId())) {
             group.setId(Guid.newGuid());
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
index a96dbef..0b79965 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml
@@ -13,6 +13,7 @@
                <include name="common/businessentities/BusinessEntity.java" />
                <include 
name="common/businessentities/BusinessEntityWithStatus.java" />
                <include 
name="common/businessentities/BusinessEntitiesDefinitions.java" />
+               <include name="common/businessentities/aaa/AuthzGroup.java" />
                <include name="common/businessentities/aaa/DbGroup.java" />
                <include name="common/businessentities/aaa/DbUser.java" />
                <include name="common/businessentities/aaa/LdapGroup.java" />
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 35a3265..0260e3f 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
@@ -653,7 +653,7 @@
                 aQuery);
     }
 
-    public static void getDbGroupsByUserId(AsyncQuery aQuery, Guid userId) {
+    public static void getAuthzGroupsByUserId(AsyncQuery aQuery, Guid userId) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
             public Object Convert(Object source, AsyncQuery _asyncQuery)
@@ -661,7 +661,7 @@
                 return source;
             }
         };
-        Frontend.getInstance().runQuery(VdcQueryType.GetDbGroupsByUserId, new 
IdQueryParameters(userId), aQuery);
+        Frontend.getInstance().runQuery(VdcQueryType.GetAuthzGroupsByUserId, 
new IdQueryParameters(userId), aQuery);
     }
 
     public static void getPoolById(AsyncQuery aQuery, Guid poolId) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
index f81a4d3..77c78c7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserGroupListModel.java
@@ -3,7 +3,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.ovirt.engine.core.common.businessentities.aaa.DbGroup;
+import org.ovirt.engine.core.common.businessentities.aaa.AuthzGroup;
 import org.ovirt.engine.core.common.businessentities.aaa.DbUser;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
@@ -42,12 +42,12 @@
         if (getEntity() != null)
         {
             final ArrayList<UserGroup> items = new ArrayList<UserGroup>();
-            AsyncDataProvider.getDbGroupsByUserId(new AsyncQuery(new 
INewAsyncCallback() {
+            AsyncDataProvider.getAuthzGroupsByUserId(new AsyncQuery(new 
INewAsyncCallback() {
 
                 @Override
                 public void onSuccess(Object model, Object returnValue) {
-                    for (DbGroup grp : (Collection<DbGroup>) returnValue) {
-                        items.add(createUserGroup(grp.getName(), 
grp.getNamespace(), grp.getDomain()));
+                    for (AuthzGroup grp : (Collection<AuthzGroup>) 
returnValue) {
+                        items.add(createUserGroup(grp.getName(), 
grp.getNamespace(), grp.getAuthz()));
                     }
                     setItems(items);
                 }
diff --git a/packaging/dbscripts/ad_groups_sp.sql 
b/packaging/dbscripts/ad_groups_sp.sql
index f04ad47..4ccca21 100644
--- a/packaging/dbscripts/ad_groups_sp.sql
+++ b/packaging/dbscripts/ad_groups_sp.sql
@@ -86,19 +86,6 @@
 
 
 
-Create or replace FUNCTION GetGroupsByUserId(v_id UUID) RETURNS SETOF 
ad_groups STABLE
-   AS $procedure$
-BEGIN
-      RETURN QUERY SELECT *
-      FROM ad_groups
-      WHERE id in (SELECT fnsplitteruuid(users.group_ids) from users where 
user_id = v_id);
-END; $procedure$
-LANGUAGE plpgsql;
-
-
-
-
-
 Create or replace FUNCTION GetGroupByExternalId(v_domain VARCHAR(100), 
v_external_id TEXT) RETURNS SETOF ad_groups STABLE
    AS $procedure$
 BEGIN


-- 
To view, visit http://gerrit.ovirt.org/36313
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I15248a628647430d7f3d22e68e66456caffbcb40
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Alon Bar-Lev <[email protected]>
Gerrit-Reviewer: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to