diff --git a/TODO.md b/TODO.md index caf63b9..99355f6 100644 --- a/TODO.md +++ b/TODO.md @@ -2,8 +2,9 @@ TODO ===== -20220X -- look for both 202205-POST (./gte) and 202205 (Jenkinsfile etc) when changing image versions +202209 +------- +- EduPersonEntitlement full sync is not logging 202205 ------- diff --git a/base/Dockerfile b/base/Dockerfile index 7cbaa48..5c56f61 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -2,7 +2,7 @@ FROM tier/shib-idp:3.4.7_20200702 as idp # latest 3.x is tier/shib-idp:3.4.7_20200702 # Grouper version for the entire GTE -FROM i2incommon/grouper:2.6.16 +FROM i2incommon/grouper:2.6.15.1 # Disable docker HEALTHCHECK inherited from tier/shib-sp HEALTHCHECK NONE diff --git a/ex101/ex101.1.1/container_files/seed-data/bootstrap.gsh b/ex101/ex101.1.1/container_files/seed-data/bootstrap.gsh index 4ff86e0..695e267 100644 --- a/ex101/ex101.1.1/container_files/seed-data/bootstrap.gsh +++ b/ex101/ex101.1.1/container_files/seed-data/bootstrap.gsh @@ -26,6 +26,25 @@ static void assignObjectTypeForStem(Stem s, String type, String owner=null, Stri save() } +// MySQL sometimes fails due to deadlock. Try a few times before aborting +// (java.sql.BatchUpdateException: Deadlock found when trying to get lock; try restarting transaction) +static boolean runJobUntilSucceeds(GrouperSession gs, Group group, String jobName, int panic = 3) { + boolean ranOK = false + while (!ranOK && panic-- > 0) { + try { + GrouperLoader.runJobOnceForGroup(gs, group) + ranOK = true + } catch (Exception e) { + println "GSH ERROR in ${jobName} (will try ${panic} more times): ${e.message}" + Thread.sleep(5000) + } + } + + if (!ranOK) { + throw new RuntimeException("Failed to run job ${jobName} after ${panic} tries") + } +} + // GDG structure ["basis", "ref", "app", "org", "test"].each { new StemSave(gs).assignName(it).save() @@ -95,7 +114,10 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''SELECT DISTINCT //group.setAttribute(GrouperLoader.GROUPER_LOADER_PRIORITY, priority) GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:hr:employeeDeptLoader") + + + Stem stem = StemFinder.findByName(gs, "basis:hr:employee:dept", true) assignObjectTypeForStem(stem, "basis", "HRIS", "Employees grouped by department and role") @@ -124,7 +146,8 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''SELECT DISTINCT GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:sis:courseLoader") + Stem stem = StemFinder.findByName(gs, "basis:sis:course", true) assignObjectTypeForStem(stem, "basis", "SIS", "Students and instructor groups for each course") @@ -149,7 +172,8 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''select distinct GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:sis:studentCareerLoader") + Stem stem = StemFinder.findByName(gs, "basis:sis:career", true) assignObjectTypeForStem(stem, "basis", "SIS", "Students grouped by academic program and expected graduation year") @@ -174,7 +198,8 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''select distinct GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:sis:studentCareerByGradYearLoader") + Stem stem = StemFinder.findByName(gs, "basis:sis:exp_grad_year", true) assignObjectTypeForStem(stem, "basis", "SIS", "Students grouped by expected graduation year") @@ -200,7 +225,8 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''SELECT concat('b GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:sis:overallProgStatusLoader") + Stem stem = StemFinder.findByName(gs, "basis:sis:prog_status:all", true) assignObjectTypeForStem(stem, "basis", "SIS", "Students grouped by program status, regardless of year") @@ -227,7 +253,8 @@ group.setAttribute(GrouperLoader.GROUPER_LOADER_GROUP_QUERY, '''select distinct GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:sis:yearAndProgStatusLoader") + Stem stem = StemFinder.findByName(gs, "basis:sis:prog_status:year", true) assignObjectTypeForStem(stem, "basis", "SIS", "Students grouped by program status and expected grad year") @@ -255,7 +282,8 @@ FROM grouper_groups WHERE name LIKE 'basis:hr:employee:dept:%' ''') GrouperLoaderType.validateAndScheduleSqlLoad(group, null, false) -GrouperLoader.runJobOnceForGroup(gs, group) +runJobUntilSucceeds(gs, group, "etc:loader:ref:refEmployeeRoleLoader") + Stem stem = StemFinder.findByName(gs, "ref:role:emp", true) assignObjectTypeForStem(stem, "ref", "HR, IAM", "All employees by role") @@ -282,109 +310,108 @@ 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.canFullSync").value('''true''').store() config.propertyName("provisioner.eduPersonAffiliation.class").value('''edu.internet2.middleware.grouper.app.ldapProvisioning.LdapSync''').store() -config.propertyName("provisioner.eduPersonAffiliation.debugLog").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.deleteMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.deleteMembershipsIfGrouperDeleted").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.deleteMembershipsIfNotExistInGrouper").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('''extension''').store() config.propertyName("provisioner.eduPersonAffiliation.hasTargetEntityLink").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.insertMemberships").value('''true''').store() config.propertyName("provisioner.eduPersonAffiliation.ldapExternalSystemConfigId").value('''demo''').store() -config.propertyName("provisioner.eduPersonAffiliation.logAllObjectsVerbose").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.numberOfEntityAttributes").value('''3''').store() +config.propertyName("provisioner.eduPersonAffiliation.numberOfEntityAttributes").value('''4''').store() config.propertyName("provisioner.eduPersonAffiliation.operateOnGrouperEntities").value('''true''').store() config.propertyName("provisioner.eduPersonAffiliation.operateOnGrouperMemberships").value('''true''').store() config.propertyName("provisioner.eduPersonAffiliation.provisioningType").value('''entityAttributes''').store() -config.propertyName("provisioner.eduPersonAffiliation.selectEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.selectMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.showAdvanced").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.showProvisioningDiagnostics").value('''true''').store() +config.propertyName("provisioner.eduPersonAffiliation.selectAllEntities").value('''true''').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.fieldName").value('''name''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.isFieldElseAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.select").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.translateExpression").value('''${'uid=' + grouperProvisioningEntity.retrieveAttributeValueString('subjectIdentifier0') + ',ou=people,dc=internet2,dc=edu'}''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.translateExpressionType").value('''translationScript''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.translateToMemberSyncField").value('''memberToId2''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.0.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.matchingId").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.name").value('''uid''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.searchAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.select").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.translateFromGrouperProvisioningEntityField").value('''attribute__subjectIdentifier0''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.1.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.membershipAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.multiValued").value('''true''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.name").value('''eduPersonAffiliation''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.translateFromGroupSyncField").value('''groupExtension''').store() -config.propertyName("provisioner.eduPersonAffiliation.targetEntityAttribute.2.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonAffiliation.userSearchAllFilter").value('''(objectClass=eduPerson)''').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.userSearchBaseDn").value('''ou=people,dc=internet2,dc=edu''').store() config.propertyName("otherJob.ePA_full_sync.class").value('''edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob''').store() config.propertyName("otherJob.ePA_full_sync.provisionerConfigId").value('''eduPersonAffiliation''').store() config.propertyName("otherJob.ePA_full_sync.quartzCron").value('''0 0 4 * * ?''').store() - +//GrouperLoader.scheduleJobs() /* 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.deleteMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.deleteMembershipsIfNotExistInGrouper").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.insertMemberships").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.numberOfEntityAttributes").value('''3''').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.selectEntities").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.selectMemberships").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.showAdvanced").value('''true''').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.fieldName").value('''name''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.isFieldElseAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.select").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.translateExpression").value('''${'uid=' + grouperProvisioningEntity.retrieveAttributeValueString('subjectIdentifier0') + ',ou=people,dc=internet2,dc=edu'}''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.translateExpressionType").value('''translationScript''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.0.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.matchingId").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.name").value('''uid''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.searchAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.select").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.translateFromGrouperProvisioningEntityField").value('''attribute__subjectIdentifier0''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.1.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.membershipAttribute").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.multiValued").value('''true''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.name").value('''eduPersonEntitlement''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.translateFromGroupSyncField").value('''groupFromId2''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetEntityAttribute.2.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.name").value('''entitlement''').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.targetGroupAttribute.0.translateGrouperToGroupSyncField").value('''groupFromId2''').store() -config.propertyName("provisioner.eduPersonEntitlement.targetGroupAttribute.0.valueType").value('''string''').store() -config.propertyName("provisioner.eduPersonEntitlement.userSearchAllFilter").value('''(uid=*)''').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() @@ -396,96 +423,74 @@ textConfig.propertyName("md_entitlementValue_eduPersonEntitlement_description"). /* groupOfNames provisioner -- exercise 40x */ -config.propertyName("provisioner.groupOfNames.canFullSync").value('''true''').store() +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.debugLog").value('''true''').store() -config.propertyName("provisioner.groupOfNames.deleteGroups").value('''true''').store() -config.propertyName("provisioner.groupOfNames.deleteGroupsIfGrouperDeleted").value('''true''').store() -config.propertyName("provisioner.groupOfNames.deleteGroupsIfNotExistInGrouper").value('''false''').store() -config.propertyName("provisioner.groupOfNames.deleteMemberships").value('''true''').store() -config.propertyName("provisioner.groupOfNames.deleteMembershipsIfNotExistInGrouper").value('''true''').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.groupSearchAllFilter").value('''objectClass=groupOfNames''').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.groupSearchFilter").value('''(&(objectClass=groupOfNames)(cn=${targetGroup.retrieveAttributeValue('cn')}))''').store() config.propertyName("provisioner.groupOfNames.hasTargetEntityLink").value('''true''').store() config.propertyName("provisioner.groupOfNames.hasTargetGroupLink").value('''true''').store() -config.propertyName("provisioner.groupOfNames.insertGroups").value('''true''').store() -config.propertyName("provisioner.groupOfNames.insertMemberships").value('''true''').store() config.propertyName("provisioner.groupOfNames.ldapExternalSystemConfigId").value('''demo''').store() -config.propertyName("provisioner.groupOfNames.numberOfEntityAttributes").value('''2''').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.selectEntities").value('''true''').store() -config.propertyName("provisioner.groupOfNames.selectGroups").value('''true''').store() -config.propertyName("provisioner.groupOfNames.selectMemberships").value('''true''').store() -config.propertyName("provisioner.groupOfNames.showAdvanced").value('''true''').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.fieldName").value('''name''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.0.isFieldElseAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.0.select").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.0.translateToMemberSyncField").value('''memberToId2''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.0.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.matchingId").value('''true''').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.searchAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.select").value('''true''').store() config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.translateExpressionType").value('''grouperProvisioningEntityField''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.translateFromGrouperProvisioningEntityField").value('''attribute__subjectIdentifier0''').store() -config.propertyName("provisioner.groupOfNames.targetEntityAttribute.1.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.fieldName").value('''name''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.insert").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.isFieldElseAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.select").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.translateExpressionType").value('''grouperProvisioningGroupField''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.translateFromGrouperProvisioningGroupField").value('''name''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.translateToGroupSyncField").value('''groupToId2''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.update").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.0.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.insert").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.matchingId").value('''true''').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.searchAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.1.select").value('''true''').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.1.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.insert").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.isFieldElseAttribute").value('''false''').store() +config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.defaultValue").value('''<emptyString>''').store() config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.multiValued").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.name").value('''objectClass''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.select").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.translateExpression").value('''${grouperUtil.toSet('top', 'groupOfNames')}''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.translateExpressionType").value('''translationScript''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.2.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.insert").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.name").value('''description''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.select").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.translateExpressionType").value('''grouperProvisioningGroupField''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.translateFromGrouperProvisioningGroupField").value('''attribute__description''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.update").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.3.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.defaultValue").value('''cn=root,dc=internet2,dc=edu''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.isFieldElseAttribute").value('''false''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.membershipAttribute").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.multiValued").value('''true''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.name").value('''member''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.translateFromMemberSyncField").value('''memberToId2''').store() -config.propertyName("provisioner.groupOfNames.targetGroupAttribute.4.valueType").value('''string''').store() -config.propertyName("provisioner.groupOfNames.updateGroups").value('''true''').store() -config.propertyName("provisioner.groupOfNames.userSearchAllFilter").value('''(&(objectClass=person)(uid=*))''').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("provisioner.groupOfNames.userSearchFilter").value('''(&(objectClass=person)(uid=${targetEntity.retrieveAttributeValue('uid')}))''').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() /* TODO