github.com/GoogleCloudPlatform/terraformer@v0.8.18/providers/keycloak/group.go (about) 1 // Copyright 2018 The Terraformer Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package keycloak 16 17 import ( 18 "strings" 19 20 "github.com/GoogleCloudPlatform/terraformer/terraformutils" 21 "github.com/mrparkers/terraform-provider-keycloak/keycloak" 22 ) 23 24 func (g RealmGenerator) createGroupResources(groups []*keycloak.Group) []terraformutils.Resource { 25 var resources []terraformutils.Resource 26 for _, group := range groups { 27 resources = append(resources, terraformutils.NewResource( 28 group.Id, 29 "group_"+normalizeResourceName(group.RealmId)+"_"+normalizeResourceName(group.Name), 30 "keycloak_group", 31 "keycloak", 32 map[string]string{ 33 "realm_id": group.RealmId, 34 }, 35 []string{}, 36 map[string]interface{}{}, 37 )) 38 } 39 return resources 40 } 41 42 func (g RealmGenerator) createDefaultGroupResource(realmID string) terraformutils.Resource { 43 return terraformutils.NewResource( 44 realmID+"/default-groups", 45 "default_groups_"+normalizeResourceName(realmID), 46 "keycloak_default_groups", 47 "keycloak", 48 map[string]string{ 49 "realm_id": realmID, 50 }, 51 []string{}, 52 map[string]interface{}{}, 53 ) 54 } 55 56 func (g RealmGenerator) createGroupMembershipsResource(realmID, groupID, groupName string, members []string) terraformutils.Resource { 57 return terraformutils.NewResource( 58 realmID+"/group-memberships/"+groupID, 59 "group_memberships_"+normalizeResourceName(realmID)+"_"+normalizeResourceName(groupName), 60 "keycloak_group_memberships", 61 "keycloak", 62 map[string]string{ 63 "realm_id": realmID, 64 "group_id": groupID, 65 "members": strings.Join(members, ","), 66 }, 67 []string{}, 68 map[string]interface{}{}, 69 ) 70 } 71 72 func (g RealmGenerator) createGroupRolesResource(realmID, groupID, groupName string, roles []string) terraformutils.Resource { 73 return terraformutils.NewResource( 74 realmID+"/"+groupID, 75 "group_roles_"+normalizeResourceName(realmID)+"_"+normalizeResourceName(groupName), 76 "keycloak_group_roles", 77 "keycloak", 78 map[string]string{ 79 "realm_id": realmID, 80 "group_id": groupID, 81 "roles_ids": strings.Join(roles, ","), 82 }, 83 []string{}, 84 map[string]interface{}{}, 85 ) 86 } 87 88 func (g *RealmGenerator) flattenGroups(groups []*keycloak.Group, realmID string) []*keycloak.Group { 89 var flattenedGroups []*keycloak.Group 90 for _, group := range groups { 91 if realmID != "" { 92 group.RealmId = realmID 93 } 94 flattenedGroups = append(flattenedGroups, group) 95 if len(group.SubGroups) > 0 { 96 subGroups := g.flattenGroups(group.SubGroups, group.RealmId) 97 flattenedGroups = append(flattenedGroups, subGroups...) 98 } 99 } 100 return flattenedGroups 101 }