@@ -2,7 +2,6 @@ package main
22
33import (
44 "errors"
5- "fmt"
65 "io"
76 "log/slog"
87 "net/http"
@@ -198,6 +197,33 @@ func (m *MetricsCollectorAzureRmQuota) collectQuotaUsage(subscription *armsubscr
198197 quotaLimitMetric := m .Collector .GetMetricList ("quotaLimit" )
199198 quotaUsageMetric := m .Collector .GetMetricList ("quotaUsage" )
200199
200+ if provider .ApiVersion == "" || strings .EqualFold (provider .ApiVersion , "auto" ) {
201+ provider .ApiVersion = ""
202+
203+ // lookup api version
204+ providerInfo , err := AzureClient .GetResourceProvider (m .Context (), * subscription .SubscriptionID , provider .Provider )
205+ if err != nil {
206+ logger .Error ("failed to lookup Azure resource provider" , slog .Any ("error" , err ))
207+ panic (err )
208+ }
209+
210+ if providerInfo != nil {
211+ for _ , providerResource := range providerInfo .ResourceTypes {
212+ if to .String (providerResource .DefaultAPIVersion ) != "" {
213+ provider .ApiVersion = to .String (providerResource .DefaultAPIVersion )
214+ break
215+ }
216+ }
217+ }
218+
219+ if provider .ApiVersion == "" {
220+ logger .Error ("failed to lookup Azure resource provider apiVersion" )
221+ panic ("failed to lookup Azure resource provider apiVersion" )
222+ }
223+ }
224+
225+ logger = logger .With (slog .String ("apiVersion" , provider .ApiVersion ))
226+
201227 options := AzureClient .NewArmClientOptions ()
202228 ep := cloud .AzurePublic .Services [cloud .ResourceManager ].Endpoint
203229 if c , ok := options .Cloud .Services [cloud .ResourceManager ]; ok {
@@ -215,8 +241,8 @@ func (m *MetricsCollectorAzureRmQuota) collectQuotaUsage(subscription *armsubscr
215241 urlPath = strings .ReplaceAll (urlPath , "{provider}" , url .PathEscape (provider .Provider ))
216242 urlPath = strings .ReplaceAll (urlPath , "{location}" , url .PathEscape (location ))
217243
244+ logger .Info ("fetch resource usage and quota" )
218245 requestUrl := runtime .JoinPaths (ep , urlPath )
219- fmt .Println (requestUrl )
220246 for {
221247 req , err := runtime .NewRequest (m .Context (), http .MethodGet , requestUrl )
222248 if err != nil {
0 commit comments