From e1c58f20fd87e9e310f0c2b89641e1eaf73bb4d4 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 29 Mar 2019 22:15:02 +0100 Subject: [PATCH] Implement option1 up to "back in midPoint" step What is still missing from option1 is "back in LDAP" and targets. Plus minor improvements/fixes and tests. --- demo/complex/add-ref-groups.gsh | 17 +- .../container_files/seed-data/demo.gsh | 13 +- .../template-org-mailing-list.xml | 18 +++ .../objectTemplates/template-user.xml | 153 +++++++++++++++++- .../resources/resource-grouper.xml | 44 ++++- .../roles/metarole-affiliation.xml | 4 +- .../roles/metarole-mailing-list.xml | 16 ++ .../SystemConfiguration.xml | 5 + demo/complex/upload-async-update-task.sh | 17 ++ .../upload-reconcile-grouper-groups.sh | 17 ++ .../complex/upload-reconcile-grouper-users.sh | 17 ++ 11 files changed, 301 insertions(+), 20 deletions(-) create mode 100644 demo/complex/midpoint-objects/objectTemplates/template-org-mailing-list.xml create mode 100644 demo/complex/midpoint-objects/roles/metarole-mailing-list.xml create mode 100755 demo/complex/upload-async-update-task.sh create mode 100755 demo/complex/upload-reconcile-grouper-groups.sh create mode 100755 demo/complex/upload-reconcile-grouper-users.sh diff --git a/demo/complex/add-ref-groups.gsh b/demo/complex/add-ref-groups.gsh index 679910c..0e952ac 100644 --- a/demo/complex/add-ref-groups.gsh +++ b/demo/complex/add-ref-groups.gsh @@ -1,14 +1,14 @@ -def addGroups(gs,stem) { - def supergroup = GroupFinder.findByName(gs, "etc:midpointGroups", true) +def addGroups(gs,stem,owner,regexp) { for (group in stem.childGroups) { if (!group.name.endsWith('_includes') && !group.name.endsWith('_excludes') && !group.name.endsWith('_systemOfRecord') && - !group.name.endsWith('_systemOfRecordAndIncludes')) { + !group.name.endsWith('_systemOfRecordAndIncludes') && + (regexp == null || group.extension ==~ regexp)) { println 'Adding: ' + group def s = SubjectFinder.findById(group.getId(), 'group', 'g:gsa') - supergroup.addMember(s, false) + owner.addMember(s, false) } else { println 'Ignoring: ' + group } @@ -16,8 +16,11 @@ def addGroups(gs,stem) { } gs = GrouperSession.startRootSession() +def supergroup = GroupFinder.findByName(gs, "etc:midpointGroups", true) +def cs = GroupFinder.findByName(gs, "app:cs", true) -addGroups(gs, StemFinder.findByName(gs, 'ref:affiliation')) -addGroups(gs, StemFinder.findByName(gs, 'ref:dept')) -addGroups(gs, StemFinder.findByName(gs, 'ref:course')) +addGroups(gs, StemFinder.findByName(gs, 'ref:affiliation'), supergroup, null) +//addGroups(gs, StemFinder.findByName(gs, 'ref:dept'), null) +//addGroups(gs, StemFinder.findByName(gs, 'ref:course'), null) +addGroups(gs, StemFinder.findByName(gs, 'ref:course'), cs, /CS.*/) diff --git a/demo/complex/grouper_data/container_files/seed-data/demo.gsh b/demo/complex/grouper_data/container_files/seed-data/demo.gsh index 0d13760..2cb43fd 100644 --- a/demo/complex/grouper_data/container_files/seed-data/demo.gsh +++ b/demo/complex/grouper_data/container_files/seed-data/demo.gsh @@ -73,7 +73,16 @@ attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperL attributeAssign.getAttributeValueDelegate().assignValue(LoaderLdapUtils.grouperLoaderLdapSubjectIdTypeName(), "subjectId"); midpointGroupsGroup = new GroupSave(gs).assignName("etc:midpointGroups").assignCreateParentStemsIfNotExist(true).save(); + testGroup = new GroupSave(gs).assignName("midpoint:test").assignCreateParentStemsIfNotExist(true).save(); +chess = new GroupSave(gs).assignName("app:mailinglist:chess").assignCreateParentStemsIfNotExist(true).save() +idmfans = new GroupSave(gs).assignName("app:mailinglist:idm-fans").assignCreateParentStemsIfNotExist(true).save() +cs = new GroupSave(gs).assignName("app:cs").assignCreateParentStemsIfNotExist(true).save() +volunteers = new GroupSave(gs).assignName("test:volunteers").assignCreateParentStemsIfNotExist(true).save() + +midpointGroupsGroup.addMember(SubjectFinder.findById(testGroup.getId(), 'group', 'g:gsa'), false) +midpointGroupsGroup.addMember(SubjectFinder.findById(chess.getId(), 'group', 'g:gsa'), false) +midpointGroupsGroup.addMember(SubjectFinder.findById(idmfans.getId(), 'group', 'g:gsa'), false) +midpointGroupsGroup.addMember(SubjectFinder.findById(cs.getId(), 'group', 'g:gsa'), false) +midpointGroupsGroup.addMember(SubjectFinder.findById(volunteers.getId(), 'group', 'g:gsa'), false) -s = SubjectFinder.findById(testGroup.getId(), 'group', 'g:gsa'); -midpointGroupsGroup.addMember(s, false); diff --git a/demo/complex/midpoint-objects/objectTemplates/template-org-mailing-list.xml b/demo/complex/midpoint-objects/objectTemplates/template-org-mailing-list.xml new file mode 100644 index 0000000..058d131 --- /dev/null +++ b/demo/complex/midpoint-objects/objectTemplates/template-org-mailing-list.xml @@ -0,0 +1,18 @@ + + + template-org-mailing-list + + strong + + + RoleType + 1c7beff4-cdf6-4e9f-b54c-79d0766f6fbe + + + + assignment + + + + diff --git a/demo/complex/midpoint-objects/objectTemplates/template-user.xml b/demo/complex/midpoint-objects/objectTemplates/template-user.xml index 288bd24..c2bb8a5 100644 --- a/demo/complex/midpoint-objects/objectTemplates/template-user.xml +++ b/demo/complex/midpoint-objects/objectTemplates/template-user.xml @@ -5,6 +5,15 @@ strong extension/grouperGroup + + + + + @@ -15,7 +24,7 @@ @@ -33,7 +42,7 @@ @@ -62,4 +71,144 @@ + + strong + + extension/grouperGroup + + + + + + + + + OrgType + + + name + + + + + + + mailing-list + + true + + + + name + + + + + + + + subtype + + + mailing-list + + + + + + + assignment + + + + + + + + + strong + + extension/grouperGroup + + + + + + + + + OrgType + + + name + + + + + + + affiliation + + true + + + + name + + + + + + + + subtype + + + affiliation + + + + + + + assignment + + + + + + + diff --git a/demo/complex/midpoint-objects/resources/resource-grouper.xml b/demo/complex/midpoint-objects/resources/resource-grouper.xml index 186e929..ebefae8 100644 --- a/demo/complex/midpoint-objects/resources/resource-grouper.xml +++ b/demo/complex/midpoint-objects/resources/resource-grouper.xml @@ -43,8 +43,10 @@ password etc:midpointGroups midpoint:.* - ref:.* - ref:.*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes) + app:.* + test:.* + ref:affiliation:.* + .*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes) ldap g:gsa true @@ -76,8 +78,8 @@ parameters = [ superGroup: 'etc:midpointGroups', - groupIncludePattern: [ 'midpoint:.*', 'ref:.*' ], - groupExcludePattern: [ 'ref:.*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes)' ], + groupIncludePattern: [ 'midpoint:.*', 'app:.*', 'test:.*', 'ref:affiliation:.*' ], + groupExcludePattern: [ '.*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes)' ], relevantSourceId: 'ldap' ] @@ -124,6 +126,17 @@ icfs:name strong + + + name @@ -131,7 +144,15 @@ strong - generic-group + subtype @@ -190,9 +211,16 @@ name - - $account/attributes/name - + diff --git a/demo/complex/midpoint-objects/roles/metarole-affiliation.xml b/demo/complex/midpoint-objects/roles/metarole-affiliation.xml index cdfa819..d986597 100644 --- a/demo/complex/midpoint-objects/roles/metarole-affiliation.xml +++ b/demo/complex/midpoint-objects/roles/metarole-affiliation.xml @@ -9,5 +9,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oid="fecae27b-d1d3-40ae-95fa-8f7e44e2ee70"> metarole-affiliation - + + + diff --git a/demo/complex/midpoint-objects/roles/metarole-mailing-list.xml b/demo/complex/midpoint-objects/roles/metarole-mailing-list.xml new file mode 100644 index 0000000..acdc319 --- /dev/null +++ b/demo/complex/midpoint-objects/roles/metarole-mailing-list.xml @@ -0,0 +1,16 @@ + + metarole-mailing-list + + + + + diff --git a/demo/complex/midpoint-objects/systemConfigurations/SystemConfiguration.xml b/demo/complex/midpoint-objects/systemConfigurations/SystemConfiguration.xml index eb5f90c..ac59d68 100644 --- a/demo/complex/midpoint-objects/systemConfigurations/SystemConfiguration.xml +++ b/demo/complex/midpoint-objects/systemConfigurations/SystemConfiguration.xml @@ -105,6 +105,11 @@ course + + OrgType + mailing-list + + OrgType generic-group diff --git a/demo/complex/upload-async-update-task.sh b/demo/complex/upload-async-update-task.sh new file mode 100755 index 0000000..35e8640 --- /dev/null +++ b/demo/complex/upload-async-update-task.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +function upload () { + local filename=$1 + local regex="midpoint-objects.*/(.*)/(.*)" + if [[ $filename =~ $regex ]] + then + type="${BASH_REMATCH[1]}" + oid=`cat $filename | sed -n 's:.*oid=\"\([A-Za-z0-9\-]*\)\".*:\1:p' | sed -n '1 p'` + echo "Uploading $filename ($type, $oid)" + curl -k --user administrator:5ecr3t -H "Content-Type: application/xml" -X PUT "https://localhost:8443/midpoint/ws/rest/$type/$oid?options=overwrite" --data-binary @$filename + else + echo "Skipping $filename" + fi +} + +upload midpoint-objects-manual/tasks/task-async-update-grouper.xml diff --git a/demo/complex/upload-reconcile-grouper-groups.sh b/demo/complex/upload-reconcile-grouper-groups.sh new file mode 100755 index 0000000..b1d14ee --- /dev/null +++ b/demo/complex/upload-reconcile-grouper-groups.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +function upload () { + local filename=$1 + local regex="midpoint-objects.*/(.*)/(.*)" + if [[ $filename =~ $regex ]] + then + type="${BASH_REMATCH[1]}" + oid=`cat $filename | sed -n 's:.*oid=\"\([A-Za-z0-9\-]*\)\".*:\1:p' | sed -n '1 p'` + echo "Uploading $filename ($type, $oid)" + curl -k --user administrator:5ecr3t -H "Content-Type: application/xml" -X PUT "https://localhost:8443/midpoint/ws/rest/$type/$oid?options=overwrite" --data-binary @$filename + else + echo "Skipping $filename" + fi +} + +upload midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml diff --git a/demo/complex/upload-reconcile-grouper-users.sh b/demo/complex/upload-reconcile-grouper-users.sh new file mode 100755 index 0000000..784403c --- /dev/null +++ b/demo/complex/upload-reconcile-grouper-users.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +function upload () { + local filename=$1 + local regex="midpoint-objects.*/(.*)/(.*)" + if [[ $filename =~ $regex ]] + then + type="${BASH_REMATCH[1]}" + oid=`cat $filename | sed -n 's:.*oid=\"\([A-Za-z0-9\-]*\)\".*:\1:p' | sed -n '1 p'` + echo "Uploading $filename ($type, $oid)" + curl -k --user administrator:5ecr3t -H "Content-Type: application/xml" -X PUT "https://localhost:8443/midpoint/ws/rest/$type/$oid?options=overwrite" --data-binary @$filename + else + echo "Skipping $filename" + fi +} + +upload midpoint-objects-manual/tasks/task-reconciliation-grouper-users.xml