@@ -139,28 +139,33 @@ func (m *MetricsCollectorAzureRmIam) collectRoleAssignments(ctx context.Context,
139139
140140 infoMetric := prometheusCommon .NewMetricsList ()
141141
142- principalIdList := [ ]string {}
142+ principalIdMap := map [ string ]string {}
143143
144144 for list .NotDone () {
145145 val := list .Value ()
146+ principalId := * val .Properties .PrincipalID
146147
147148 infoLabels := prometheus.Labels {
148149 "subscriptionID" : * subscription .SubscriptionID ,
149150 "roleAssignmentID" : * val .ID ,
150151 "roleDefinitionID" : extractRoleDefinitionIdFromAzureId (* val .Properties .RoleDefinitionID ),
151152 "resourceID" : * val .Properties .Scope ,
152153 "resourceGroup" : extractResourceGroupFromAzureId (* val .Properties .Scope ),
153- "principalID" : * val . Properties . PrincipalID ,
154+ "principalID" : principalId ,
154155 }
155156 infoMetric .AddInfo (infoLabels )
156157
157- principalIdList = append ( principalIdList , * val . Properties . PrincipalID )
158+ principalIdMap [ principalId ] = principalId
158159
159160 if list .NextWithContext (ctx ) != nil {
160161 break
161162 }
162163 }
163164
165+ principalIdList := []string {}
166+ for _ , val := range principalIdMap {
167+ principalIdList = append (principalIdList , val )
168+ }
164169 m .collectPrincipals (ctx , callback , subscription , principalIdList )
165170
166171 callback <- func () {
@@ -235,7 +240,6 @@ func (m *MetricsCollectorAzureRmIam) collectPrincipals(ctx context.Context, call
235240 }
236241 }
237242
238-
239243 callback <- func () {
240244 infoMetric .GaugeSet (m .prometheus .principal )
241245 }
0 commit comments