diff --git a/README.md b/README.md index d7d1736..52d9733 100644 --- a/README.md +++ b/README.md @@ -15,16 +15,15 @@ The image contains the midPoint application along with some TIER-specific compon - `shibboleth` to show integration with Shibboleth IdP, - `postgresql` to show how to use alternative dockerized repository, - `extrepo` to show how to use external repository, - - `complex` to demonstrate more complex deployment of midPoint in a sample university environment, featuring midPoint along with Grouper, LDAP directory, RabbitMQ, Shibboleth IdP, source and target systems. + - `grouper` to demonstrate more complex deployment of midPoint in a sample university environment, featuring midPoint along with Grouper, LDAP directory, RabbitMQ, Shibboleth IdP, source and target systems. # Build instructions ``` $ ./build.sh ``` -You can then continue with one of demo composition, e.g. simple or complex one. +You can then continue with one of demo composition. # Documentation Please see [Dockerized midPoint](https://spaces.at.internet2.edu/display/MID/Dockerized+midPoint) wiki page. This is a work in progress, suitable for testing. -For details on the project, see [Status of the work](https://spaces.at.internet2.edu/display/MID/Status+of+the+work). diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-academic-person.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-academic-person.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-academic-person.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-academic-person.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-affiliation.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-affiliation.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-affiliation.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-affiliation.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-course.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-course.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-course.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-course.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-department.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-department.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-department.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-department.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-generic-grouper-group.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-generic-grouper-group.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-generic-grouper-group.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-generic-grouper-group.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-mailing-list.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-mailing-list.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-mailing-list.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-mailing-list.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-midpoint-group.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-midpoint-group.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-midpoint-group.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-midpoint-group.xml diff --git a/demo/grouper/midpoint-objects/archetypes/archetype-non-academic-person.xml b/demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-non-academic-person.xml similarity index 100% rename from demo/grouper/midpoint-objects/archetypes/archetype-non-academic-person.xml rename to demo/grouper/midpoint-objects (obsolete)/archetypes/archetype-non-academic-person.xml diff --git a/demo/grouper/midpoint-objects/functionLibraries/function-library-grouper.xml b/demo/grouper/midpoint-objects (obsolete)/functionLibraries/function-library-grouper.xml similarity index 100% rename from demo/grouper/midpoint-objects/functionLibraries/function-library-grouper.xml rename to demo/grouper/midpoint-objects (obsolete)/functionLibraries/function-library-grouper.xml diff --git a/demo/grouper/midpoint-objects/objectTemplates/template-user.xml b/demo/grouper/midpoint-objects (obsolete)/objectTemplates/template-user.xml similarity index 100% rename from demo/grouper/midpoint-objects/objectTemplates/template-user.xml rename to demo/grouper/midpoint-objects (obsolete)/objectTemplates/template-user.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-affiliations.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-affiliations.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-affiliations.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-affiliations.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-courses.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-courses.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-courses.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-courses.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-departments.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-departments.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-departments.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-departments.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-generic-groups.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-generic-groups.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-generic-groups.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-generic-groups.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-grouper-sysadmin.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-grouper-sysadmin.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-grouper-sysadmin.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-grouper-sysadmin.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-mailing-lists.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-mailing-lists.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-mailing-lists.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-mailing-lists.xml diff --git a/demo/grouper/midpoint-objects/orgs/org-midpoint-groups.xml b/demo/grouper/midpoint-objects (obsolete)/orgs/org-midpoint-groups.xml similarity index 100% rename from demo/grouper/midpoint-objects/orgs/org-midpoint-groups.xml rename to demo/grouper/midpoint-objects (obsolete)/orgs/org-midpoint-groups.xml diff --git a/demo/grouper/midpoint-objects/resources/ldap-main.xml b/demo/grouper/midpoint-objects (obsolete)/resources/ldap-main.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/ldap-main.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/ldap-main.xml diff --git a/demo/grouper/midpoint-objects/resources/resource-grouper.xml b/demo/grouper/midpoint-objects (obsolete)/resources/resource-grouper.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/resource-grouper.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/resource-grouper.xml diff --git a/demo/grouper/midpoint-objects/resources/scriptedsql-sis-persons.xml b/demo/grouper/midpoint-objects (obsolete)/resources/scriptedsql-sis-persons.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/scriptedsql-sis-persons.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/scriptedsql-sis-persons.xml diff --git a/demo/grouper/midpoint-objects/resources/target-cs-portal.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-cs-portal.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/target-cs-portal.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/target-cs-portal.xml diff --git a/demo/grouper/midpoint-objects/resources/target-faculty-portal.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-faculty-portal.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/target-faculty-portal.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/target-faculty-portal.xml diff --git a/demo/grouper/midpoint-objects/resources/target-mailing-lists.xml b/demo/grouper/midpoint-objects (obsolete)/resources/target-mailing-lists.xml similarity index 100% rename from demo/grouper/midpoint-objects/resources/target-mailing-lists.xml rename to demo/grouper/midpoint-objects (obsolete)/resources/target-mailing-lists.xml diff --git a/demo/grouper/midpoint-objects/roles/metarole-grouper-provided-group.xml b/demo/grouper/midpoint-objects (obsolete)/roles/metarole-grouper-provided-group.xml similarity index 100% rename from demo/grouper/midpoint-objects/roles/metarole-grouper-provided-group.xml rename to demo/grouper/midpoint-objects (obsolete)/roles/metarole-grouper-provided-group.xml diff --git a/demo/grouper/midpoint-objects/roles/metarole-ldap-group.xml b/demo/grouper/midpoint-objects (obsolete)/roles/metarole-ldap-group.xml similarity index 100% rename from demo/grouper/midpoint-objects/roles/metarole-ldap-group.xml rename to demo/grouper/midpoint-objects (obsolete)/roles/metarole-ldap-group.xml diff --git a/demo/grouper/midpoint-objects/roles/role-ldap-basic.xml b/demo/grouper/midpoint-objects (obsolete)/roles/role-ldap-basic.xml similarity index 100% rename from demo/grouper/midpoint-objects/roles/role-ldap-basic.xml rename to demo/grouper/midpoint-objects (obsolete)/roles/role-ldap-basic.xml diff --git a/demo/grouper/midpoint-objects/systemConfigurations/SystemConfiguration.xml b/demo/grouper/midpoint-objects (obsolete)/systemConfigurations/SystemConfiguration.xml similarity index 100% rename from demo/grouper/midpoint-objects/systemConfigurations/SystemConfiguration.xml rename to demo/grouper/midpoint-objects (obsolete)/systemConfigurations/SystemConfiguration.xml diff --git a/demo/grouper/midpoint-objects/tasks/task-group-scavenger.xml b/demo/grouper/midpoint-objects (obsolete)/tasks/task-group-scavenger.xml similarity index 100% rename from demo/grouper/midpoint-objects/tasks/task-group-scavenger.xml rename to demo/grouper/midpoint-objects (obsolete)/tasks/task-group-scavenger.xml diff --git a/demo/grouper/midpoint-objects/users/user-banderson.xml b/demo/grouper/midpoint-objects (obsolete)/users/user-banderson.xml similarity index 100% rename from demo/grouper/midpoint-objects/users/user-banderson.xml rename to demo/grouper/midpoint-objects (obsolete)/users/user-banderson.xml diff --git a/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml b/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml index b59f5d7..c3ddcda 100644 --- a/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml +++ b/demo/grouper/midpoint-objects-manual/tasks/task-reconciliation-grouper-groups.xml @@ -25,7 +25,7 @@ <name>Grouper reconciliation (groups)</name> <extension xmlns:mext="http://midpoint.evolveum.com/xml/ns/public/model/extension-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="c:ExtensionType"> - <mext:objectclass>ri:CustomPlainGroupObjectClass</mext:objectclass> + <mext:objectclass>ri:Group</mext:objectclass> </extension> <taskIdentifier>605a0127-a313-442a-9d5e-151eac8b0745</taskIdentifier> <ownerRef oid="00000000-0000-0000-0000-000000000002" relation="org:default" type="c:UserType"> diff --git a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar deleted file mode 100644 index b072d05..0000000 Binary files a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.4.jar and /dev/null differ diff --git a/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar new file mode 100644 index 0000000..8418d8d Binary files /dev/null and b/demo/grouper/midpoint_server/container_files/mp-home/icf-connectors/connector-grouper-rest-0.5.jar differ diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml index 9ebd543..c9bd2ae 100644 --- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml +++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/functionLibraries/function-library-grouper.xml @@ -78,12 +78,16 @@ import static com.evolveum.midpoint.schema.constants.SchemaConstants.* import com.evolveum.midpoint.schema.util.* import com.evolveum.midpoint.prism.path.* - import com.evolveum.midpoint.schema.constants.* - import com.evolveum.midpoint.prism.delta.* + import com.evolveum.midpoint.schema.constants.* + import com.evolveum.midpoint.prism.delta.* - PLAIN_GROUP_OBJECT_CLASS = new ItemName(MidPointConstants.NS_RI, 'CustomPlainGroupObjectClass') - TRIGGER_FIRE_AFTER = 60000 - TRIGGER_SAFETY_MARGIN = 10000 + GROUP_OBJECT_CLASS = new ItemName(MidPointConstants.NS_RI, 'Group') + ATTR_NAME = new ItemName(MidPointConstants.NS_RI, 'name') + ATTR_UUID = new ItemName(MidPointConstants.NS_RI, 'uuid') + ATTR_MEMBER = new ItemName(MidPointConstants.NS_RI, 'member') + + TRIGGER_FIRE_AFTER = 60000 + TRIGGER_SAFETY_MARGIN = 10000 esbEvent = midpoint.getMessageBodyAsMap(message)['esbEvent'][0] log.info('esbEvent = {}', esbEvent) @@ -94,11 +98,11 @@ log.warn('No group name in membership change message, ignoring it: {}', esbEvent) return null } - groupId = esbEvent['groupId'] - if (groupId == null) { - log.warn('No group ID in membership change message, ignoring it: {}', esbEvent) - return null - } + groupId = esbEvent['groupId'] + if (groupId == null) { + log.warn('No group ID in membership change message, ignoring it: {}', esbEvent) + return null + } isExported = matches(groupName, groupIncludePattern, groupExcludePattern) if (!isExported) { log.info('Irrelevant group membership change, ignoring it: {}', groupName) @@ -110,29 +114,29 @@ return null } subjectId = esbEvent['subjectId'] - if (subjectId == null) { - log.info('Null subject ID in membership change message, ignoring it: {}', sourceId) - return null - } + if (subjectId == null) { + log.info('Null subject ID in membership change message, ignoring it: {}', sourceId) + return null + } log.info('### {} - {} - {}', subjectId, eventType, groupName) identifiers = new HashMap() - identifiers.put(ICFS_NAME, groupName) - identifiers.put(ICFS_UID, groupId) + identifiers.put(ATTR_NAME, groupName) + identifiers.put(ATTR_UUID, groupId) ObjectDeltaType delta itemDelta = new ItemDeltaType() itemDelta.modificationType = eventType == 'MEMBERSHIP_ADD' ? ModificationTypeType.ADD : ModificationTypeType.DELETE - itemDelta.path = new ItemPathType(ItemPath.create(ShadowType.F_ATTRIBUTES, 'member')) + itemDelta.path = new ItemPathType(ItemPath.create(ShadowType.F_ATTRIBUTES, ATTR_MEMBER)) itemDelta.value.add(RawType.fromPropertyRealValue(subjectId, null, prismContext)) delta = new ObjectDeltaType() delta.changeType = ChangeTypeType.MODIFY delta.itemDelta.add(itemDelta) - added = midpoint - .getOptimizingTriggerCreator(TRIGGER_FIRE_AFTER, TRIGGER_SAFETY_MARGIN) - .createForNamedUser(subjectId) - log.info('Recompute trigger for {}: {}', subjectId, added ? 'added' : 'not added (already present or user not found)') + added = midpoint + .getOptimizingTriggerCreator(TRIGGER_FIRE_AFTER, TRIGGER_SAFETY_MARGIN) + .createForNamedUser(subjectId) + log.info('Recompute trigger for {}: {}', subjectId, added ? 'added' : 'not added (already present or user not found)') - return UcfChangeUtil.create(PLAIN_GROUP_OBJECT_CLASS, identifiers, delta, prismContext) + return UcfChangeUtil.create(GROUP_OBJECT_CLASS, identifiers, delta, prismContext) } else if (eventType == 'GROUP_ADD' || eventType == 'GROUP_DELETE') { groupName = esbEvent['name'] groupId = esbEvent['id'] @@ -142,8 +146,8 @@ return null } identifiers = new HashMap() - identifiers.put(ICFS_NAME, groupName) - identifiers.put(ICFS_UID, groupId) + identifiers.put(ATTR_NAME, groupName) + identifiers.put(ATTR_UUID, groupId) ObjectDeltaType delta if (eventType == 'GROUP_DELETE') { delta = new ObjectDeltaType() @@ -151,7 +155,7 @@ } else { delta = null } - return UcfChangeUtil.create(PLAIN_GROUP_OBJECT_CLASS, identifiers, delta, prismContext) + return UcfChangeUtil.create(GROUP_OBJECT_CLASS, identifiers, delta, prismContext) } else { log.warn('Unsupported event type: {} -> {}', eventType, esbEvent) return null diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml index abfe97d..11fc705 100644 --- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml +++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/resources/resource-grouper.xml @@ -32,15 +32,15 @@ <rest:baseUrl>https://grouper-ws:443</rest:baseUrl> <rest:username>banderson</rest:username> <rest:password>password</rest:password> - <rest:superGroup>etc:sysadmingroup</rest:superGroup> <!-- parameter name will be changed --> + <rest:testStem>:</rest:testStem> + <!-- no testGroup: we cannot be sure that banderson is a member of sysadmingroup when doing the first test --> + <rest:exportStem>:</rest:exportStem> <rest:groupIncludePattern>app:.*</rest:groupIncludePattern> <rest:groupIncludePattern>test:.*</rest:groupIncludePattern> <rest:groupIncludePattern>ref:.*</rest:groupIncludePattern> <rest:groupExcludePattern>.*_(includes|excludes|systemOfRecord|systemOfRecordAndIncludes)</rest:groupExcludePattern> <rest:subjectSource>ldap</rest:subjectSource> - <rest:groupSource>g:gsa</rest:groupSource> <rest:ignoreSslValidation>true</rest:ignoreSslValidation> - <rest:exportStem>:</rest:exportStem> </icfc:configurationProperties> </connectorConfiguration> <additionalConnector> @@ -86,10 +86,10 @@ <objectType> <kind>entitlement</kind> <intent>group</intent> - <objectClass>ri:CustomPlainGroupObjectClass</objectClass> + <objectClass>ri:Group</objectClass> <default>true</default> <attribute> - <ref>icfs:name</ref> + <ref>ri:name</ref> <inbound> <strength>strong</strength> <target> @@ -139,7 +139,7 @@ <enabled>true</enabled> <kind>entitlement</kind> <intent>group</intent> - <objectClass>ri:CustomPlainGroupObjectClass</objectClass> + <objectClass>ri:Group</objectClass> <focusType>OrgType</focusType> <correlation> <q:equal> diff --git a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml index 9970677..ec86810 100644 --- a/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml +++ b/demo/grouper/midpoint_server/container_files/mp-home/post-initial-objects/systemConfigurations/SystemConfiguration.xml @@ -49,6 +49,10 @@ <level>INFO</level> <package>com.evolveum.midpoint.model.impl.lens.Clockwork</package> </classLogger> + <classLogger> + <level>DEBUG</level> + <package>com.evolveum.polygon.connector.grouper</package> + </classLogger> <appender id="11" xsi:type="c:FileAppenderConfigurationType"> <pattern>%date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n</pattern> <name>MIDPOINT_LOG</name>