From b80dfff8d40d16e7281c888d1b56929a278d16bb Mon Sep 17 00:00:00 2001 From: Chad Redman Date: Tue, 29 Oct 2024 12:11:35 -0400 Subject: [PATCH] Grouper -> v5.13.5; read imported configs from files rather than hardcoded gsh --- base/Dockerfile | 2 +- .../grouper/conf/grouper.properties | 51 -- .../container_files/grouper/bootstrap.gsh | 456 +++--------------- .../grouper-loader.properties.import | 199 ++++++++ .../conf_import/grouper-ui.properties.import | 0 .../conf_import/grouper.properties.import | 165 +++++++ .../grouper.text.en.us.properties.import | 3 + .../conf_import/subject.properties.import | 0 8 files changed, 424 insertions(+), 452 deletions(-) delete mode 100644 base/container_files/grouper/conf/grouper.properties create mode 100644 ex101/ex101.1.1/container_files/grouper/conf_import/grouper-loader.properties.import rename base/container_files/grouper/conf/grouper-ui.properties => ex101/ex101.1.1/container_files/grouper/conf_import/grouper-ui.properties.import (100%) create mode 100644 ex101/ex101.1.1/container_files/grouper/conf_import/grouper.properties.import rename base/container_files/grouper/conf/grouperText/grouper.text.en.us.properties => ex101/ex101.1.1/container_files/grouper/conf_import/grouper.text.en.us.properties.import (54%) rename base/container_files/grouper/conf/subject.properties => ex101/ex101.1.1/container_files/grouper/conf_import/subject.properties.import (100%) diff --git a/base/Dockerfile b/base/Dockerfile index db0cb80..ffcf554 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -3,7 +3,7 @@ FROM i2incommon/shib-idp:4.3.3_20240715_rocky8_multiarch AS idp #FROM i2incommon/grouper:4.10.2 as grouper4 # Grouper version for the entire GTE -FROM i2incommon/grouper:5.13.0 +FROM i2incommon/grouper:5.13.5 # Disable docker HEALTHCHECK inherited from tier/shib-sp HEALTHCHECK NONE diff --git a/base/container_files/grouper/conf/grouper.properties b/base/container_files/grouper/conf/grouper.properties deleted file mode 100644 index f80f914..0000000 --- a/base/container_files/grouper/conf/grouper.properties +++ /dev/null @@ -1,51 +0,0 @@ -# -# Grouper Configuration -# $Id: grouper.example.properties,v 1.48 2009-12-16 06:02:30 mchyzer Exp $ -# - -# Grouper uses Grouper Configuration Overlays (documented on wiki) -# By default the configuration is read from grouper.base.properties -# (which should not be edited), and the grouper.properties overlays -# the base settings. See the grouper.base.properties for the possible -# settings that can be applied to the grouper.properties - -#if groups like the wheel group should be auto-created for convenience (note: check config needs to be on) -#(already the default) configuration.autocreate.system.groups = true - -# A wheel group allows you to enable non-GrouperSystem subjects to act -# like a root user when interacting with the registry. -#(already the default) groups.wheel.use = true - -# Set to the name of the group you want to treat as the wheel group. -# The members of this group will be treated as root-like users. -#(already the default) groups.wheel.group = etc:sysadmingroup - -# Used to allow Include Exclude groups -grouperIncludeExclude.use = true -grouperIncludeExclude.requireGroups.use = true - -################################## -## Lockout groups. Could be used for other things, but used for policy group templates at least -## if there is no allowed group, then anyone could use it -################################## - -# allowed to use this lockout group. If not configured, anyone could use -# {valueType: "group", regex: "^grouper\\.lockoutGroup\\.allowedToUse\\.\\d+$"} -# grouper.lockoutGroup.allowedToUse.0 = ref:lockoutCanUse - -################################## -## Require groups. Could be used for other things, but used for policy group templates at least -## if there is no allowed group, then anyone could use it -################################## - -# group name of a require group -# {valueType: "group", regex: "^grouper\\.requireGroup\\.name\\.\\d+$"} -#grouper.requireGroup.name.0 = ref:iam:active - -# allowed to use this require group. If not configured, anyone could use -# {valueType: "group", regex: "^grouper\\.lockoutGroup\\.requireGroup\\.\\d+$"} -# grouper.requireGroup.allowedToUse.0 = ref:activeCanUse - -# grouper reporting file system path where reports will be stored, e.g. /opt/grouper/reports -# {valueType: "string", required: false} -reporting.file.system.path = /tmp diff --git a/ex101/ex101.1.1/container_files/grouper/bootstrap.gsh b/ex101/ex101.1.1/container_files/grouper/bootstrap.gsh index 39b72e0..f5070b2 100644 --- a/ex101/ex101.1.1/container_files/grouper/bootstrap.gsh +++ b/ex101/ex101.1.1/container_files/grouper/bootstrap.gsh @@ -3,20 +3,18 @@ //:set verbosity QUIET //:set interpreterMode false - -import edu.internet2.middleware.grouper.*; -import edu.internet2.middleware.grouper.app.gsh.*; +import edu.internet2.middleware.grouper.* +import edu.internet2.middleware.grouper.app.loader.GrouperLoader +import edu.internet2.middleware.grouper.app.loader.OtherJobBase; import edu.internet2.middleware.grouper.privs.*; import edu.internet2.middleware.grouper.misc.*; -import edu.internet2.middleware.grouper.app.misc.* -import edu.internet2.middleware.grouper.util.* import edu.internet2.middleware.subject.* -// /** END groovysh.profile imports **/ import edu.internet2.middleware.grouper.app.grouperTypes.* import edu.internet2.middleware.grouper.app.loader.db.Hib3GrouperLoaderLog import edu.internet2.middleware.grouper.cfg.dbConfig.GrouperDbConfig +import edu.internet2.middleware.subject.provider.SourceManager import org.quartz.JobKey GrouperSession gs = GrouperSession.startRootSession() @@ -82,40 +80,65 @@ Group globalDeny = new GroupSave(gs).assignName("ref:iam:global_deny").assignCre assignObjectTypeForGroup(globalDeny, "ref", "Identity and Access Management", "Global deny group") -// Set grouper.properties +// Set property files + +import edu.internet2.middleware.grouper.cfg.dbConfig.GrouperDbConfig -GrouperDbConfig config = new GrouperDbConfig().configFileName("grouper.properties") -config.propertyName("provisioner.eduPersonAffiliation.canFullSync").value('''true''').store() +def configs = [ + "grouper.text.en.us.properties", + "grouper.properties", + "grouper-ui.properties", + "subject.properties", + "grouper-loader.properties", +] -// email settings -config.propertyName("grouper.ui.url").value('''https://localhost:8443/grouper/''').store() -config.propertyName("mail.smtp.server").value('''localhost''').store() -config.propertyName("mail.smtp.port").value('''1025''').store() -config.propertyName("mail.smtp.ssl").value('''false''').store() -config.propertyName("mail.smtp.starttls.enable").value('''false''').store() -config.propertyName("mail.smtp.from.address").value('''grouper@internet2.edu.invalid''').store() -config.propertyName("mail.smtp.externalSystemTestToType").value('''emailAddress''').store() -config.propertyName("mail.smtp.externalSystemTestToAddress").value('''grouper@internet2.edu.invalid''').store() -config.propertyName("mail.smtp.externalSystemTestSubject").value('''Test of Grouper mail''').store() -config.propertyName("mail.smtp.externalSystemTestBody").value('''This is a test of grouper mail''').store() +configs.each { config -> + File subjectPropertiesFile = new File("/tmp/ex101/grouper/conf_import/${config}.import") + def reader = new InputStreamReader(subjectPropertiesFile.newInputStream()) -// Autopopulate policy deny group -config.propertyName("grouper.lockoutGroup.name.0").value('''ref:iam:global_deny''').store() + Properties propertiesToImport = new Properties() + propertiesToImport.load(reader) -// Used for policy "require users in other group" -config.propertyName("grouper.requireGroup.name.0").value('''ref:role:all_facstaff''').store() + GrouperDbConfig subjectConfig = new GrouperDbConfig().configFileName(config) -// Used in membership filter -config.propertyName("grouper.membership.customComposite.uiKey.0").value('''customCompositeAllFacStaff''').store() -config.propertyName("grouper.membership.customComposite.compositeType.0").value('''intersection''').store() -config.propertyName("grouper.membership.customComposite.groupName.0").value('''ref:role:all_facstaff''').store() + propertiesToImport.each { prop -> + int ct = 0 + try { + subjectConfig.propertyName((String) prop.key).value(prop.value).store() + println "${config}: ${prop.key} = ${prop.value}" + } catch (Exception e) { + //subject config doesn't seem threadsafe, sometimes it is missing the adapter class + ++ct + if (ct < 10) { + println "Failed (try ${ct}) to update property ${prop.key}: ${e.message}" + } else { + throw(e) + } + } + } +} -config.propertyName("grouper.membership.customComposite.uiKey.1").value('''customCompositeMinusFacStaff''').store() -config.propertyName("grouper.membership.customComposite.compositeType.1").value('''complement''').store() -config.propertyName("grouper.membership.customComposite.groupName.1").value('''ref:role:all_facstaff''').store() +SourceManager.getInstance().reloadSource("eduLDAP") +println "Testing subject sources after import:" +SourceManager.instance.sources.each { + println "${it.id}: ${it.name}" +} + +GrouperLoader.scheduleJobs() + +[ + 'CHANGE_LOG_consumer_provisioner_incremental_eduPersonAffiliation', + 'CHANGE_LOG_consumer_provisioner_incremental_eduPersonEntitlement', + 'CHANGE_LOG_consumer_provisioner_incremental_groupOfNames', + 'OTHER_JOB_provisioner_full_eduPersonAffiliation', + 'OTHER_JOB_provisioner_full_eduPersonEntitlement', + 'OTHER_JOB_provisioner_full_groupOfNames', +].each { + GrouperLoader.schedulerFactory().getScheduler().pauseJob(new JobKey(it)) +} /***** Employee by Dept Loader *****/ @@ -340,212 +363,7 @@ def adhocStem = new StemSave(gs).assignName("basis:adhoc"). /***** Provisioners *****/ -GrouperSession.startRootSessionIfNotStarted() // 2.6.15.1 not sure why the session keeps going away - -GrouperDbConfig config = new GrouperDbConfig().configFileName("grouper-loader.properties") - -GrouperDbConfig textConfig = new GrouperDbConfig().configFileName("grouper.text.en.us.properties") -/* eduPersonAffiliation provisioner -- exercise 201.3 */ - -config.propertyName("provisioner.eduPersonAffiliation.class").value('''edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync''').store() -config.propertyName("provisioner.eduPersonAffiliation.customizeGroupCrud").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.deleteGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityAttributeValueCache0entityAttribute").value('''ldap_dn''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityAttributeValueCache0source").value('''target''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityAttributeValueCache0type").value('''entityAttribute''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityMatchingAttribute0name").value('''uid''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityMatchingAttributeCount").value('''1''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityMembershipAttributeName").value('''eduPersonAffiliation''').store() -config.propertyName("provisioner.eduPersonAffiliation.entityMembershipAttributeValue").value('''groupAttributeValueCache0''').store() -config.propertyName("provisioner.eduPersonAffiliation.groupAttributeValueCache0groupAttribute").value('''affiliation''').store() -config.propertyName("provisioner.eduPersonAffiliation.groupAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.groupAttributeValueCache0source").value('''grouper''').store() -config.propertyName("provisioner.eduPersonAffiliation.groupAttributeValueCache0type").value('''groupAttribute''').store() -config.propertyName("provisioner.eduPersonAffiliation.groupAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.hasTargetEntityLink").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.insertGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.ldapExternalSystemConfigId").value('''demo''').store() -config.propertyName("provisioner.eduPersonAffiliation.numberOfEntityAttributes").value('''4''').store() -config.propertyName("provisioner.eduPersonAffiliation.numberOfGroupAttributes").value('''1''').store() -config.propertyName("provisioner.eduPersonAffiliation.operateOnGrouperEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.operateOnGrouperGroups").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.operateOnGrouperMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.provisioningType").value('''entityAttributes''').store() -config.propertyName("provisioner.eduPersonAffiliation.selectAllEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.selectGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.startWith").value('''this is start with read only''').store() -config.propertyName("provisioner.eduPersonAffiliation.subjectSourcesToProvision").value('''eduLDAP''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.name").value('''ldap_dn''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.multiValued").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.name").value('''eduPersonAffiliation''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.name").value('''uid''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.translateFromGrouperProvisioningEntityField").value('''subjectIdentifier0''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.multiValued").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.name").value('''objectClass''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.translateExpressionType").value('''staticValues''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.3.translateFromStaticValues").value('''eduPerson''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetGroupAttribute.0.name").value('''affiliation''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetGroupAttribute.0.translateExpressionType").value('''grouperProvisioningGroupField''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetGroupAttribute.0.translateFromGrouperProvisioningGroupField").value('''extension''').store() -config.propertyName("provisioner.eduPersonAffiliation.updateGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.userSearchBaseDn").value('''ou=people,dc=internet2,dc=edu''').store() - -config.propertyName("changeLog.consumer.provisioner_incremental_eduPersonAffiliation.class").value('''edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer''').store() -config.propertyName("changeLog.consumer.provisioner_incremental_eduPersonAffiliation.provisionerConfigId").value('''eduPersonAffiliation''').store() -config.propertyName("changeLog.consumer.provisioner_incremental_eduPersonAffiliation.publisher.class").value('''edu.internet2.middleware.grouper.app.provisioning.ProvisioningConsumer''').store() -config.propertyName("changeLog.consumer.provisioner_incremental_eduPersonAffiliation.publisher.debug").value('''false''').store() -config.propertyName("changeLog.consumer.provisioner_incremental_eduPersonAffiliation.quartzCron").value('''0 * * * * ?''').store() -config.propertyName("otherJob.provisioner_full_eduPersonAffiliation.class").value('''edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob''').store() -config.propertyName("otherJob.provisioner_full_eduPersonAffiliation.provisionerConfigId").value('''eduPersonAffiliation''').store() -config.propertyName("otherJob.provisioner_full_eduPersonAffiliation.quartzCron").value('''0 8 4 * * ?''').store() - -// We want to leave the incremental paused at first to avoid confusion. -// looks like this needs to be called after scheduleJobs() in order to be effective -//GrouperLoader.schedulerFactory().getScheduler().pauseJob(new JobKey("CHANGE_LOG_consumer_provisioner_incremental_eduPersonAffiliation")) - -/* eduPersonEntitlement provisioner -- exercise 201.4 */ - -GrouperSession.startRootSessionIfNotStarted() // 2.6.15.1 not sure why the session keeps going away - -config.propertyName("provisioner.eduPersonEntitlement.class").value('''edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync''').store() -config.propertyName("provisioner.eduPersonEntitlement.configureMetadata").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.customizeGroupCrud").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.deleteGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityAttributeValueCache0entityAttribute").value('''ldap_dn''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityAttributeValueCache0source").value('''target''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityAttributeValueCache0type").value('''entityAttribute''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityMatchingAttribute0name").value('''uid''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityMatchingAttributeCount").value('''1''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityMembershipAttributeName").value('''eduPersonEntitlement''').store() -config.propertyName("provisioner.eduPersonEntitlement.entityMembershipAttributeValue").value('''groupAttributeValueCache0''').store() -config.propertyName("provisioner.eduPersonEntitlement.groupAttributeValueCache0groupAttribute").value('''entitlement_string''').store() -config.propertyName("provisioner.eduPersonEntitlement.groupAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.groupAttributeValueCache0source").value('''grouper''').store() -config.propertyName("provisioner.eduPersonEntitlement.groupAttributeValueCache0type").value('''groupAttribute''').store() -config.propertyName("provisioner.eduPersonEntitlement.groupAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.hasTargetEntityLink").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.insertGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.ldapExternalSystemConfigId").value('''demo''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.formElementType").value('''text''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.name").value('''md_entitlementValue''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.showForGroup").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.canChange").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.metadata.0.canUpdate").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.numberOfEntityAttributes").value('''4''').store() -config.propertyName("provisioner.eduPersonEntitlement.numberOfGroupAttributes").value('''1''').store() -config.propertyName("provisioner.eduPersonEntitlement.numberOfMetadata").value('''1''').store() -config.propertyName("provisioner.eduPersonEntitlement.operateOnGrouperEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.operateOnGrouperGroups").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.operateOnGrouperMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.provisioningType").value('''entityAttributes''').store() -config.propertyName("provisioner.eduPersonEntitlement.selectAllEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.selectGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.startWith").value('''this is start with read only''').store() -config.propertyName("provisioner.eduPersonEntitlement.subjectSourcesToProvision").value('''eduLDAP''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.name").value('''ldap_dn''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.name").value('''eduPersonEntitlement''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.name").value('''uid''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.translateFromGrouperProvisioningEntityField").value('''subjectIdentifier0''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.multiValued").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.name").value('''objectClass''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.translateExpressionType").value('''staticValues''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.3.translateFromStaticValues").value('''eduPerson''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.name").value('''entitlement_string''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.translateExpression").value('''${grouperUtil.defaultIfBlank(grouperProvisioningGroup.retrieveAttributeValueString('md_entitlementValue') , grouperProvisioningGroup.name )}''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.translateExpressionType").value('''translationScript''').store() -config.propertyName("provisioner.eduPersonEntitlement.updateGroups").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.userSearchBaseDn").value('''ou=people,dc=internet2,dc=edu''').store() - -textConfig.propertyName("md_entitlementValue_eduPersonEntitlement_label").value('''Entitlement String''').store() -textConfig.propertyName("md_entitlementValue_eduPersonEntitlement_description").value( - '''Static string value to use as the entitlement. Will use the group name if not set''').store() - -/* for this exercise, they will create a full sync provisioner in the UI */ - - -/* groupOfNames provisioner -- exercise 40x */ - -GrouperSession.startRootSessionIfNotStarted() // 2.6.15.1 not sure why the session keeps going away - -config.propertyName("provisioner.groupOfNames.class").value('''edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync''').store() -config.propertyName("provisioner.groupOfNames.entityAttributeValueCache0entityAttribute").value('''ldap_dn''').store() -config.propertyName("provisioner.groupOfNames.entityAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.groupOfNames.entityAttributeValueCache0source").value('''target''').store() -config.propertyName("provisioner.groupOfNames.entityAttributeValueCache0type").value('''entityAttribute''').store() -config.propertyName("provisioner.groupOfNames.entityAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.groupOfNames.entityMatchingAttribute0name").value('''uid''').store() -config.propertyName("provisioner.groupOfNames.entityMatchingAttributeCount").value('''1''').store() -config.propertyName("provisioner.groupOfNames.groupAttributeValueCache0groupAttribute").value('''ldap_dn''').store() -config.propertyName("provisioner.groupOfNames.groupAttributeValueCache0has").value('''true''').store() -config.propertyName("provisioner.groupOfNames.groupAttributeValueCache0source").value('''target''').store() -config.propertyName("provisioner.groupOfNames.groupAttributeValueCache0type").value('''groupAttribute''').store() -config.propertyName("provisioner.groupOfNames.groupAttributeValueCacheHas").value('''true''').store() -config.propertyName("provisioner.groupOfNames.groupDnType").value('''flat''').store() -config.propertyName("provisioner.groupOfNames.groupMatchingAttribute0name").value('''cn''').store() -config.propertyName("provisioner.groupOfNames.groupMatchingAttributeCount").value('''1''').store() -config.propertyName("provisioner.groupOfNames.groupMembershipAttributeName").value('''member''').store() -config.propertyName("provisioner.groupOfNames.groupMembershipAttributeValue").value('''entityAttributeValueCache0''').store() -config.propertyName("provisioner.groupOfNames.groupRdnAttribute").value('''cn''').store() -config.propertyName("provisioner.groupOfNames.groupSearchBaseDn").value('''ou=groups,dc=internet2,dc=edu''').store() -config.propertyName("provisioner.groupOfNames.hasTargetEntityLink").value('''true''').store() -config.propertyName("provisioner.groupOfNames.hasTargetGroupLink").value('''true''').store() -config.propertyName("provisioner.groupOfNames.ldapExternalSystemConfigId").value('''demo''').store() -config.propertyName("provisioner.groupOfNames.numberOfEntityAttributes").value('''3''').store() -config.propertyName("provisioner.groupOfNames.numberOfGroupAttributes").value('''5''').store() -config.propertyName("provisioner.groupOfNames.operateOnGrouperEntities").value('''true''').store() -config.propertyName("provisioner.groupOfNames.operateOnGrouperGroups").value('''true''').store() -config.propertyName("provisioner.groupOfNames.operateOnGrouperMemberships").value('''true''').store() -config.propertyName("provisioner.groupOfNames.provisioningType").value('''groupAttributes''').store() -config.propertyName("provisioner.groupOfNames.selectAllEntities").value('''false''').store() -config.propertyName("provisioner.groupOfNames.startWith").value('''this is start with read only''').store() -config.propertyName("provisioner.groupOfNames.subjectSourcesToProvision").value('''eduLDAP''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.0.name").value('''ldap_dn''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.name").value('''uid''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.translateFromGrouperProvisioningEntityField").value('''subjectIdentifier0''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.multiValued").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.name").value('''objectClass''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.translateExpressionType").value('''staticValues''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.2.translateFromStaticValues").value('''eduPerson''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.name").value('''ldap_dn''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.name").value('''cn''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.translateExpressionType").value('''grouperProvisioningGroupField''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.translateFromGrouperProvisioningGroupField").value('''name''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.defaultValue").value('''''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.multiValued").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.name").value('''member''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.multiValued").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.name").value('''objectClass''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.showAdvancedAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.showAttributeValueSettings").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.translateExpressionType").value('''staticValues''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.translateFromStaticValues").value('''top,groupOfNames''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.name").value('''description''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.translateExpressionType").value('''grouperProvisioningGroupField''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.translateFromGrouperProvisioningGroupField").value('''description''').store() -config.propertyName("provisioner.groupOfNames.userSearchBaseDn").value('''ou=people,dc=internet2,dc=edu''').store() - -config.propertyName("otherJob.groupOfNames_full_sync.class").value('''edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob''').store() -config.propertyName("otherJob.groupOfNames_full_sync.provisionerConfigId").value('''groupOfNames''').store() -config.propertyName("otherJob.groupOfNames_full_sync.quartzCron").value('''0 0 4 * * ?''').store() -//GrouperLoader.scheduleJobs() +GrouperLoader.scheduleJobs() /* TODO @@ -598,166 +416,4 @@ assignObjectTypeForGroup(group, "ref", "HR, IAM", "Combines the All Faculty plus //loaderRunOneJob("CHANGE_LOG_changeLogTempToChangeLog") /***** Schedule jobs is an upgrade task for 2.5.55 ****/ - -GrouperLoader.scheduleJobs() - -// looks like this needs to be called after scheduleJobs() in order to be effective -GrouperLoader.schedulerFactory().getScheduler().pauseJob(new JobKey("CHANGE_LOG_consumer_provisioner_incremental_eduPersonAffiliation")) - - -/***** Data fields *****/ - -config = new GrouperDbConfig().configFileName("grouper.properties") - -config.propertyName("grouperPrivacyRealm.hr_employees.privacyRealmName").value('''hr_employees''').store() -config.propertyName("grouperPrivacyRealm.hr_employees.privacyRealmPublic").value('''true''').store() -config.propertyName("grouperPrivacyRealm.sis_courses.privacyRealmName").value('''sis_courses''').store() -config.propertyName("grouperPrivacyRealm.sis_courses.privacyRealmPublic").value('''true''').store() -config.propertyName("grouperPrivacyRealm.sis_programs.privacyRealmName").value('''sis_programs''').store() -config.propertyName("grouperPrivacyRealm.sis_programs.privacyRealmPublic").value('''true''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.descriptionHtml").value('''HR Department Code''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldAliases").value('''dept_code''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_dept_abbrev.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_dept_id.descriptionHtml").value('''HR 5-digit Department ID''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldAliases").value('''dept_id''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_dept_id.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_dept_name.descriptionHtml").value('''HR Department Name''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldAliases").value('''dept_name''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_dept_name.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_org_abbrev.descriptionHtml").value('''Umbrella Org Short Code''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldAliases").value('''org_code''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_org_abbrev.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_org_name.descriptionHtml").value('''Umbrella Org Name''').store() -config.propertyName("grouperDataField.hr_org_name.fieldAliases").value('''org_name''').store() -config.propertyName("grouperDataField.hr_org_name.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_org_name.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_org_name.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_org_name.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_org_name.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_org_name.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_org_name.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.descriptionHtml").value('''HR Parent Dept Code''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldAliases").value('''parent_dept_code''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_parent_dept_abbrev.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.descriptionHtml").value('''HR 5-digit Parent Dept Id''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldAliases").value('''parent_dept_id''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_parent_dept_id.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_position_id.descriptionHtml").value('''The Position ID''').store() -config.propertyName("grouperDataField.hr_position_id.fieldAliases").value('''position_id''').store() -config.propertyName("grouperDataField.hr_position_id.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_position_id.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_position_id.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_position_id.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_position_id.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_position_id.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_position_id.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataField.hr_role.descriptionHtml").value('''HR Role (staff, faculty, etc))''').store() -config.propertyName("grouperDataField.hr_role.fieldAliases").value('''role''').store() -config.propertyName("grouperDataField.hr_role.fieldDataAssignableTo").value('''individuals''').store() -config.propertyName("grouperDataField.hr_role.fieldDataStorePit").value('''false''').store() -config.propertyName("grouperDataField.hr_role.fieldDataStructure").value('''rowColumn''').store() -config.propertyName("grouperDataField.hr_role.fieldDataType").value('''string''').store() -config.propertyName("grouperDataField.hr_role.fieldDataUse").value('''informational''').store() -config.propertyName("grouperDataField.hr_role.fieldMultiValued").value('''true''').store() -config.propertyName("grouperDataField.hr_role.fieldPrivacyRealm").value('''hr_employees''').store() -config.propertyName("grouperDataProvider.hr_data.name").value('''hr_data''').store() -config.propertyName("grouperDataProvider.sis_data.name").value('''sis_data''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerConfigId").value('''hr_data''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldAttribute").value('''position_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldConfigId").value('''hr_position_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldAttribute").value('''role''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldConfigId").value('''hr_role''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldAttribute").value('''dept_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldConfigId").value('''hr_dept_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldAttribute").value('''dept_name''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldConfigId").value('''hr_dept_name''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldAttribute").value('''parent_dept_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldConfigId").value('''hr_parent_dept_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldAttribute").value('''parent_dept_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldConfigId").value('''hr_parent_dept_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldAttribute").value('''org_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldConfigId").value('''hr_org_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldAttribute").value('''org_name''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldConfigId").value('''hr_org_name''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldAttribute").value('''dept_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldConfigId").value('''hr_dept_abbrev''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldMappingType").value('''attribute''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryDataStructure").value('''row''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryNumberOfDataFields").value('''9''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryRowConfigId").value('''hr_positions''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQuerySqlConfigId").value('''hr''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQuerySqlQuery").value('''select J.person_id, P.position_id, P.role, D.dept_id, D.abbrev as dept_abbrev, D.name as dept_name, PD.dept_id as parent_dept_id, PD.abbrev as parent_dept_abbrev, Org.abbrev as org_abbrev, OrgDept.name as org_name from hr_jobs J join hr_positions P on J.position_id = P.position_id join hr_depts D on P.dept_id = D.dept_id left join hr_depts PD on D.parent_dept_id = PD.dept_id left join hr_orgs Org on D.dept_id between Org.min_dept_id and Org.max_dept_id left join hr_depts OrgDept on Org.dept_id = OrgDept.dept_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQuerySubjectIdAttribute").value('''person_id''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQuerySubjectIdType").value('''subjectId''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQuerySubjectSourceId").value('''eduLDAP''').store() -config.propertyName("grouperDataProviderQuery.hr_person_positions.providerQueryType").value('''sql''').store() -config.propertyName("grouperDataRow.hr_positions.descriptionHtml").value('''HR job assignments''').store() -config.propertyName("grouperDataRow.hr_positions.rowAliases").value('''hr_positions''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.0.colDataFieldConfigId").value('''hr_position_id''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.0.rowKeyField").value('''true''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.1.colDataFieldConfigId").value('''hr_role''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.2.colDataFieldConfigId").value('''hr_dept_id''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.3.colDataFieldConfigId").value('''hr_dept_name''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.4.colDataFieldConfigId").value('''hr_parent_dept_id''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.5.colDataFieldConfigId").value('''hr_parent_dept_abbrev''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.6.colDataFieldConfigId").value('''hr_dept_abbrev''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.7.colDataFieldConfigId").value('''hr_org_abbrev''').store() -config.propertyName("grouperDataRow.hr_positions.rowDataField.8.colDataFieldConfigId").value('''hr_org_name''').store() -config.propertyName("grouperDataRow.hr_positions.rowNumberOfDataFields").value('''9''').store() -config.propertyName("grouperDataRow.hr_positions.rowPrivacyRealm").value('''hr_employees''').store() - - -config = new GrouperDbConfig().configFileName("grouper-loader.properties") - -// full sync job -config.propertyName("otherJob.dataProviderHR.class").value('''edu.internet2.middleware.grouper.dataField.GrouperDataProviderFullSyncJob''').store() -config.propertyName("otherJob.dataProviderHR.dataProviderConfigId").value('''hr_data''').store() -config.propertyName("otherJob.dataProviderHR.quartzCron").value('''0 0 5 * * ?''').store() - -// incremental sync job -config.propertyName("otherJob.dataProviderHR_incremental.class").value('''edu.internet2.middleware.grouper.dataField.GrouperDataProviderIncrementalSyncJob''').store() -config.propertyName("otherJob.dataProviderHR_incremental.dataProviderConfigId").value('''hr_data''').store() +//GrouperLoader.scheduleJobs() diff --git a/ex101/ex101.1.1/container_files/grouper/conf_import/grouper-loader.properties.import b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper-loader.properties.import new file mode 100644 index 0000000..1f39cbe --- /dev/null +++ b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper-loader.properties.import @@ -0,0 +1,199 @@ +provisioner.eduPersonAffiliation.class = edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync +provisioner.eduPersonAffiliation.customizeGroupCrud = true +provisioner.eduPersonAffiliation.deleteGroups = false +provisioner.eduPersonAffiliation.entityAttributeValueCache0entityAttribute = ldap_dn +provisioner.eduPersonAffiliation.entityAttributeValueCache0has = true +provisioner.eduPersonAffiliation.entityAttributeValueCache0source = target +provisioner.eduPersonAffiliation.entityAttributeValueCache0type = entityAttribute +provisioner.eduPersonAffiliation.entityAttributeValueCacheHas = true +provisioner.eduPersonAffiliation.entityMatchingAttribute0name = uid +provisioner.eduPersonAffiliation.entityMatchingAttributeCount = 1 +provisioner.eduPersonAffiliation.entityMembershipAttributeName = eduPersonAffiliation +provisioner.eduPersonAffiliation.entityMembershipAttributeValue = groupAttributeValueCache0 +provisioner.eduPersonAffiliation.groupAttributeValueCache0groupAttribute = affiliation +provisioner.eduPersonAffiliation.groupAttributeValueCache0has = true +provisioner.eduPersonAffiliation.groupAttributeValueCache0source = grouper +provisioner.eduPersonAffiliation.groupAttributeValueCache0type = groupAttribute +provisioner.eduPersonAffiliation.groupAttributeValueCacheHas = true +provisioner.eduPersonAffiliation.hasTargetEntityLink = true +provisioner.eduPersonAffiliation.insertGroups = false +provisioner.eduPersonAffiliation.ldapExternalSystemConfigId = demo +provisioner.eduPersonAffiliation.numberOfEntityAttributes = 4 +provisioner.eduPersonAffiliation.numberOfGroupAttributes = 1 +provisioner.eduPersonAffiliation.operateOnGrouperEntities = true +provisioner.eduPersonAffiliation.operateOnGrouperGroups = true +provisioner.eduPersonAffiliation.operateOnGrouperMemberships = true +provisioner.eduPersonAffiliation.provisioningType = entityAttributes +provisioner.eduPersonAffiliation.selectAllEntities = true +provisioner.eduPersonAffiliation.selectGroups = false +provisioner.eduPersonAffiliation.startWith = this is start with read only +provisioner.eduPersonAffiliation.subjectSourcesToProvision = eduLDAP +provisioner.eduPersonAffiliation.targetEntityAttribute.0.name = ldap_dn +provisioner.eduPersonAffiliation.targetEntityAttribute.1.multiValued = true +provisioner.eduPersonAffiliation.targetEntityAttribute.1.name = eduPersonAffiliation +provisioner.eduPersonAffiliation.targetEntityAttribute.1.showAdvancedAttribute = true +provisioner.eduPersonAffiliation.targetEntityAttribute.1.showAttributeValueSettings = true +provisioner.eduPersonAffiliation.targetEntityAttribute.2.name = uid +provisioner.eduPersonAffiliation.targetEntityAttribute.2.translateExpressionType = grouperProvisioningEntityField +provisioner.eduPersonAffiliation.targetEntityAttribute.2.translateFromGrouperProvisioningEntityField = subjectIdentifier0 +provisioner.eduPersonAffiliation.targetEntityAttribute.3.multiValued = true +provisioner.eduPersonAffiliation.targetEntityAttribute.3.name = objectClass +provisioner.eduPersonAffiliation.targetEntityAttribute.3.showAdvancedAttribute = true +provisioner.eduPersonAffiliation.targetEntityAttribute.3.showAttributeValueSettings = true +provisioner.eduPersonAffiliation.targetEntityAttribute.3.translateExpressionType = staticValues +provisioner.eduPersonAffiliation.targetEntityAttribute.3.translateFromStaticValues = eduPerson +provisioner.eduPersonAffiliation.targetGroupAttribute.0.name = affiliation +provisioner.eduPersonAffiliation.targetGroupAttribute.0.translateExpressionType = grouperProvisioningGroupField +provisioner.eduPersonAffiliation.targetGroupAttribute.0.translateFromGrouperProvisioningGroupField = extension +provisioner.eduPersonAffiliation.updateGroups = false +provisioner.eduPersonAffiliation.userSearchBaseDn = ou=people,dc=internet2,dc=edu +changeLog.consumer.provisioner_incremental_eduPersonAffiliation.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer +changeLog.consumer.provisioner_incremental_eduPersonAffiliation.provisionerConfigId = eduPersonAffiliation +changeLog.consumer.provisioner_incremental_eduPersonAffiliation.publisher.class = edu.internet2.middleware.grouper.app.provisioning.ProvisioningConsumer +changeLog.consumer.provisioner_incremental_eduPersonAffiliation.publisher.debug = false +changeLog.consumer.provisioner_incremental_eduPersonAffiliation.quartzCron = 0 * * * * ? +otherJob.provisioner_full_eduPersonAffiliation.class = edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob +otherJob.provisioner_full_eduPersonAffiliation.provisionerConfigId = eduPersonAffiliation +otherJob.provisioner_full_eduPersonAffiliation.quartzCron = 0 8 4 * * ? + +provisioner.eduPersonEntitlement.class = edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync +provisioner.eduPersonEntitlement.configureMetadata = true +provisioner.eduPersonEntitlement.customizeGroupCrud = true +provisioner.eduPersonEntitlement.deleteGroups = false +provisioner.eduPersonEntitlement.entityAttributeValueCache0entityAttribute = ldap_dn +provisioner.eduPersonEntitlement.entityAttributeValueCache0has = true +provisioner.eduPersonEntitlement.entityAttributeValueCache0source = target +provisioner.eduPersonEntitlement.entityAttributeValueCache0type = entityAttribute +provisioner.eduPersonEntitlement.entityAttributeValueCacheHas = true +provisioner.eduPersonEntitlement.entityMatchingAttribute0name = uid +provisioner.eduPersonEntitlement.entityMatchingAttributeCount = 1 +provisioner.eduPersonEntitlement.entityMembershipAttributeName = eduPersonEntitlement +provisioner.eduPersonEntitlement.entityMembershipAttributeValue = groupAttributeValueCache0 +provisioner.eduPersonEntitlement.groupAttributeValueCache0groupAttribute = entitlement_string +provisioner.eduPersonEntitlement.groupAttributeValueCache0has = true +provisioner.eduPersonEntitlement.groupAttributeValueCache0source = grouper +provisioner.eduPersonEntitlement.groupAttributeValueCache0type = groupAttribute +provisioner.eduPersonEntitlement.groupAttributeValueCacheHas = true +provisioner.eduPersonEntitlement.hasTargetEntityLink = true +provisioner.eduPersonEntitlement.insertGroups = false +provisioner.eduPersonEntitlement.ldapExternalSystemConfigId = demo +provisioner.eduPersonEntitlement.metadata.0.formElementType = text +provisioner.eduPersonEntitlement.metadata.0.name = md_entitlementValue +provisioner.eduPersonEntitlement.metadata.0.showForGroup = true +provisioner.eduPersonEntitlement.metadata.0.valueType = string +provisioner.eduPersonEntitlement.metadata.0.canChange = true +provisioner.eduPersonEntitlement.metadata.0.canUpdate = true +provisioner.eduPersonEntitlement.numberOfEntityAttributes = 4 +provisioner.eduPersonEntitlement.numberOfGroupAttributes = 1 +provisioner.eduPersonEntitlement.numberOfMetadata = 1 +provisioner.eduPersonEntitlement.operateOnGrouperEntities = true +provisioner.eduPersonEntitlement.operateOnGrouperGroups = true +provisioner.eduPersonEntitlement.operateOnGrouperMemberships = true +provisioner.eduPersonEntitlement.provisioningType = entityAttributes +provisioner.eduPersonEntitlement.selectAllEntities = true +provisioner.eduPersonEntitlement.selectGroups = false +provisioner.eduPersonEntitlement.startWith = this is start with read only +provisioner.eduPersonEntitlement.subjectSourcesToProvision = eduLDAP +provisioner.eduPersonEntitlement.targetEntityAttribute.0.name = ldap_dn +provisioner.eduPersonEntitlement.targetEntityAttribute.1.name = eduPersonEntitlement +provisioner.eduPersonEntitlement.targetEntityAttribute.2.name = uid +provisioner.eduPersonEntitlement.targetEntityAttribute.2.translateExpressionType = grouperProvisioningEntityField +provisioner.eduPersonEntitlement.targetEntityAttribute.2.translateFromGrouperProvisioningEntityField = subjectIdentifier0 +provisioner.eduPersonEntitlement.targetEntityAttribute.3.multiValued = true +provisioner.eduPersonEntitlement.targetEntityAttribute.3.name = objectClass +provisioner.eduPersonEntitlement.targetEntityAttribute.3.showAdvancedAttribute = true +provisioner.eduPersonEntitlement.targetEntityAttribute.3.showAttributeValueSettings = true +provisioner.eduPersonEntitlement.targetEntityAttribute.3.translateExpressionType = staticValues +provisioner.eduPersonEntitlement.targetEntityAttribute.3.translateFromStaticValues = eduPerson +provisioner.eduPersonEntitlement.targetGroupAttribute.0.name = entitlement_string +provisioner.eduPersonEntitlement.targetGroupAttribute.0.translateExpression = ${grouperUtil.defaultIfBlank(grouperProvisioningGroup.retrieveAttributeValueString('md_entitlementValue') , grouperProvisioningGroup.name )} +provisioner.eduPersonEntitlement.targetGroupAttribute.0.translateExpressionType = translationScript +provisioner.eduPersonEntitlement.updateGroups = false +provisioner.eduPersonEntitlement.userSearchBaseDn = ou=people,dc=internet2,dc=edu + +changeLog.consumer.provisioner_incremental_eduPersonEntitlement.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer +changeLog.consumer.provisioner_incremental_eduPersonEntitlement.provisionerConfigId = eduPersonEntitlement +changeLog.consumer.provisioner_incremental_eduPersonEntitlement.publisher.class = edu.internet2.middleware.grouper.app.provisioning.ProvisioningConsumer +changeLog.consumer.provisioner_incremental_eduPersonEntitlement.publisher.debug = false +changeLog.consumer.provisioner_incremental_eduPersonEntitlement.quartzCron = 0 * * * * ? +otherJob.provisioner_full_eduPersonEntitlement.class = edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob +otherJob.provisioner_full_eduPersonEntitlement.provisionerConfigId = eduPersonEntitlement +otherJob.provisioner_full_eduPersonEntitlement.quartzCron = 0 16 4 * * ? + +provisioner.groupOfNames.class = edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync +provisioner.groupOfNames.entityAttributeValueCache0entityAttribute = ldap_dn +provisioner.groupOfNames.entityAttributeValueCache0has = true +provisioner.groupOfNames.entityAttributeValueCache0source = target +provisioner.groupOfNames.entityAttributeValueCache0type = entityAttribute +provisioner.groupOfNames.entityAttributeValueCacheHas = true +provisioner.groupOfNames.entityMatchingAttribute0name = uid +provisioner.groupOfNames.entityMatchingAttributeCount = 1 +provisioner.groupOfNames.groupAttributeValueCache0groupAttribute = ldap_dn +provisioner.groupOfNames.groupAttributeValueCache0has = true +provisioner.groupOfNames.groupAttributeValueCache0source = target +provisioner.groupOfNames.groupAttributeValueCache0type = groupAttribute +provisioner.groupOfNames.groupAttributeValueCacheHas = true +provisioner.groupOfNames.groupDnType = flat +provisioner.groupOfNames.groupMatchingAttribute0name = cn +provisioner.groupOfNames.groupMatchingAttributeCount = 1 +provisioner.groupOfNames.groupMembershipAttributeName = member +provisioner.groupOfNames.groupMembershipAttributeValue = entityAttributeValueCache0 +provisioner.groupOfNames.groupRdnAttribute = cn +provisioner.groupOfNames.groupSearchBaseDn = ou=groups,dc=internet2,dc=edu +provisioner.groupOfNames.hasTargetEntityLink = true +provisioner.groupOfNames.hasTargetGroupLink = true +provisioner.groupOfNames.ldapExternalSystemConfigId = demo +provisioner.groupOfNames.numberOfEntityAttributes = 3 +provisioner.groupOfNames.numberOfGroupAttributes = 5 +provisioner.groupOfNames.operateOnGrouperEntities = true +provisioner.groupOfNames.operateOnGrouperGroups = true +provisioner.groupOfNames.operateOnGrouperMemberships = true +provisioner.groupOfNames.provisioningType = groupAttributes +provisioner.groupOfNames.selectAllEntities = false +provisioner.groupOfNames.startWith = this is start with read only +provisioner.groupOfNames.subjectSourcesToProvision = eduLDAP +provisioner.groupOfNames.targetEntityAttribute.0.name = ldap_dn +provisioner.groupOfNames.targetEntityAttribute.1.name = uid +provisioner.groupOfNames.targetEntityAttribute.1.translateExpressionType = grouperProvisioningEntityField +provisioner.groupOfNames.targetEntityAttribute.1.translateFromGrouperProvisioningEntityField = subjectIdentifier0 +provisioner.groupOfNames.targetEntityAttribute.2.multiValued = true +provisioner.groupOfNames.targetEntityAttribute.2.name = objectClass +provisioner.groupOfNames.targetEntityAttribute.2.showAdvancedAttribute = true +provisioner.groupOfNames.targetEntityAttribute.2.showAttributeValueSettings = true +provisioner.groupOfNames.targetEntityAttribute.2.translateExpressionType = staticValues +provisioner.groupOfNames.targetEntityAttribute.2.translateFromStaticValues = eduPerson +provisioner.groupOfNames.targetGroupAttribute.0.name = ldap_dn +provisioner.groupOfNames.targetGroupAttribute.1.name = cn +provisioner.groupOfNames.targetGroupAttribute.1.translateExpressionType = grouperProvisioningGroupField +provisioner.groupOfNames.targetGroupAttribute.1.translateFromGrouperProvisioningGroupField = name +provisioner.groupOfNames.targetGroupAttribute.2.defaultValue = +provisioner.groupOfNames.targetGroupAttribute.2.multiValued = true +provisioner.groupOfNames.targetGroupAttribute.2.name = member +provisioner.groupOfNames.targetGroupAttribute.2.showAdvancedAttribute = true +provisioner.groupOfNames.targetGroupAttribute.2.showAttributeValueSettings = true +provisioner.groupOfNames.targetGroupAttribute.3.multiValued = true +provisioner.groupOfNames.targetGroupAttribute.3.name = objectClass +provisioner.groupOfNames.targetGroupAttribute.3.showAdvancedAttribute = true +provisioner.groupOfNames.targetGroupAttribute.3.showAttributeValueSettings = true +provisioner.groupOfNames.targetGroupAttribute.3.translateExpressionType = staticValues +provisioner.groupOfNames.targetGroupAttribute.3.translateFromStaticValues = top,groupOfNames +provisioner.groupOfNames.targetGroupAttribute.4.name = description +provisioner.groupOfNames.targetGroupAttribute.4.translateExpressionType = grouperProvisioningGroupField +provisioner.groupOfNames.targetGroupAttribute.4.translateFromGrouperProvisioningGroupField = description +provisioner.groupOfNames.userSearchBaseDn = ou=people,dc=internet2,dc=edu +changeLog.consumer.provisioner_incremental_groupOfNames.class = edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer +changeLog.consumer.provisioner_incremental_groupOfNames.provisionerConfigId = groupOfNames +changeLog.consumer.provisioner_incremental_groupOfNames.publisher.class = edu.internet2.middleware.grouper.app.provisioning.ProvisioningConsumer +changeLog.consumer.provisioner_incremental_groupOfNames.publisher.debug = false +changeLog.consumer.provisioner_incremental_groupOfNames.quartzCron = 0 * * * * ? +otherJob.provisioner_full_groupOfNames.class = edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob +otherJob.provisioner_full_groupOfNames.provisionerConfigId = groupOfNames +otherJob.provisioner_full_groupOfNames.quartzCron = 0 24 4 * * ? + + +otherJob.dataProviderHR.class = edu.internet2.middleware.grouper.dataField.GrouperDataProviderFullSyncJob +otherJob.dataProviderHR.dataProviderConfigId = hr_data +otherJob.dataProviderHR.quartzCron = 0 0 5 * * ? +otherJob.dataProviderHR_incremental.class = edu.internet2.middleware.grouper.dataField.GrouperDataProviderIncrementalSyncJob +otherJob.dataProviderHR_incremental.dataProviderConfigId = hr_data +otherJob.dataProviderHR_incremental.quartzCron = 35 * * * * ? diff --git a/base/container_files/grouper/conf/grouper-ui.properties b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper-ui.properties.import similarity index 100% rename from base/container_files/grouper/conf/grouper-ui.properties rename to ex101/ex101.1.1/container_files/grouper/conf_import/grouper-ui.properties.import diff --git a/ex101/ex101.1.1/container_files/grouper/conf_import/grouper.properties.import b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper.properties.import new file mode 100644 index 0000000..c0c2bde --- /dev/null +++ b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper.properties.import @@ -0,0 +1,165 @@ +grouperIncludeExclude.use = true +grouperIncludeExclude.requireGroups.use = true +reporting.file.system.path = /tmp + +grouper.ui.url = https://localhost:8443/grouper/ + +mail.smtp.server = localhost +mail.smtp.port = 1025 +mail.smtp.ssl = false +mail.smtp.starttls.enable = false +mail.smtp.from.address = grouper@internet2.edu.invalid +mail.smtp.externalSystemTestToType = emailAddress +mail.smtp.externalSystemTestToAddress = grouper@internet2.edu.invalid +mail.smtp.externalSystemTestSubject = Test of Grouper mail +mail.smtp.externalSystemTestBody = This is a test of grouper mail + +grouper.lockoutGroup.name.0 = ref:iam:global_deny +grouper.requireGroup.name.0 = ref:role:all_facstaff +grouper.membership.customComposite.uiKey.0 = customCompositeAllFacStaff +grouper.membership.customComposite.compositeType.0 = intersection +grouper.membership.customComposite.groupName.0 = ref:role:all_facstaff +grouper.membership.customComposite.uiKey.1 = customCompositeMinusFacStaff +grouper.membership.customComposite.compositeType.1 = complement +grouper.membership.customComposite.groupName.1 = ref:role:all_facstaff + +grouperPrivacyRealm.hr_employees.privacyRealmName = hr_employees +grouperPrivacyRealm.hr_employees.privacyRealmPublic = true +grouperPrivacyRealm.sis_courses.privacyRealmName = sis_courses +grouperPrivacyRealm.sis_courses.privacyRealmPublic = true +grouperPrivacyRealm.sis_programs.privacyRealmName = sis_programs +grouperPrivacyRealm.sis_programs.privacyRealmPublic = true +grouperDataField.hr_dept_abbrev.descriptionHtml = HR Department Code +grouperDataField.hr_dept_abbrev.fieldAliases = dept_code +grouperDataField.hr_dept_abbrev.fieldDataAssignableTo = individuals +grouperDataField.hr_dept_abbrev.fieldDataStorePit = false +grouperDataField.hr_dept_abbrev.fieldDataStructure = rowColumn +grouperDataField.hr_dept_abbrev.fieldDataType = string +grouperDataField.hr_dept_abbrev.fieldDataUse = informational +grouperDataField.hr_dept_abbrev.fieldMultiValued = true +grouperDataField.hr_dept_abbrev.fieldPrivacyRealm = hr_employees +grouperDataField.hr_dept_id.descriptionHtml = HR 5-digit Department ID +grouperDataField.hr_dept_id.fieldAliases = dept_id +grouperDataField.hr_dept_id.fieldDataAssignableTo = individuals +grouperDataField.hr_dept_id.fieldDataStorePit = false +grouperDataField.hr_dept_id.fieldDataStructure = rowColumn +grouperDataField.hr_dept_id.fieldDataType = string +grouperDataField.hr_dept_id.fieldDataUse = informational +grouperDataField.hr_dept_id.fieldMultiValued = true +grouperDataField.hr_dept_id.fieldPrivacyRealm = hr_employees +grouperDataField.hr_dept_name.descriptionHtml = HR Department Name +grouperDataField.hr_dept_name.fieldAliases = dept_name +grouperDataField.hr_dept_name.fieldDataAssignableTo = individuals +grouperDataField.hr_dept_name.fieldDataStorePit = false +grouperDataField.hr_dept_name.fieldDataStructure = rowColumn +grouperDataField.hr_dept_name.fieldDataType = string +grouperDataField.hr_dept_name.fieldDataUse = informational +grouperDataField.hr_dept_name.fieldMultiValued = true +grouperDataField.hr_dept_name.fieldPrivacyRealm = hr_employees +grouperDataField.hr_org_abbrev.descriptionHtml = Umbrella Org Short Code +grouperDataField.hr_org_abbrev.fieldAliases = org_code +grouperDataField.hr_org_abbrev.fieldDataAssignableTo = individuals +grouperDataField.hr_org_abbrev.fieldDataStorePit = false +grouperDataField.hr_org_abbrev.fieldDataStructure = rowColumn +grouperDataField.hr_org_abbrev.fieldDataType = string +grouperDataField.hr_org_abbrev.fieldDataUse = informational +grouperDataField.hr_org_abbrev.fieldMultiValued = true +grouperDataField.hr_org_abbrev.fieldPrivacyRealm = hr_employees +grouperDataField.hr_org_name.descriptionHtml = Umbrella Org Name +grouperDataField.hr_org_name.fieldAliases = org_name +grouperDataField.hr_org_name.fieldDataAssignableTo = individuals +grouperDataField.hr_org_name.fieldDataStorePit = false +grouperDataField.hr_org_name.fieldDataStructure = rowColumn +grouperDataField.hr_org_name.fieldDataType = string +grouperDataField.hr_org_name.fieldDataUse = informational +grouperDataField.hr_org_name.fieldMultiValued = true +grouperDataField.hr_org_name.fieldPrivacyRealm = hr_employees +grouperDataField.hr_parent_dept_abbrev.descriptionHtml = HR Parent Dept Code +grouperDataField.hr_parent_dept_abbrev.fieldAliases = parent_dept_code +grouperDataField.hr_parent_dept_abbrev.fieldDataAssignableTo = individuals +grouperDataField.hr_parent_dept_abbrev.fieldDataStorePit = false +grouperDataField.hr_parent_dept_abbrev.fieldDataStructure = rowColumn +grouperDataField.hr_parent_dept_abbrev.fieldDataType = string +grouperDataField.hr_parent_dept_abbrev.fieldDataUse = informational +grouperDataField.hr_parent_dept_abbrev.fieldMultiValued = true +grouperDataField.hr_parent_dept_abbrev.fieldPrivacyRealm = hr_employees +grouperDataField.hr_parent_dept_id.descriptionHtml = HR 5-digit Parent Dept Id +grouperDataField.hr_parent_dept_id.fieldAliases = parent_dept_id +grouperDataField.hr_parent_dept_id.fieldDataAssignableTo = individuals +grouperDataField.hr_parent_dept_id.fieldDataStorePit = false +grouperDataField.hr_parent_dept_id.fieldDataStructure = rowColumn +grouperDataField.hr_parent_dept_id.fieldDataType = string +grouperDataField.hr_parent_dept_id.fieldDataUse = informational +grouperDataField.hr_parent_dept_id.fieldMultiValued = true +grouperDataField.hr_parent_dept_id.fieldPrivacyRealm = hr_employees +grouperDataField.hr_position_id.descriptionHtml = The Position ID +grouperDataField.hr_position_id.fieldAliases = position_id +grouperDataField.hr_position_id.fieldDataAssignableTo = individuals +grouperDataField.hr_position_id.fieldDataStorePit = false +grouperDataField.hr_position_id.fieldDataStructure = rowColumn +grouperDataField.hr_position_id.fieldDataType = string +grouperDataField.hr_position_id.fieldDataUse = informational +grouperDataField.hr_position_id.fieldMultiValued = true +grouperDataField.hr_position_id.fieldPrivacyRealm = hr_employees +grouperDataField.hr_role.descriptionHtml = HR Role (staff, faculty, etc)) +grouperDataField.hr_role.fieldAliases = role +grouperDataField.hr_role.fieldDataAssignableTo = individuals +grouperDataField.hr_role.fieldDataStorePit = false +grouperDataField.hr_role.fieldDataStructure = rowColumn +grouperDataField.hr_role.fieldDataType = string +grouperDataField.hr_role.fieldDataUse = informational +grouperDataField.hr_role.fieldMultiValued = true +grouperDataField.hr_role.fieldPrivacyRealm = hr_employees +grouperDataProvider.hr_data.name = hr_data +grouperDataProvider.sis_data.name = sis_data +grouperDataProviderQuery.hr_person_positions.providerConfigId = hr_data +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldAttribute = position_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldConfigId = hr_position_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.0.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldAttribute = role +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldConfigId = hr_role +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.1.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldAttribute = dept_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldConfigId = hr_dept_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.2.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldAttribute = dept_name +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldConfigId = hr_dept_name +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.3.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldAttribute = parent_dept_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldConfigId = hr_parent_dept_id +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.4.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldAttribute = parent_dept_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldConfigId = hr_parent_dept_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.5.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldAttribute = org_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldConfigId = hr_org_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.6.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldAttribute = org_name +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldConfigId = hr_org_name +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.7.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldAttribute = dept_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldConfigId = hr_dept_abbrev +grouperDataProviderQuery.hr_person_positions.providerQueryDataField.8.providerDataFieldMappingType = attribute +grouperDataProviderQuery.hr_person_positions.providerQueryDataStructure = row +grouperDataProviderQuery.hr_person_positions.providerQueryNumberOfDataFields = 9 +grouperDataProviderQuery.hr_person_positions.providerQueryRowConfigId = hr_positions +grouperDataProviderQuery.hr_person_positions.providerQuerySqlConfigId = hr +grouperDataProviderQuery.hr_person_positions.providerQuerySqlQuery = select J.person_id, P.position_id, P.role, D.dept_id, D.abbrev as dept_abbrev, D.name as dept_name, PD.dept_id as parent_dept_id, PD.abbrev as parent_dept_abbrev, Org.abbrev as org_abbrev, OrgDept.name as org_name from hr_jobs J join hr_positions P on J.position_id = P.position_id join hr_depts D on P.dept_id = D.dept_id left join hr_depts PD on D.parent_dept_id = PD.dept_id left join hr_orgs Org on D.dept_id between Org.min_dept_id and Org.max_dept_id left join hr_depts OrgDept on Org.dept_id = OrgDept.dept_id +grouperDataProviderQuery.hr_person_positions.providerQuerySubjectIdAttribute = person_id +grouperDataProviderQuery.hr_person_positions.providerQuerySubjectIdType = subjectId +grouperDataProviderQuery.hr_person_positions.providerQuerySubjectSourceId = eduLDAP +grouperDataProviderQuery.hr_person_positions.providerQueryType = sql +grouperDataRow.hr_positions.descriptionHtml = HR job assignments +grouperDataRow.hr_positions.rowAliases = hr_positions +grouperDataRow.hr_positions.rowDataField.0.colDataFieldConfigId = hr_position_id +grouperDataRow.hr_positions.rowDataField.0.rowKeyField = true +grouperDataRow.hr_positions.rowDataField.1.colDataFieldConfigId = hr_role +grouperDataRow.hr_positions.rowDataField.2.colDataFieldConfigId = hr_dept_id +grouperDataRow.hr_positions.rowDataField.3.colDataFieldConfigId = hr_dept_name +grouperDataRow.hr_positions.rowDataField.4.colDataFieldConfigId = hr_parent_dept_id +grouperDataRow.hr_positions.rowDataField.5.colDataFieldConfigId = hr_parent_dept_abbrev +grouperDataRow.hr_positions.rowDataField.6.colDataFieldConfigId = hr_dept_abbrev +grouperDataRow.hr_positions.rowDataField.7.colDataFieldConfigId = hr_org_abbrev +grouperDataRow.hr_positions.rowDataField.8.colDataFieldConfigId = hr_org_name +grouperDataRow.hr_positions.rowNumberOfDataFields = 9 +grouperDataRow.hr_positions.rowPrivacyRealm = hr_employees diff --git a/base/container_files/grouper/conf/grouperText/grouper.text.en.us.properties b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper.text.en.us.properties.import similarity index 54% rename from base/container_files/grouper/conf/grouperText/grouper.text.en.us.properties rename to ex101/ex101.1.1/container_files/grouper/conf_import/grouper.text.en.us.properties.import index 921ce1e..a4a43c6 100644 --- a/base/container_files/grouper/conf/grouperText/grouper.text.en.us.properties +++ b/ex101/ex101.1.1/container_files/grouper/conf_import/grouper.text.en.us.properties.import @@ -2,3 +2,6 @@ customCompositeAllFacStaff = Entities who are current faculty or staff customCompositeMinusFacStaff = Entities who are not faculty or staff customCompositeMinusActive = Entities who are not active at the institution + +md_entitlementValue_eduPersonEntitlement_label = Entitlement String +md_entitlementValue_eduPersonEntitlement_description = Static string value to use as the entitlement. Will use the group name if not set diff --git a/base/container_files/grouper/conf/subject.properties b/ex101/ex101.1.1/container_files/grouper/conf_import/subject.properties.import similarity index 100% rename from base/container_files/grouper/conf/subject.properties rename to ex101/ex101.1.1/container_files/grouper/conf_import/subject.properties.import