Skip to content

Commit 47f0df5

Browse files
committed
implement azureclient from go-common
Signed-off-by: Markus Blaschke <mblaschke82@gmail.com>
1 parent 7f4240b commit 47f0df5

File tree

4 files changed

+50
-52
lines changed

4 files changed

+50
-52
lines changed

go.mod

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@ module github.com/webdevops/azure-resourcegraph-exporter
33
go 1.18
44

55
require (
6-
github.com/Azure/azure-sdk-for-go v63.3.0+incompatible
7-
github.com/Azure/go-autorest/autorest v0.11.26
8-
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11
6+
github.com/Azure/azure-sdk-for-go v64.1.0+incompatible
7+
github.com/Azure/go-autorest/autorest/to v0.4.0
98
github.com/google/uuid v1.3.0
109
github.com/jessevdk/go-flags v1.5.0
1110
github.com/patrickmn/go-cache v2.1.0+incompatible
12-
github.com/prometheus/client_golang v1.12.1
11+
github.com/prometheus/client_golang v1.12.2
1312
github.com/sirupsen/logrus v1.8.1
14-
github.com/webdevops/go-common v0.0.0-20220410190409-7b8e84fab0bf
13+
github.com/webdevops/go-common v0.0.0-20220522185207-16fd48b07ed7
1514
)
1615

1716
require (
1817
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
19-
github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect
18+
github.com/Azure/go-autorest/autorest v0.11.27 // indirect
19+
github.com/Azure/go-autorest/autorest/adal v0.9.20 // indirect
20+
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect
2021
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect
2122
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
22-
github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
2323
github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
2424
github.com/Azure/go-autorest/logger v0.2.1 // indirect
2525
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
@@ -33,8 +33,9 @@ require (
3333
github.com/prometheus/client_model v0.2.0 // indirect
3434
github.com/prometheus/common v0.34.0 // indirect
3535
github.com/prometheus/procfs v0.7.3 // indirect
36-
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
37-
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
36+
github.com/remeh/sizedwaitgroup v1.0.0 // indirect
37+
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 // indirect
38+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
3839
google.golang.org/protobuf v1.28.0 // indirect
3940
gopkg.in/yaml.v2 v2.4.0 // indirect
4041
)

go.sum

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
3131
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
3232
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
3333
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
34-
github.com/Azure/azure-sdk-for-go v63.3.0+incompatible h1:INepVujzUrmArRZjDLHbtER+FkvCoEwyRCXGqOlmDII=
35-
github.com/Azure/azure-sdk-for-go v63.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
34+
github.com/Azure/azure-sdk-for-go v64.1.0+incompatible h1:FpsZmWR9FfEr9hP6K9S7RP0EkSFgGd6P1F2scHtbhnU=
35+
github.com/Azure/azure-sdk-for-go v64.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
3636
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
3737
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
3838
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
39-
github.com/Azure/go-autorest/autorest v0.11.26 h1:W/MzvoAiFfL5h4nq81wm7axvITgbnOoifXXGkFrgF1g=
40-
github.com/Azure/go-autorest/autorest v0.11.26/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
41-
github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ=
39+
github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A=
40+
github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U=
4241
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
42+
github.com/Azure/go-autorest/autorest/adal v0.9.20 h1:gJ3E98kMpFB1MFqQCvA1yFab8vthOeD4VlFRQULxahg=
43+
github.com/Azure/go-autorest/autorest/adal v0.9.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
4344
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
4445
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
4546
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4=
@@ -203,8 +204,9 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP
203204
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
204205
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
205206
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
206-
github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk=
207207
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
208+
github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34=
209+
github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
208210
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
209211
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
210212
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -222,6 +224,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
222224
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
223225
github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
224226
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
227+
github.com/remeh/sizedwaitgroup v1.0.0 h1:VNGGFwNo/R5+MJBf6yrsr110p0m4/OX4S3DCy7Kyl5E=
228+
github.com/remeh/sizedwaitgroup v1.0.0/go.mod h1:3j2R4OIe/SeS6YDhICBy22RWjJC5eNCJ1V+9+NVNYlo=
225229
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
226230
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
227231
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
@@ -234,8 +238,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
234238
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
235239
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
236240
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
237-
github.com/webdevops/go-common v0.0.0-20220410190409-7b8e84fab0bf h1:BRQKngpSxlV193KCrstZrbNOuS1PVfv5W43UjbapphI=
238-
github.com/webdevops/go-common v0.0.0-20220410190409-7b8e84fab0bf/go.mod h1:StsDbNavo/7SyvTBMzsqaiTy0rK3wIF1dSJk5vqOaws=
241+
github.com/webdevops/go-common v0.0.0-20220522185207-16fd48b07ed7 h1:9v7kCgTcLcRFMRcQIDCoQZdZplwSJFe/XKxQdJv9gfA=
242+
github.com/webdevops/go-common v0.0.0-20220522185207-16fd48b07ed7/go.mod h1:StsDbNavo/7SyvTBMzsqaiTy0rK3wIF1dSJk5vqOaws=
239243
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
240244
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
241245
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -252,8 +256,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
252256
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
253257
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
254258
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
255-
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA=
256-
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
259+
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898 h1:SLP7Q4Di66FONjDJbCYrCRrh97focO6sLogHO7/g8F0=
260+
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
257261
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
258262
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
259263
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -373,8 +377,8 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc
373377
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
374378
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
375379
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
376-
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
377-
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
380+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
381+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
378382
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
379383
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
380384
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

main.go

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,12 @@ import (
1010
"strings"
1111
"time"
1212

13-
"github.com/Azure/azure-sdk-for-go/profiles/latest/resources/mgmt/subscriptions"
14-
"github.com/Azure/go-autorest/autorest"
15-
"github.com/Azure/go-autorest/autorest/azure"
16-
"github.com/Azure/go-autorest/autorest/azure/auth"
1713
"github.com/google/uuid"
1814
"github.com/jessevdk/go-flags"
1915
cache "github.com/patrickmn/go-cache"
2016
"github.com/prometheus/client_golang/prometheus/promhttp"
2117
log "github.com/sirupsen/logrus"
18+
azureCommon "github.com/webdevops/go-common/azure"
2219
"github.com/webdevops/go-common/prometheus/azuretracing"
2320
"github.com/webdevops/go-common/prometheus/kusto"
2421

@@ -37,9 +34,7 @@ var (
3734

3835
Config kusto.Config
3936

40-
AzureAuthorizer autorest.Authorizer
41-
AzureSubscriptions []subscriptions.Subscription
42-
AzureEnvironment azure.Environment
37+
AzureClient *azureCommon.Client
4338

4439
metricCache *cache.Cache
4540

@@ -126,20 +121,14 @@ func readConfig() {
126121
}
127122
}
128123

129-
// Init and build Azure authorzier
130124
func initAzureConnection() {
131125
var err error
132-
133-
// setup azure authorizer
134-
AzureAuthorizer, err = auth.NewAuthorizerFromEnvironment()
126+
AzureClient, err = azureCommon.NewClientFromEnvironment(*opts.Azure.Environment, log.StandardLogger())
135127
if err != nil {
136-
log.Panic(err)
128+
log.Panic(err.Error())
137129
}
138130

139-
AzureEnvironment, err = azure.EnvironmentFromName(*opts.Azure.Environment)
140-
if err != nil {
141-
log.Panic(err)
142-
}
131+
AzureClient.SetUserAgent(UserAgent + gitTag)
143132
}
144133

145134
// start and handle prometheus handler
@@ -151,6 +140,13 @@ func startHttpServer() {
151140
}
152141
})
153142

143+
// readyz
144+
http.HandleFunc("/readyz", func(w http.ResponseWriter, r *http.Request) {
145+
if _, err := fmt.Fprint(w, "Ok"); err != nil {
146+
log.Error(err)
147+
}
148+
})
149+
154150
// report
155151
reportTmpl := template.Must(template.ParseFiles("./templates/query.html"))
156152
http.HandleFunc("/query", func(w http.ResponseWriter, r *http.Request) {
@@ -185,11 +181,3 @@ func startHttpServer() {
185181

186182
log.Fatal(http.ListenAndServe(opts.ServerBind, nil))
187183
}
188-
189-
func decorateAzureAutoRest(client *autorest.Client) {
190-
client.Authorizer = AzureAuthorizer
191-
if err := client.AddToUserAgent(UserAgent + gitTag); err != nil {
192-
log.Panic(err)
193-
}
194-
azuretracing.DecorateAzureAutoRestClient(client)
195-
}

probe.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ import (
77
"time"
88

99
resourcegraph "github.com/Azure/azure-sdk-for-go/services/resourcegraph/mgmt/2019-04-01/resourcegraph"
10+
"github.com/Azure/go-autorest/autorest/to"
1011
"github.com/prometheus/client_golang/prometheus"
1112
"github.com/prometheus/client_golang/prometheus/promhttp"
1213
log "github.com/sirupsen/logrus"
1314
"github.com/webdevops/go-common/prometheus/kusto"
1415
)
1516

1617
const (
17-
RESOURCEGRAPH_QUERY_OPTIONS_TOP = 1000
18+
ResourceGraphQueryOptionsTop = 1000
1819
)
1920

2021
func handleProbeRequest(w http.ResponseWriter, r *http.Request) {
@@ -43,13 +44,17 @@ func handleProbeRequest(w http.ResponseWriter, r *http.Request) {
4344
ctx := context.Background()
4445

4546
defaultSubscriptions := []string{}
46-
for _, subscription := range AzureSubscriptions {
47-
defaultSubscriptions = append(defaultSubscriptions, *subscription.SubscriptionID)
47+
if subscriptionList, err := AzureClient.ListCachedSubscriptionsWithFilter(ctx, opts.Azure.Subscription...); err == nil {
48+
for _, subscription := range subscriptionList {
49+
defaultSubscriptions = append(defaultSubscriptions, to.String(subscription.SubscriptionID))
50+
}
51+
} else {
52+
probeLogger.Panic(err)
4853
}
4954

5055
// Create and authorize a ResourceGraph client
51-
resourcegraphClient := resourcegraph.NewWithBaseURI(AzureEnvironment.ResourceManagerEndpoint)
52-
decorateAzureAutoRest(&resourcegraphClient.Client)
56+
resourceGraphClient := resourcegraph.NewWithBaseURI(AzureClient.Environment.ResourceManagerEndpoint)
57+
AzureClient.DecorateAzureAutorest(&resourceGraphClient.Client)
5358

5459
metricList := kusto.MetricList{}
5560
metricList.Init()
@@ -86,7 +91,7 @@ func handleProbeRequest(w http.ResponseWriter, r *http.Request) {
8691
queryConfig.Subscriptions = &defaultSubscriptions
8792
}
8893

89-
requestQueryTop := int32(RESOURCEGRAPH_QUERY_OPTIONS_TOP)
94+
requestQueryTop := int32(ResourceGraphQueryOptionsTop)
9095
requestQuerySkip := int32(0)
9196

9297
// Set options
@@ -108,7 +113,7 @@ func handleProbeRequest(w http.ResponseWriter, r *http.Request) {
108113

109114
prometheusQueryRequests.With(prometheus.Labels{"module": moduleName, "metric": queryConfig.Metric}).Inc()
110115

111-
var results, queryErr = resourcegraphClient.Resources(ctx, Request)
116+
var results, queryErr = resourceGraphClient.Resources(ctx, Request)
112117
if results.TotalRecords != nil {
113118
resultTotalRecords = int32(*results.TotalRecords)
114119
}

0 commit comments

Comments
 (0)