|
6 | 6 | "testing" |
7 | 7 |
|
8 | 8 | "github.com/hashicorp/terraform-provider-google-beta/google-beta/acctest" |
| 9 | + "github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgiamresource" |
9 | 10 | cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1" |
10 | 11 | ) |
11 | 12 |
|
@@ -49,10 +50,10 @@ func BootstrapAllPSARoles(t *testing.T, prefix string, agentNames, roles []strin |
49 | 50 | }) |
50 | 51 | } |
51 | 52 |
|
52 | | - mergedBindings := MergeBindings(append(policy.Bindings, newBindings...)) |
| 53 | + mergedBindings := tpgiamresource.MergeBindings(append(policy.Bindings, newBindings...)) |
53 | 54 |
|
54 | | - if !compareBindings(policy.Bindings, mergedBindings) { |
55 | | - addedBindings := missingBindings(policy.Bindings, mergedBindings) |
| 55 | + if !tpgiamresource.CompareBindings(policy.Bindings, mergedBindings) { |
| 56 | + addedBindings := tpgiamresource.MissingBindings(policy.Bindings, mergedBindings) |
56 | 57 | for _, missingBinding := range addedBindings { |
57 | 58 | log.Printf("[DEBUG] Adding binding: %+v", missingBinding) |
58 | 59 | } |
@@ -92,61 +93,10 @@ func BootstrapPSARole(t *testing.T, prefix, agentName, role string) bool { |
92 | 93 | return BootstrapPSARoles(t, prefix, agentName, []string{role}) |
93 | 94 | } |
94 | 95 |
|
95 | | -// Returns a map representing iam bindings that are in the first map but not the second. |
96 | | -func missingBindingsMap(aMap, bMap map[iamBindingKey]map[string]struct{}) map[iamBindingKey]map[string]struct{} { |
97 | | - results := make(map[iamBindingKey]map[string]struct{}) |
98 | | - for key, aMembers := range aMap { |
99 | | - if bMembers, ok := bMap[key]; ok { |
100 | | - // The key is in both maps. |
101 | | - resultMembers := make(map[string]struct{}) |
102 | | - |
103 | | - for aMember := range aMembers { |
104 | | - if _, ok := bMembers[aMember]; !ok { |
105 | | - // The member is in a but not in b. |
106 | | - resultMembers[aMember] = struct{}{} |
107 | | - } |
108 | | - } |
109 | | - for bMember := range bMembers { |
110 | | - if _, ok := aMembers[bMember]; !ok { |
111 | | - // The member is in b but not in a. |
112 | | - resultMembers[bMember] = struct{}{} |
113 | | - } |
114 | | - } |
115 | | - |
116 | | - if len(resultMembers) > 0 { |
117 | | - results[key] = resultMembers |
118 | | - } |
119 | | - } else { |
120 | | - // The key is in map a but not map b. |
121 | | - results[key] = aMembers |
122 | | - } |
123 | | - } |
124 | | - |
125 | | - for key, bMembers := range bMap { |
126 | | - if _, ok := aMap[key]; !ok { |
127 | | - // The key is in map b but not map a. |
128 | | - results[key] = bMembers |
129 | | - } |
130 | | - } |
131 | | - |
132 | | - return results |
133 | | -} |
134 | | - |
135 | 96 | // Returns the bindings that are in the first set of bindings but not the second. |
| 97 | +// |
| 98 | +// Deprecated: For backward compatibility missingBindings is still working, |
| 99 | +// but all new code should use MissingBindings in the tpgiamresource package instead. |
136 | 100 | func missingBindings(a, b []*cloudresourcemanager.Binding) []*cloudresourcemanager.Binding { |
137 | | - aMap := createIamBindingsMap(a) |
138 | | - bMap := createIamBindingsMap(b) |
139 | | - |
140 | | - var results []*cloudresourcemanager.Binding |
141 | | - for key, membersSet := range missingBindingsMap(aMap, bMap) { |
142 | | - members := make([]string, 0, len(membersSet)) |
143 | | - for member := range membersSet { |
144 | | - members = append(members, member) |
145 | | - } |
146 | | - results = append(results, &cloudresourcemanager.Binding{ |
147 | | - Role: key.Role, |
148 | | - Members: members, |
149 | | - }) |
150 | | - } |
151 | | - return results |
| 101 | + return tpgiamresource.MissingBindings(a, b) |
152 | 102 | } |
0 commit comments