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
