1// +build go1.13 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armcompute 9 10import ( 11 "context" 12 "errors" 13 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 14 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 15 "net/http" 16 "net/url" 17 "strings" 18 "time" 19) 20 21// LogAnalyticsClient contains the methods for the LogAnalytics group. 22// Don't use this type directly, use NewLogAnalyticsClient() instead. 23type LogAnalyticsClient struct { 24 con *armcore.Connection 25 subscriptionID string 26} 27 28// NewLogAnalyticsClient creates a new instance of LogAnalyticsClient with the specified values. 29func NewLogAnalyticsClient(con *armcore.Connection, subscriptionID string) *LogAnalyticsClient { 30 return &LogAnalyticsClient{con: con, subscriptionID: subscriptionID} 31} 32 33// BeginExportRequestRateByInterval - Export logs that show Api requests made by this subscription in the given time window to show throttling activities. 34// If the operation fails it returns a generic error. 35func (client *LogAnalyticsClient) BeginExportRequestRateByInterval(ctx context.Context, location string, parameters RequestRateByIntervalInput, options *LogAnalyticsBeginExportRequestRateByIntervalOptions) (LogAnalyticsOperationResultPollerResponse, error) { 36 resp, err := client.exportRequestRateByInterval(ctx, location, parameters, options) 37 if err != nil { 38 return LogAnalyticsOperationResultPollerResponse{}, err 39 } 40 result := LogAnalyticsOperationResultPollerResponse{ 41 RawResponse: resp.Response, 42 } 43 pt, err := armcore.NewLROPoller("LogAnalyticsClient.ExportRequestRateByInterval", "azure-async-operation", resp, client.con.Pipeline(), client.exportRequestRateByIntervalHandleError) 44 if err != nil { 45 return LogAnalyticsOperationResultPollerResponse{}, err 46 } 47 poller := &logAnalyticsOperationResultPoller{ 48 pt: pt, 49 } 50 result.Poller = poller 51 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (LogAnalyticsOperationResultResponse, error) { 52 return poller.pollUntilDone(ctx, frequency) 53 } 54 return result, nil 55} 56 57// ResumeExportRequestRateByInterval creates a new LogAnalyticsOperationResultPoller from the specified resume token. 58// token - The value must come from a previous call to LogAnalyticsOperationResultPoller.ResumeToken(). 59func (client *LogAnalyticsClient) ResumeExportRequestRateByInterval(ctx context.Context, token string) (LogAnalyticsOperationResultPollerResponse, error) { 60 pt, err := armcore.NewLROPollerFromResumeToken("LogAnalyticsClient.ExportRequestRateByInterval", token, client.con.Pipeline(), client.exportRequestRateByIntervalHandleError) 61 if err != nil { 62 return LogAnalyticsOperationResultPollerResponse{}, err 63 } 64 poller := &logAnalyticsOperationResultPoller{ 65 pt: pt, 66 } 67 resp, err := poller.Poll(ctx) 68 if err != nil { 69 return LogAnalyticsOperationResultPollerResponse{}, err 70 } 71 result := LogAnalyticsOperationResultPollerResponse{ 72 RawResponse: resp, 73 } 74 result.Poller = poller 75 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (LogAnalyticsOperationResultResponse, error) { 76 return poller.pollUntilDone(ctx, frequency) 77 } 78 return result, nil 79} 80 81// ExportRequestRateByInterval - Export logs that show Api requests made by this subscription in the given time window to show throttling activities. 82// If the operation fails it returns a generic error. 83func (client *LogAnalyticsClient) exportRequestRateByInterval(ctx context.Context, location string, parameters RequestRateByIntervalInput, options *LogAnalyticsBeginExportRequestRateByIntervalOptions) (*azcore.Response, error) { 84 req, err := client.exportRequestRateByIntervalCreateRequest(ctx, location, parameters, options) 85 if err != nil { 86 return nil, err 87 } 88 resp, err := client.con.Pipeline().Do(req) 89 if err != nil { 90 return nil, err 91 } 92 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) { 93 return nil, client.exportRequestRateByIntervalHandleError(resp) 94 } 95 return resp, nil 96} 97 98// exportRequestRateByIntervalCreateRequest creates the ExportRequestRateByInterval request. 99func (client *LogAnalyticsClient) exportRequestRateByIntervalCreateRequest(ctx context.Context, location string, parameters RequestRateByIntervalInput, options *LogAnalyticsBeginExportRequestRateByIntervalOptions) (*azcore.Request, error) { 100 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getRequestRateByInterval" 101 if location == "" { 102 return nil, errors.New("parameter location cannot be empty") 103 } 104 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 105 if client.subscriptionID == "" { 106 return nil, errors.New("parameter client.subscriptionID cannot be empty") 107 } 108 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 109 req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 110 if err != nil { 111 return nil, err 112 } 113 req.Telemetry(telemetryInfo) 114 reqQP := req.URL.Query() 115 reqQP.Set("api-version", "2021-03-01") 116 req.URL.RawQuery = reqQP.Encode() 117 req.Header.Set("Accept", "application/json") 118 return req, req.MarshalAsJSON(parameters) 119} 120 121// exportRequestRateByIntervalHandleError handles the ExportRequestRateByInterval error response. 122func (client *LogAnalyticsClient) exportRequestRateByIntervalHandleError(resp *azcore.Response) error { 123 body, err := resp.Payload() 124 if err != nil { 125 return azcore.NewResponseError(err, resp.Response) 126 } 127 if len(body) == 0 { 128 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 129 } 130 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 131} 132 133// BeginExportThrottledRequests - Export logs that show total throttled Api requests for this subscription in the given time window. 134// If the operation fails it returns a generic error. 135func (client *LogAnalyticsClient) BeginExportThrottledRequests(ctx context.Context, location string, parameters ThrottledRequestsInput, options *LogAnalyticsBeginExportThrottledRequestsOptions) (LogAnalyticsOperationResultPollerResponse, error) { 136 resp, err := client.exportThrottledRequests(ctx, location, parameters, options) 137 if err != nil { 138 return LogAnalyticsOperationResultPollerResponse{}, err 139 } 140 result := LogAnalyticsOperationResultPollerResponse{ 141 RawResponse: resp.Response, 142 } 143 pt, err := armcore.NewLROPoller("LogAnalyticsClient.ExportThrottledRequests", "azure-async-operation", resp, client.con.Pipeline(), client.exportThrottledRequestsHandleError) 144 if err != nil { 145 return LogAnalyticsOperationResultPollerResponse{}, err 146 } 147 poller := &logAnalyticsOperationResultPoller{ 148 pt: pt, 149 } 150 result.Poller = poller 151 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (LogAnalyticsOperationResultResponse, error) { 152 return poller.pollUntilDone(ctx, frequency) 153 } 154 return result, nil 155} 156 157// ResumeExportThrottledRequests creates a new LogAnalyticsOperationResultPoller from the specified resume token. 158// token - The value must come from a previous call to LogAnalyticsOperationResultPoller.ResumeToken(). 159func (client *LogAnalyticsClient) ResumeExportThrottledRequests(ctx context.Context, token string) (LogAnalyticsOperationResultPollerResponse, error) { 160 pt, err := armcore.NewLROPollerFromResumeToken("LogAnalyticsClient.ExportThrottledRequests", token, client.con.Pipeline(), client.exportThrottledRequestsHandleError) 161 if err != nil { 162 return LogAnalyticsOperationResultPollerResponse{}, err 163 } 164 poller := &logAnalyticsOperationResultPoller{ 165 pt: pt, 166 } 167 resp, err := poller.Poll(ctx) 168 if err != nil { 169 return LogAnalyticsOperationResultPollerResponse{}, err 170 } 171 result := LogAnalyticsOperationResultPollerResponse{ 172 RawResponse: resp, 173 } 174 result.Poller = poller 175 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (LogAnalyticsOperationResultResponse, error) { 176 return poller.pollUntilDone(ctx, frequency) 177 } 178 return result, nil 179} 180 181// ExportThrottledRequests - Export logs that show total throttled Api requests for this subscription in the given time window. 182// If the operation fails it returns a generic error. 183func (client *LogAnalyticsClient) exportThrottledRequests(ctx context.Context, location string, parameters ThrottledRequestsInput, options *LogAnalyticsBeginExportThrottledRequestsOptions) (*azcore.Response, error) { 184 req, err := client.exportThrottledRequestsCreateRequest(ctx, location, parameters, options) 185 if err != nil { 186 return nil, err 187 } 188 resp, err := client.con.Pipeline().Do(req) 189 if err != nil { 190 return nil, err 191 } 192 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) { 193 return nil, client.exportThrottledRequestsHandleError(resp) 194 } 195 return resp, nil 196} 197 198// exportThrottledRequestsCreateRequest creates the ExportThrottledRequests request. 199func (client *LogAnalyticsClient) exportThrottledRequestsCreateRequest(ctx context.Context, location string, parameters ThrottledRequestsInput, options *LogAnalyticsBeginExportThrottledRequestsOptions) (*azcore.Request, error) { 200 urlPath := "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getThrottledRequests" 201 if location == "" { 202 return nil, errors.New("parameter location cannot be empty") 203 } 204 urlPath = strings.ReplaceAll(urlPath, "{location}", url.PathEscape(location)) 205 if client.subscriptionID == "" { 206 return nil, errors.New("parameter client.subscriptionID cannot be empty") 207 } 208 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 209 req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 210 if err != nil { 211 return nil, err 212 } 213 req.Telemetry(telemetryInfo) 214 reqQP := req.URL.Query() 215 reqQP.Set("api-version", "2021-03-01") 216 req.URL.RawQuery = reqQP.Encode() 217 req.Header.Set("Accept", "application/json") 218 return req, req.MarshalAsJSON(parameters) 219} 220 221// exportThrottledRequestsHandleError handles the ExportThrottledRequests error response. 222func (client *LogAnalyticsClient) exportThrottledRequestsHandleError(resp *azcore.Response) error { 223 body, err := resp.Payload() 224 if err != nil { 225 return azcore.NewResponseError(err, resp.Response) 226 } 227 if len(body) == 0 { 228 return azcore.NewResponseError(errors.New(resp.Status), resp.Response) 229 } 230 return azcore.NewResponseError(errors.New(string(body)), resp.Response) 231} 232