1package batch 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// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/autorest/date" 14 "github.com/Azure/go-autorest/autorest/validation" 15 "github.com/Azure/go-autorest/tracing" 16 "github.com/gofrs/uuid" 17 "net/http" 18) 19 20// AccountClient is the a client for issuing REST requests to the Azure Batch service. 21type AccountClient struct { 22 BaseClient 23} 24 25// NewAccountClient creates an instance of the AccountClient client. 26func NewAccountClient(batchURL string) AccountClient { 27 return AccountClient{New(batchURL)} 28} 29 30// ListPoolNodeCounts gets the number of Compute Nodes in each state, grouped by Pool. Note that the numbers returned 31// may not always be up to date. If you need exact node counts, use a list query. 32// Parameters: 33// filter - an OData $filter clause. For more information on constructing this filter, see 34// https://docs.microsoft.com/en-us/rest/api/batchservice/odata-filters-in-batch. 35// maxResults - the maximum number of items to return in the response. 36// timeout - the maximum time that the server can spend processing the request, in seconds. The default is 30 37// seconds. 38// clientRequestID - the caller-generated request identity, in the form of a GUID with no decoration such as 39// curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0. 40// returnClientRequestID - whether the server should return the client-request-id in the response. 41// ocpDate - the time the request was issued. Client libraries typically set this to the current system clock 42// time; set it explicitly if you are calling the REST API directly. 43func (client AccountClient) ListPoolNodeCounts(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (result PoolNodeCountsListResultPage, err error) { 44 if tracing.IsEnabled() { 45 ctx = tracing.StartSpan(ctx, fqdn+"/AccountClient.ListPoolNodeCounts") 46 defer func() { 47 sc := -1 48 if result.pnclr.Response.Response != nil { 49 sc = result.pnclr.Response.Response.StatusCode 50 } 51 tracing.EndSpan(ctx, sc, err) 52 }() 53 } 54 if err := validation.Validate([]validation.Validation{ 55 {TargetValue: maxResults, 56 Constraints: []validation.Constraint{{Target: "maxResults", Name: validation.Null, Rule: false, 57 Chain: []validation.Constraint{{Target: "maxResults", Name: validation.InclusiveMaximum, Rule: int64(10), Chain: nil}, 58 {Target: "maxResults", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, 59 }}}}}); err != nil { 60 return result, validation.NewError("batch.AccountClient", "ListPoolNodeCounts", err.Error()) 61 } 62 63 result.fn = client.listPoolNodeCountsNextResults 64 req, err := client.ListPoolNodeCountsPreparer(ctx, filter, maxResults, timeout, clientRequestID, returnClientRequestID, ocpDate) 65 if err != nil { 66 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListPoolNodeCounts", nil, "Failure preparing request") 67 return 68 } 69 70 resp, err := client.ListPoolNodeCountsSender(req) 71 if err != nil { 72 result.pnclr.Response = autorest.Response{Response: resp} 73 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListPoolNodeCounts", resp, "Failure sending request") 74 return 75 } 76 77 result.pnclr, err = client.ListPoolNodeCountsResponder(resp) 78 if err != nil { 79 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListPoolNodeCounts", resp, "Failure responding to request") 80 return 81 } 82 if result.pnclr.hasNextLink() && result.pnclr.IsEmpty() { 83 err = result.NextWithContext(ctx) 84 return 85 } 86 87 return 88} 89 90// ListPoolNodeCountsPreparer prepares the ListPoolNodeCounts request. 91func (client AccountClient) ListPoolNodeCountsPreparer(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (*http.Request, error) { 92 urlParameters := map[string]interface{}{ 93 "batchUrl": client.BatchURL, 94 } 95 96 const APIVersion = "2020-09-01.12.0" 97 queryParameters := map[string]interface{}{ 98 "api-version": APIVersion, 99 } 100 if len(filter) > 0 { 101 queryParameters["$filter"] = autorest.Encode("query", filter) 102 } 103 if maxResults != nil { 104 queryParameters["maxresults"] = autorest.Encode("query", *maxResults) 105 } else { 106 queryParameters["maxresults"] = autorest.Encode("query", 10) 107 } 108 if timeout != nil { 109 queryParameters["timeout"] = autorest.Encode("query", *timeout) 110 } else { 111 queryParameters["timeout"] = autorest.Encode("query", 30) 112 } 113 114 preparer := autorest.CreatePreparer( 115 autorest.AsGet(), 116 autorest.WithCustomBaseURL("{batchUrl}", urlParameters), 117 autorest.WithPath("/nodecounts"), 118 autorest.WithQueryParameters(queryParameters)) 119 if clientRequestID != nil { 120 preparer = autorest.DecoratePreparer(preparer, 121 autorest.WithHeader("client-request-id", autorest.String(clientRequestID))) 122 } 123 if returnClientRequestID != nil { 124 preparer = autorest.DecoratePreparer(preparer, 125 autorest.WithHeader("return-client-request-id", autorest.String(returnClientRequestID))) 126 } else { 127 preparer = autorest.DecoratePreparer(preparer, 128 autorest.WithHeader("return-client-request-id", autorest.String(false))) 129 } 130 if ocpDate != nil { 131 preparer = autorest.DecoratePreparer(preparer, 132 autorest.WithHeader("ocp-date", autorest.String(ocpDate))) 133 } 134 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 135} 136 137// ListPoolNodeCountsSender sends the ListPoolNodeCounts request. The method will close the 138// http.Response Body if it receives an error. 139func (client AccountClient) ListPoolNodeCountsSender(req *http.Request) (*http.Response, error) { 140 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 141} 142 143// ListPoolNodeCountsResponder handles the response to the ListPoolNodeCounts request. The method always 144// closes the http.Response Body. 145func (client AccountClient) ListPoolNodeCountsResponder(resp *http.Response) (result PoolNodeCountsListResult, err error) { 146 err = autorest.Respond( 147 resp, 148 azure.WithErrorUnlessStatusCode(http.StatusOK), 149 autorest.ByUnmarshallingJSON(&result), 150 autorest.ByClosing()) 151 result.Response = autorest.Response{Response: resp} 152 return 153} 154 155// listPoolNodeCountsNextResults retrieves the next set of results, if any. 156func (client AccountClient) listPoolNodeCountsNextResults(ctx context.Context, lastResults PoolNodeCountsListResult) (result PoolNodeCountsListResult, err error) { 157 req, err := lastResults.poolNodeCountsListResultPreparer(ctx) 158 if err != nil { 159 return result, autorest.NewErrorWithError(err, "batch.AccountClient", "listPoolNodeCountsNextResults", nil, "Failure preparing next results request") 160 } 161 if req == nil { 162 return 163 } 164 resp, err := client.ListPoolNodeCountsSender(req) 165 if err != nil { 166 result.Response = autorest.Response{Response: resp} 167 return result, autorest.NewErrorWithError(err, "batch.AccountClient", "listPoolNodeCountsNextResults", resp, "Failure sending next results request") 168 } 169 result, err = client.ListPoolNodeCountsResponder(resp) 170 if err != nil { 171 err = autorest.NewErrorWithError(err, "batch.AccountClient", "listPoolNodeCountsNextResults", resp, "Failure responding to next results request") 172 } 173 return 174} 175 176// ListPoolNodeCountsComplete enumerates all values, automatically crossing page boundaries as required. 177func (client AccountClient) ListPoolNodeCountsComplete(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (result PoolNodeCountsListResultIterator, err error) { 178 if tracing.IsEnabled() { 179 ctx = tracing.StartSpan(ctx, fqdn+"/AccountClient.ListPoolNodeCounts") 180 defer func() { 181 sc := -1 182 if result.Response().Response.Response != nil { 183 sc = result.page.Response().Response.Response.StatusCode 184 } 185 tracing.EndSpan(ctx, sc, err) 186 }() 187 } 188 result.page, err = client.ListPoolNodeCounts(ctx, filter, maxResults, timeout, clientRequestID, returnClientRequestID, ocpDate) 189 return 190} 191 192// ListSupportedImages sends the list supported images request. 193// Parameters: 194// filter - an OData $filter clause. For more information on constructing this filter, see 195// https://docs.microsoft.com/en-us/rest/api/batchservice/odata-filters-in-batch#list-support-images. 196// maxResults - the maximum number of items to return in the response. A maximum of 1000 results will be 197// returned. 198// timeout - the maximum time that the server can spend processing the request, in seconds. The default is 30 199// seconds. 200// clientRequestID - the caller-generated request identity, in the form of a GUID with no decoration such as 201// curly braces, e.g. 9C4D50EE-2D56-4CD3-8152-34347DC9F2B0. 202// returnClientRequestID - whether the server should return the client-request-id in the response. 203// ocpDate - the time the request was issued. Client libraries typically set this to the current system clock 204// time; set it explicitly if you are calling the REST API directly. 205func (client AccountClient) ListSupportedImages(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (result AccountListSupportedImagesResultPage, err error) { 206 if tracing.IsEnabled() { 207 ctx = tracing.StartSpan(ctx, fqdn+"/AccountClient.ListSupportedImages") 208 defer func() { 209 sc := -1 210 if result.alsir.Response.Response != nil { 211 sc = result.alsir.Response.Response.StatusCode 212 } 213 tracing.EndSpan(ctx, sc, err) 214 }() 215 } 216 if err := validation.Validate([]validation.Validation{ 217 {TargetValue: maxResults, 218 Constraints: []validation.Constraint{{Target: "maxResults", Name: validation.Null, Rule: false, 219 Chain: []validation.Constraint{{Target: "maxResults", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, 220 {Target: "maxResults", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}, 221 }}}}}); err != nil { 222 return result, validation.NewError("batch.AccountClient", "ListSupportedImages", err.Error()) 223 } 224 225 result.fn = client.listSupportedImagesNextResults 226 req, err := client.ListSupportedImagesPreparer(ctx, filter, maxResults, timeout, clientRequestID, returnClientRequestID, ocpDate) 227 if err != nil { 228 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListSupportedImages", nil, "Failure preparing request") 229 return 230 } 231 232 resp, err := client.ListSupportedImagesSender(req) 233 if err != nil { 234 result.alsir.Response = autorest.Response{Response: resp} 235 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListSupportedImages", resp, "Failure sending request") 236 return 237 } 238 239 result.alsir, err = client.ListSupportedImagesResponder(resp) 240 if err != nil { 241 err = autorest.NewErrorWithError(err, "batch.AccountClient", "ListSupportedImages", resp, "Failure responding to request") 242 return 243 } 244 if result.alsir.hasNextLink() && result.alsir.IsEmpty() { 245 err = result.NextWithContext(ctx) 246 return 247 } 248 249 return 250} 251 252// ListSupportedImagesPreparer prepares the ListSupportedImages request. 253func (client AccountClient) ListSupportedImagesPreparer(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (*http.Request, error) { 254 urlParameters := map[string]interface{}{ 255 "batchUrl": client.BatchURL, 256 } 257 258 const APIVersion = "2020-09-01.12.0" 259 queryParameters := map[string]interface{}{ 260 "api-version": APIVersion, 261 } 262 if len(filter) > 0 { 263 queryParameters["$filter"] = autorest.Encode("query", filter) 264 } 265 if maxResults != nil { 266 queryParameters["maxresults"] = autorest.Encode("query", *maxResults) 267 } else { 268 queryParameters["maxresults"] = autorest.Encode("query", 1000) 269 } 270 if timeout != nil { 271 queryParameters["timeout"] = autorest.Encode("query", *timeout) 272 } else { 273 queryParameters["timeout"] = autorest.Encode("query", 30) 274 } 275 276 preparer := autorest.CreatePreparer( 277 autorest.AsGet(), 278 autorest.WithCustomBaseURL("{batchUrl}", urlParameters), 279 autorest.WithPath("/supportedimages"), 280 autorest.WithQueryParameters(queryParameters)) 281 if clientRequestID != nil { 282 preparer = autorest.DecoratePreparer(preparer, 283 autorest.WithHeader("client-request-id", autorest.String(clientRequestID))) 284 } 285 if returnClientRequestID != nil { 286 preparer = autorest.DecoratePreparer(preparer, 287 autorest.WithHeader("return-client-request-id", autorest.String(returnClientRequestID))) 288 } else { 289 preparer = autorest.DecoratePreparer(preparer, 290 autorest.WithHeader("return-client-request-id", autorest.String(false))) 291 } 292 if ocpDate != nil { 293 preparer = autorest.DecoratePreparer(preparer, 294 autorest.WithHeader("ocp-date", autorest.String(ocpDate))) 295 } 296 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 297} 298 299// ListSupportedImagesSender sends the ListSupportedImages request. The method will close the 300// http.Response Body if it receives an error. 301func (client AccountClient) ListSupportedImagesSender(req *http.Request) (*http.Response, error) { 302 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 303} 304 305// ListSupportedImagesResponder handles the response to the ListSupportedImages request. The method always 306// closes the http.Response Body. 307func (client AccountClient) ListSupportedImagesResponder(resp *http.Response) (result AccountListSupportedImagesResult, err error) { 308 err = autorest.Respond( 309 resp, 310 azure.WithErrorUnlessStatusCode(http.StatusOK), 311 autorest.ByUnmarshallingJSON(&result), 312 autorest.ByClosing()) 313 result.Response = autorest.Response{Response: resp} 314 return 315} 316 317// listSupportedImagesNextResults retrieves the next set of results, if any. 318func (client AccountClient) listSupportedImagesNextResults(ctx context.Context, lastResults AccountListSupportedImagesResult) (result AccountListSupportedImagesResult, err error) { 319 req, err := lastResults.accountListSupportedImagesResultPreparer(ctx) 320 if err != nil { 321 return result, autorest.NewErrorWithError(err, "batch.AccountClient", "listSupportedImagesNextResults", nil, "Failure preparing next results request") 322 } 323 if req == nil { 324 return 325 } 326 resp, err := client.ListSupportedImagesSender(req) 327 if err != nil { 328 result.Response = autorest.Response{Response: resp} 329 return result, autorest.NewErrorWithError(err, "batch.AccountClient", "listSupportedImagesNextResults", resp, "Failure sending next results request") 330 } 331 result, err = client.ListSupportedImagesResponder(resp) 332 if err != nil { 333 err = autorest.NewErrorWithError(err, "batch.AccountClient", "listSupportedImagesNextResults", resp, "Failure responding to next results request") 334 } 335 return 336} 337 338// ListSupportedImagesComplete enumerates all values, automatically crossing page boundaries as required. 339func (client AccountClient) ListSupportedImagesComplete(ctx context.Context, filter string, maxResults *int32, timeout *int32, clientRequestID *uuid.UUID, returnClientRequestID *bool, ocpDate *date.TimeRFC1123) (result AccountListSupportedImagesResultIterator, err error) { 340 if tracing.IsEnabled() { 341 ctx = tracing.StartSpan(ctx, fqdn+"/AccountClient.ListSupportedImages") 342 defer func() { 343 sc := -1 344 if result.Response().Response.Response != nil { 345 sc = result.page.Response().Response.Response.StatusCode 346 } 347 tracing.EndSpan(ctx, sc, err) 348 }() 349 } 350 result.page, err = client.ListSupportedImages(ctx, filter, maxResults, timeout, clientRequestID, returnClientRequestID, ocpDate) 351 return 352} 353