func()

in providers/keycloak/realm.go [103:180]


func (g RealmGenerator) createLdapMapperResources(realmID, providerName string, mappers *[]interface{}) []terraformutils.Resource {
	var resources []terraformutils.Resource
	var providerID string
	var mapperID string
	var mapperName string
	var mapperType string
	var name string
	mapperNames := make(map[string]int)
	for _, mapper := range *mappers {
		switch reflect.TypeOf(mapper).String() {
		case "*keycloak.LdapFullNameMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapFullNameMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapFullNameMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapFullNameMapper).Name
			mapperType = "full_name"
		case "*keycloak.LdapGroupMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapGroupMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapGroupMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapGroupMapper).Name
			mapperType = "group"
		case "*keycloak.LdapRoleMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapRoleMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapRoleMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapRoleMapper).Name
			mapperType = "role"
		case "*keycloak.LdapHardcodedGroupMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedGroupMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedGroupMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedGroupMapper).Name
			mapperType = "hardcoded_group"
		case "*keycloak.LdapHardcodedRoleMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedRoleMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedRoleMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapHardcodedRoleMapper).Name
			mapperType = "hardcoded_role"
		case "*keycloak.LdapMsadLdsUserAccountControlMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadLdsUserAccountControlMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadLdsUserAccountControlMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadLdsUserAccountControlMapper).Name
			mapperType = "msad_lds_user_account_control"
		case "*keycloak.LdapMsadUserAccountControlMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadUserAccountControlMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadUserAccountControlMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapMsadUserAccountControlMapper).Name
			mapperType = "msad_user_account_control"
		case "*keycloak.LdapUserAttributeMapper":
			providerID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapUserAttributeMapper).LdapUserFederationId
			mapperID = reflect.ValueOf(mapper).Interface().(*keycloak.LdapUserAttributeMapper).Id
			mapperName = reflect.ValueOf(mapper).Interface().(*keycloak.LdapUserAttributeMapper).Name
			mapperType = "user_attribute"
		default:
			continue
		}
		name = "ldap_" + mapperType + "_mapper_" + normalizeResourceName(realmID) + "_" + normalizeResourceName(providerName) + "_" + normalizeResourceName(mapperName)
		for k, v := range mapperNames {
			if k == name {
				v++
				name += strconv.Itoa(v)
			}
		}
		if name == "ldap_"+mapperType+"_mapper_"+normalizeResourceName(realmID)+"_"+normalizeResourceName(providerName)+"_"+normalizeResourceName(mapperName) {
			mapperNames[name] = 1
		}
		resources = append(resources, terraformutils.NewResource(
			mapperID,
			name,
			"keycloak_ldap_"+mapperType+"_mapper",
			"keycloak",
			map[string]string{
				"realm_id":    realmID,
				"provider_id": providerID,
			},
			[]string{},
			map[string]interface{}{},
		))
	}
	return resources
}