From 72d678221558f06923f49c7c13bfb0237b572153 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 22 Jul 2023 20:14:42 +0000 Subject: [PATCH] work on group delete processing --- .../application/grouper-loader.properties | 11 ++- .../resources/100-grouper-new.xml | 8 ++ .../200-metarole-grouper-provided-group.xml | 33 ------- .../010-system-configuration.xml | 40 +++++++++ .../tasks/600-task-import-grouper-groups.xml | 69 --------------- .../610-task-reconcile-grouper-groups.xml | 51 +++++++++++ ...l => 630-task-reconcile-grouper-users.xml} | 49 +++++------ .../tasks/995-task-group-scavenger.xml | 86 ------------------- 8 files changed, 129 insertions(+), 218 deletions(-) delete mode 100644 Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/600-task-import-grouper-groups.xml create mode 100644 Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml rename Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/{620-task-import-grouper-subjects.xml => 630-task-reconcile-grouper-users.xml} (62%) delete mode 100644 Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml diff --git a/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties b/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties index 67631c5..7d66bbd 100755 --- a/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties +++ b/Workbench/configs-and-secrets/grouper/application/grouper-loader.properties @@ -64,9 +64,14 @@ provisioner.midPoint.customizeEntityCrud = true provisioner.midPoint.customizeGroupCrud = true provisioner.midPoint.customizeMembershipCrud = true provisioner.midPoint.dbExternalSystemConfigId = midPoint -provisioner.midPoint.deleteEntities = false -provisioner.midPoint.deleteGroups = false -provisioner.midPoint.deleteMemberships = false +provisioner.midPoint.deleteEntities = true +provisioner.midPoint.deleteEntitiesIfNotExistInGrouper = false +provisioner.midPoint.deleteEntitiesIfGrouperDeleted = true +provisioner.midPoint.deleteGroups = true +provisioner.midPoint.deleteGroupsIfNotExistInGrouper = true +provisioner.midPoint.deleteMemberships = true +provisioner.midPoint.deleteMembershipsIfNotExistInGrouper = false +provisioner.midPoint.deleteMembershipsIfGrouperDeleted = true provisioner.midPoint.makeChangesToEntities = true provisioner.midPoint.midPointDeletedColumnName = deleted provisioner.midPoint.midPointLastModifiedColumnName = last_modified diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml index 4ac1d2c..542db2d 100644 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/resources/100-grouper-new.xml @@ -303,6 +303,14 @@ + + deleted + + + true + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml index 900922f..a9351a4 100644 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/roles/200-metarole-grouper-provided-group.xml @@ -90,39 +90,6 @@ - - lifecycle state - This mapping sets org lifecycle state to be either "active" or "retired", depending on - whether Grouper group for this org still exists. Orgs in the latter state are on the way to deletion: - their members are unassigned and after no members are there, the org is automatically deleted. - strong - - - - - lifecycleState - - + + + + + + + targetRef + + + + + + + + + + P3M diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/600-task-import-grouper-groups.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/600-task-import-grouper-groups.xml deleted file mode 100644 index 8d04969..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/600-task-import-grouper-groups.xml +++ /dev/null @@ -1,69 +0,0 @@ - - Groups: Import groups/entitlements - - 2023-06-30T18:40:13.058Z - - - - 2023-06-30T18:40:13.385Z - - - - http://midpoint.evolveum.com/xml/ns/public/common/channels-3#user - - - - 2023-06-30T18:40:13.058Z - - - - 2023-06-30T18:40:13.385Z - - - - http://midpoint.evolveum.com/xml/ns/public/common/channels-3#user - - - - - - enabled - - - 0 - - - - - - - - 1688150413389-46241-1 - - - - runnable - ImportingAccounts - - - - loose - - 600 - - - - - - - - - entitlement - group - ri:GroupObjectClass - - - - - - diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml new file mode 100644 index 0000000..08120a2 --- /dev/null +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/610-task-reconcile-grouper-groups.xml @@ -0,0 +1,51 @@ + + Groups: Reconcile groups/entitlements + + + + + + + enabled + + + 0 + + + + + + + + 1689973935302-20962-1 + + + + runnable + ready + Reconciliation + success + + + + 33 + loose + + 600 + + + + + + + + + entitlement + group + ri:GroupObjectClass + + + + + + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/620-task-import-grouper-subjects.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml similarity index 62% rename from Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/620-task-import-grouper-subjects.xml rename to Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml index f09e3ff..d7fe038 100644 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/620-task-import-grouper-subjects.xml +++ b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/630-task-reconcile-grouper-users.xml @@ -1,30 +1,19 @@ - - Groups: Import users/accounts - - 2023-06-30T18:40:34.255Z - - - - 2023-06-30T18:40:34.297Z - - - - http://midpoint.evolveum.com/xml/ns/public/common/channels-3#user - + + Groups: Reconcile Users/accounts - 2023-06-30T18:40:34.255Z + 2023-07-21T21:12:58.938Z - 2023-06-30T18:40:34.297Z + 2023-07-21T21:12:58.953Z http://midpoint.evolveum.com/xml/ns/public/common/channels-3#user - - + + enabled @@ -32,28 +21,34 @@ 0 - - + + - - + + - 1688150434298-46241-1 + 1689973978954-20962-1 - runnable - ImportingAccounts + runnable + ready + Reconciliation + success + 2023-07-21T22:20:16.993Z + 2023-07-21T22:20:33.812Z + 2023-07-21T21:15:14.922Z + 98 loose - 600 + 650 - + @@ -62,7 +57,7 @@ default ri:CustomSubjectObjectClass - + diff --git a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml b/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml deleted file mode 100644 index a4213aa..0000000 --- a/Workbench/midpoint_server/container_files/mp-home/post-initial-objects/tasks/995-task-group-scavenger.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - Groups: Group Scavenger - - - - execute-script - - script - - import com.evolveum.midpoint.xml.ns._public.common.common_3.* - - result = midpoint.currentResult - log.info('Processing dead group: {}', input) - query = prismContext.queryFor(UserType.class) - .item(UserType.F_ROLE_MEMBERSHIP_REF).ref(input.oid) - .build() - members = midpoint.repositoryService.searchObjects(UserType.class, query, null, result) - log.info('Found {} members: {}', members.size(), members) - - for (member in members) { - log.info('Going to recompute {}', member) - try { - midpoint.recompute(UserType.class, member.oid) - } catch (Throwable t) { - log.error('Couldn\'t recompute {}: {}', member, t.message, t) - } - } - log.info('Members recomputed; checking if the org is still in "retired" state') - orgAfter = midpoint.repositoryService.getObject(OrgType.class, input.oid, null, result) - currentState = orgAfter.asObjectable().lifecycleState - log.info('Current state = {}', currentState) - if (currentState == 'retired') { - log.info('Deleting the org: {}', orgAfter) - midpoint.deleteObject(OrgType.class, orgAfter.oid, null) - } else { - log.info('State has changed, not deleting the org: {}', orgAfter) - } - log.info('Dead group processing done: {}', input) - - - - - - OrgType - - - - lifecycleState - retired - - - - - - - - - runnable - BulkActions - recurring - - 60 - -