Yair Zaslavsky has uploaded a new change for review.

Change subject: aaa: more fixes to sync and usages
......................................................................

aaa: more fixes to sync and usages

More fixes were introcued to sync and usages- especially around
adding an already added group/principal.

Change-Id: I0d6198409b7c3e66054716e1abdfcd06e8dd204d
Signed-off-by: Yair Zaslavsky <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SyncUsers.java
M packaging/dbscripts/user_sp.sql
5 files changed, 20 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/73/30473/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java
index ce75c35..bc82f07 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddGroupCommand.java
@@ -47,6 +47,7 @@
         }
         else {
             dao.update(dbGroup);
+            groupToAdd = dbGroup;
         }
 
         // Return the identifier of the created group:
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java
index 3d5633b..8b98000 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddUserCommand.java
@@ -39,19 +39,26 @@
     @Override
     protected void executeCommand() {
         DbUser userToAdd = getParameters().getUserToAdd();
-        for (DbUser syncedUser : SyncUsers.sync(Arrays.asList(userToAdd))) {
-            if (Guid.isNullOrEmpty(syncedUser.getId())) {
+        Guid userId = null;
+        boolean succeeded = false;
+        for (DbUser syncedUser : SyncUsers.sync(Arrays.asList(userToAdd), 
true)) {
+            DbUser userFromDb =
+                    
DbFacade.getInstance().getDbUserDao().getByExternalId(userToAdd.getDomain(), 
userToAdd.getExternalId());
+            if (userFromDb == null) {
                 if (syncedUser.isActive()) {
                     DbFacade.getInstance().getDbUserDao().save(syncedUser);
+                    userFromDb = syncedUser;
+                    userId = userFromDb.getId();
                 }
             } else {
+                syncedUser.setId(userFromDb.getId());
                 DbFacade.getInstance().getDbUserDao().update(syncedUser);
+                userId = userFromDb.getId();
             }
+            succeeded = syncedUser.isActive();
         }
-        DbUser userFromDb =
-                
DbFacade.getInstance().getDbUserDao().getByExternalId(userToAdd.getDomain(), 
userToAdd.getExternalId());
-        setActionReturnValue(userFromDb.getId());
-        setSucceeded(userFromDb.isActive());
+        setActionReturnValue(userId);
+        setSucceeded(succeeded);
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
index 9297924..c8dcc79 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
@@ -61,7 +61,7 @@
                 activeUsers.add(dbUser);
             }
         }
-        for (DbUser user : SyncUsers.sync(activeUsers)) {
+        for (DbUser user : SyncUsers.sync(activeUsers, false)) {
             DbFacade.getInstance().getDbUserDao().update(user);
         }
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SyncUsers.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SyncUsers.java
index bce943e..553b54f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SyncUsers.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SyncUsers.java
@@ -21,7 +21,7 @@
 
     private static final Log log = LogFactory.getLog(SyncUsers.class);
 
-    public static List<DbUser> sync(List<DbUser> dbUsers) {
+    public static List<DbUser> sync(List<DbUser> dbUsers, boolean forceUpdate) 
{
         List<DbUser> usersToUpdate = new ArrayList<>();
         Map<String, Map<String, Set<String>>> authzToNamespaceToUserIds = new 
HashMap<>();
         Map<DirectoryEntryKey, DbUser> originalDbUsersMap = new HashMap<>();
@@ -59,9 +59,9 @@
                 for (DbUser dbUser : dbUsersPerAuthz.get(authz)) {
                     DbUser activeUser = 
activeUsers.get(dbUser.getExternalId());
                     if (activeUser != null) {
-                        if (!activeUser.equals(dbUser)) {
+                        if (!activeUser.equals(dbUser) || forceUpdate) {
                             activeUser.setId(dbUser.getId());
-                            log.info(String.format("The user %1$s from authz 
extension %2$s got updated since last interval",
+                            log.info(String.format("The user %1$s from authz 
extension %2$s got synchronized with the matching user persistent at 
oVirt-engine database",
                                     activeUser.getLoginName(),
                                     activeUser.getDomain()));
                             usersToUpdate.add(activeUser);
diff --git a/packaging/dbscripts/user_sp.sql b/packaging/dbscripts/user_sp.sql
index 5b49e4f..4bb80b9 100644
--- a/packaging/dbscripts/user_sp.sql
+++ b/packaging/dbscripts/user_sp.sql
@@ -62,7 +62,7 @@
       external_id = v_external_id,
       namespace = v_namespace,
       _update_date = CURRENT_TIMESTAMP
-      WHERE user_id = v_user_id;
+      WHERE external_id = v_external_id and domain = v_domain;
       GET DIAGNOSTICS updated_rows = ROW_COUNT;
       RETURN updated_rows;
 
@@ -95,7 +95,7 @@
       PERFORM UpdateUserImpl(v_department, v_domain, v_email, v_groups, 
v_name, v_note, v_role, v_active, v_surname, v_user_id, v_username, 
v_group_ids, v_external_id, v_namespace);
       UPDATE users SET
       last_admin_check_status = v_last_admin_check_status
-      WHERE user_id = v_user_id;
+      WHERE domain = v_domain AND external_id = v_external_id;
 END; $procedure$
 LANGUAGE plpgsql;
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0d6198409b7c3e66054716e1abdfcd06e8dd204d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yair Zaslavsky <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to