Skip to content

Commit 1235f73

Browse files
committed
migrate to go-common loganalytics execution package
Signed-off-by: Markus Blaschke <mblaschke82@gmail.com>
1 parent c672032 commit 1235f73

File tree

1 file changed

+10
-68
lines changed

1 file changed

+10
-68
lines changed

auditor/auditor.loganalytics.go

Lines changed: 10 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
package auditor
22

33
import (
4-
"bytes"
54
"context"
6-
"encoding/json"
7-
"fmt"
8-
"io"
9-
"net/http"
105
"time"
116

12-
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
137
armoperationalinsights "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/operationalinsights/armoperationalinsights/v2"
148
log "github.com/sirupsen/logrus"
159
azureCommon "github.com/webdevops/go-common/azuresdk/armclient"
16-
"github.com/webdevops/go-common/azuresdk/cloudconfig"
10+
"github.com/webdevops/go-common/azuresdk/loganalytics"
1711
prometheusCommon "github.com/webdevops/go-common/prometheus"
1812
"github.com/webdevops/go-common/utils/to"
1913

@@ -60,18 +54,6 @@ func (auditor *AzureAuditor) auditLogAnalytics(ctx context.Context, logger *log.
6054
}
6155

6256
func (auditor *AzureAuditor) queryLogAnalytics(ctx context.Context, logger *log.Entry, config *validator.AuditConfigValidation) (list []*validator.AzureObject) {
63-
var (
64-
baseUrl string
65-
)
66-
67-
switch auditor.azure.client.GetCloudName() {
68-
case cloudconfig.AzurePublicCloud:
69-
baseUrl = "https://api.loganalytics.io"
70-
case cloudconfig.AzureChinaCloud:
71-
baseUrl = "https://api.loganalytics.azure.cn"
72-
case cloudconfig.AzureGovernmentCloud:
73-
baseUrl = "https://api.loganalytics.us"
74-
}
7557

7658
subscriptionList := auditor.getSubscriptionList(ctx)
7759

@@ -111,58 +93,18 @@ func (auditor *AzureAuditor) queryLogAnalytics(ctx context.Context, logger *log.
11193
}
11294
}
11395

114-
scopeUrl := fmt.Sprintf("%s/.default", baseUrl)
115-
queryUrl := fmt.Sprintf("%s/v1/workspaces/%s/query", baseUrl, to.String(mainWorkspaceId))
116-
117-
credToken, err := auditor.azure.client.GetCred().GetToken(ctx, policy.TokenRequestOptions{
118-
Scopes: []string{scopeUrl},
119-
})
120-
if err != nil {
121-
workspaceLogger.Error(err)
122-
return
123-
}
124-
125-
// execute query
12696
workspaceLogger.WithField("workspaces", workspaces).Debug("sending query")
12797
startTime := time.Now()
128-
requestBody := struct {
129-
Query *string `json:"query"`
130-
Workspaces *[]string `json:"workspaces"`
131-
Timespan *string `json:"timespan"`
132-
}{
133-
Query: config.Query,
134-
Workspaces: &workspaces,
135-
Timespan: config.Timespan,
136-
}
137-
138-
requestBodyBytes, err := json.Marshal(requestBody)
139-
if err != nil {
140-
log.Fatal(err)
141-
}
142-
bytes.NewBuffer(requestBodyBytes)
143-
144-
req, err := http.NewRequest(http.MethodPost, queryUrl, bytes.NewBuffer(requestBodyBytes))
98+
99+
queryResults, err := loganalytics.ExecuteQuery(
100+
ctx,
101+
auditor.azure.client,
102+
*mainWorkspaceId,
103+
*config.Query,
104+
config.Timespan,
105+
&workspaces,
106+
)
145107
if err != nil {
146-
log.Fatal(err)
147-
}
148-
req.Method = http.MethodPost
149-
req.Header.Add("Content-Type", "application/json")
150-
req.Header.Add("authorization", fmt.Sprintf("Bearer %s", credToken.Token))
151-
response, err := http.DefaultClient.Do(req)
152-
if err != nil {
153-
workspaceLogger.Error(err)
154-
return
155-
}
156-
defer response.Body.Close()
157-
158-
responseBody, err := io.ReadAll(response.Body)
159-
if err != nil {
160-
workspaceLogger.Error(err)
161-
return
162-
}
163-
164-
var queryResults LogAnaltyicsQueryResult
165-
if err := json.Unmarshal(responseBody, &queryResults); err != nil {
166108
workspaceLogger.Error(err)
167109
return
168110
}

0 commit comments

Comments
 (0)