1package consumption 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/tracing" 14 "net/http" 15) 16 17// ReservationsSummariesClient is the consumption management client provides access to consumption resources for Azure 18// Enterprise Subscriptions. 19type ReservationsSummariesClient struct { 20 BaseClient 21} 22 23// NewReservationsSummariesClient creates an instance of the ReservationsSummariesClient client. 24func NewReservationsSummariesClient(subscriptionID string) ReservationsSummariesClient { 25 return NewReservationsSummariesClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewReservationsSummariesClientWithBaseURI creates an instance of the ReservationsSummariesClient client using a 29// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, 30// Azure stack). 31func NewReservationsSummariesClientWithBaseURI(baseURI string, subscriptionID string) ReservationsSummariesClient { 32 return ReservationsSummariesClient{NewWithBaseURI(baseURI, subscriptionID)} 33} 34 35// List lists the reservations summaries for the defined scope daily or monthly grain. 36// Parameters: 37// scope - the scope associated with reservations summaries operations. This includes 38// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for BillingAccount scope (legacy), and 39// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}' for 40// BillingProfile scope (modern). 41// grain - can be daily or monthly 42// startDate - start date. Required only when querying with billing profile 43// endDate - end date. Required only when querying with billing profile 44// filter - the properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'. Not 45// required when querying with billing profile 46// reservationID - reservation Id GUID. Only valid if reservationOrderId is also provided. Filter to a specific 47// reservation 48// reservationOrderID - reservation Order Id GUID. Required if reservationId is provided. Filter to a specific 49// reservation order 50func (client ReservationsSummariesClient) List(ctx context.Context, scope string, grain Datagrain, startDate string, endDate string, filter string, reservationID string, reservationOrderID string) (result ReservationSummariesListResultPage, err error) { 51 if tracing.IsEnabled() { 52 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.List") 53 defer func() { 54 sc := -1 55 if result.rslr.Response.Response != nil { 56 sc = result.rslr.Response.Response.StatusCode 57 } 58 tracing.EndSpan(ctx, sc, err) 59 }() 60 } 61 result.fn = client.listNextResults 62 req, err := client.ListPreparer(ctx, scope, grain, startDate, endDate, filter, reservationID, reservationOrderID) 63 if err != nil { 64 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "List", nil, "Failure preparing request") 65 return 66 } 67 68 resp, err := client.ListSender(req) 69 if err != nil { 70 result.rslr.Response = autorest.Response{Response: resp} 71 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "List", resp, "Failure sending request") 72 return 73 } 74 75 result.rslr, err = client.ListResponder(resp) 76 if err != nil { 77 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "List", resp, "Failure responding to request") 78 return 79 } 80 if result.rslr.hasNextLink() && result.rslr.IsEmpty() { 81 err = result.NextWithContext(ctx) 82 return 83 } 84 85 return 86} 87 88// ListPreparer prepares the List request. 89func (client ReservationsSummariesClient) ListPreparer(ctx context.Context, scope string, grain Datagrain, startDate string, endDate string, filter string, reservationID string, reservationOrderID string) (*http.Request, error) { 90 pathParameters := map[string]interface{}{ 91 "scope": scope, 92 } 93 94 const APIVersion = "2019-10-01" 95 queryParameters := map[string]interface{}{ 96 "api-version": APIVersion, 97 "grain": autorest.Encode("query", grain), 98 } 99 if len(startDate) > 0 { 100 queryParameters["startDate"] = autorest.Encode("query", startDate) 101 } 102 if len(endDate) > 0 { 103 queryParameters["endDate"] = autorest.Encode("query", endDate) 104 } 105 if len(filter) > 0 { 106 queryParameters["$filter"] = autorest.Encode("query", filter) 107 } 108 if len(reservationID) > 0 { 109 queryParameters["reservationId"] = autorest.Encode("query", reservationID) 110 } 111 if len(reservationOrderID) > 0 { 112 queryParameters["reservationOrderId"] = autorest.Encode("query", reservationOrderID) 113 } 114 115 preparer := autorest.CreatePreparer( 116 autorest.AsGet(), 117 autorest.WithBaseURL(client.BaseURI), 118 autorest.WithPathParameters("/{scope}/providers/Microsoft.Consumption/reservationSummaries", pathParameters), 119 autorest.WithQueryParameters(queryParameters)) 120 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 121} 122 123// ListSender sends the List request. The method will close the 124// http.Response Body if it receives an error. 125func (client ReservationsSummariesClient) ListSender(req *http.Request) (*http.Response, error) { 126 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 127} 128 129// ListResponder handles the response to the List request. The method always 130// closes the http.Response Body. 131func (client ReservationsSummariesClient) ListResponder(resp *http.Response) (result ReservationSummariesListResult, err error) { 132 err = autorest.Respond( 133 resp, 134 azure.WithErrorUnlessStatusCode(http.StatusOK), 135 autorest.ByUnmarshallingJSON(&result), 136 autorest.ByClosing()) 137 result.Response = autorest.Response{Response: resp} 138 return 139} 140 141// listNextResults retrieves the next set of results, if any. 142func (client ReservationsSummariesClient) listNextResults(ctx context.Context, lastResults ReservationSummariesListResult) (result ReservationSummariesListResult, err error) { 143 req, err := lastResults.reservationSummariesListResultPreparer(ctx) 144 if err != nil { 145 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listNextResults", nil, "Failure preparing next results request") 146 } 147 if req == nil { 148 return 149 } 150 resp, err := client.ListSender(req) 151 if err != nil { 152 result.Response = autorest.Response{Response: resp} 153 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listNextResults", resp, "Failure sending next results request") 154 } 155 result, err = client.ListResponder(resp) 156 if err != nil { 157 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listNextResults", resp, "Failure responding to next results request") 158 } 159 return 160} 161 162// ListComplete enumerates all values, automatically crossing page boundaries as required. 163func (client ReservationsSummariesClient) ListComplete(ctx context.Context, scope string, grain Datagrain, startDate string, endDate string, filter string, reservationID string, reservationOrderID string) (result ReservationSummariesListResultIterator, err error) { 164 if tracing.IsEnabled() { 165 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.List") 166 defer func() { 167 sc := -1 168 if result.Response().Response.Response != nil { 169 sc = result.page.Response().Response.Response.StatusCode 170 } 171 tracing.EndSpan(ctx, sc, err) 172 }() 173 } 174 result.page, err = client.List(ctx, scope, grain, startDate, endDate, filter, reservationID, reservationOrderID) 175 return 176} 177 178// ListByReservationOrder lists the reservations summaries for daily or monthly grain. 179// Parameters: 180// reservationOrderID - order Id of the reservation 181// grain - can be daily or monthly 182// filter - required only for daily grain. The properties/UsageDate for start date and end date. The filter 183// supports 'le' and 'ge' 184func (client ReservationsSummariesClient) ListByReservationOrder(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (result ReservationSummariesListResultPage, err error) { 185 if tracing.IsEnabled() { 186 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrder") 187 defer func() { 188 sc := -1 189 if result.rslr.Response.Response != nil { 190 sc = result.rslr.Response.Response.StatusCode 191 } 192 tracing.EndSpan(ctx, sc, err) 193 }() 194 } 195 result.fn = client.listByReservationOrderNextResults 196 req, err := client.ListByReservationOrderPreparer(ctx, reservationOrderID, grain, filter) 197 if err != nil { 198 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", nil, "Failure preparing request") 199 return 200 } 201 202 resp, err := client.ListByReservationOrderSender(req) 203 if err != nil { 204 result.rslr.Response = autorest.Response{Response: resp} 205 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", resp, "Failure sending request") 206 return 207 } 208 209 result.rslr, err = client.ListByReservationOrderResponder(resp) 210 if err != nil { 211 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", resp, "Failure responding to request") 212 return 213 } 214 if result.rslr.hasNextLink() && result.rslr.IsEmpty() { 215 err = result.NextWithContext(ctx) 216 return 217 } 218 219 return 220} 221 222// ListByReservationOrderPreparer prepares the ListByReservationOrder request. 223func (client ReservationsSummariesClient) ListByReservationOrderPreparer(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (*http.Request, error) { 224 pathParameters := map[string]interface{}{ 225 "reservationOrderId": autorest.Encode("path", reservationOrderID), 226 } 227 228 const APIVersion = "2019-10-01" 229 queryParameters := map[string]interface{}{ 230 "api-version": APIVersion, 231 "grain": autorest.Encode("query", grain), 232 } 233 if len(filter) > 0 { 234 queryParameters["$filter"] = autorest.Encode("query", filter) 235 } 236 237 preparer := autorest.CreatePreparer( 238 autorest.AsGet(), 239 autorest.WithBaseURL(client.BaseURI), 240 autorest.WithPathParameters("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/providers/Microsoft.Consumption/reservationSummaries", pathParameters), 241 autorest.WithQueryParameters(queryParameters)) 242 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 243} 244 245// ListByReservationOrderSender sends the ListByReservationOrder request. The method will close the 246// http.Response Body if it receives an error. 247func (client ReservationsSummariesClient) ListByReservationOrderSender(req *http.Request) (*http.Response, error) { 248 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 249} 250 251// ListByReservationOrderResponder handles the response to the ListByReservationOrder request. The method always 252// closes the http.Response Body. 253func (client ReservationsSummariesClient) ListByReservationOrderResponder(resp *http.Response) (result ReservationSummariesListResult, err error) { 254 err = autorest.Respond( 255 resp, 256 azure.WithErrorUnlessStatusCode(http.StatusOK), 257 autorest.ByUnmarshallingJSON(&result), 258 autorest.ByClosing()) 259 result.Response = autorest.Response{Response: resp} 260 return 261} 262 263// listByReservationOrderNextResults retrieves the next set of results, if any. 264func (client ReservationsSummariesClient) listByReservationOrderNextResults(ctx context.Context, lastResults ReservationSummariesListResult) (result ReservationSummariesListResult, err error) { 265 req, err := lastResults.reservationSummariesListResultPreparer(ctx) 266 if err != nil { 267 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", nil, "Failure preparing next results request") 268 } 269 if req == nil { 270 return 271 } 272 resp, err := client.ListByReservationOrderSender(req) 273 if err != nil { 274 result.Response = autorest.Response{Response: resp} 275 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", resp, "Failure sending next results request") 276 } 277 result, err = client.ListByReservationOrderResponder(resp) 278 if err != nil { 279 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", resp, "Failure responding to next results request") 280 } 281 return 282} 283 284// ListByReservationOrderComplete enumerates all values, automatically crossing page boundaries as required. 285func (client ReservationsSummariesClient) ListByReservationOrderComplete(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (result ReservationSummariesListResultIterator, err error) { 286 if tracing.IsEnabled() { 287 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrder") 288 defer func() { 289 sc := -1 290 if result.Response().Response.Response != nil { 291 sc = result.page.Response().Response.Response.StatusCode 292 } 293 tracing.EndSpan(ctx, sc, err) 294 }() 295 } 296 result.page, err = client.ListByReservationOrder(ctx, reservationOrderID, grain, filter) 297 return 298} 299 300// ListByReservationOrderAndReservation lists the reservations summaries for daily or monthly grain. 301// Parameters: 302// reservationOrderID - order Id of the reservation 303// reservationID - id of the reservation 304// grain - can be daily or monthly 305// filter - required only for daily grain. The properties/UsageDate for start date and end date. The filter 306// supports 'le' and 'ge' 307func (client ReservationsSummariesClient) ListByReservationOrderAndReservation(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (result ReservationSummariesListResultPage, err error) { 308 if tracing.IsEnabled() { 309 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrderAndReservation") 310 defer func() { 311 sc := -1 312 if result.rslr.Response.Response != nil { 313 sc = result.rslr.Response.Response.StatusCode 314 } 315 tracing.EndSpan(ctx, sc, err) 316 }() 317 } 318 result.fn = client.listByReservationOrderAndReservationNextResults 319 req, err := client.ListByReservationOrderAndReservationPreparer(ctx, reservationOrderID, reservationID, grain, filter) 320 if err != nil { 321 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", nil, "Failure preparing request") 322 return 323 } 324 325 resp, err := client.ListByReservationOrderAndReservationSender(req) 326 if err != nil { 327 result.rslr.Response = autorest.Response{Response: resp} 328 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", resp, "Failure sending request") 329 return 330 } 331 332 result.rslr, err = client.ListByReservationOrderAndReservationResponder(resp) 333 if err != nil { 334 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", resp, "Failure responding to request") 335 return 336 } 337 if result.rslr.hasNextLink() && result.rslr.IsEmpty() { 338 err = result.NextWithContext(ctx) 339 return 340 } 341 342 return 343} 344 345// ListByReservationOrderAndReservationPreparer prepares the ListByReservationOrderAndReservation request. 346func (client ReservationsSummariesClient) ListByReservationOrderAndReservationPreparer(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (*http.Request, error) { 347 pathParameters := map[string]interface{}{ 348 "reservationId": autorest.Encode("path", reservationID), 349 "reservationOrderId": autorest.Encode("path", reservationOrderID), 350 } 351 352 const APIVersion = "2019-10-01" 353 queryParameters := map[string]interface{}{ 354 "api-version": APIVersion, 355 "grain": autorest.Encode("query", grain), 356 } 357 if len(filter) > 0 { 358 queryParameters["$filter"] = autorest.Encode("query", filter) 359 } 360 361 preparer := autorest.CreatePreparer( 362 autorest.AsGet(), 363 autorest.WithBaseURL(client.BaseURI), 364 autorest.WithPathParameters("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/reservations/{reservationId}/providers/Microsoft.Consumption/reservationSummaries", pathParameters), 365 autorest.WithQueryParameters(queryParameters)) 366 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 367} 368 369// ListByReservationOrderAndReservationSender sends the ListByReservationOrderAndReservation request. The method will close the 370// http.Response Body if it receives an error. 371func (client ReservationsSummariesClient) ListByReservationOrderAndReservationSender(req *http.Request) (*http.Response, error) { 372 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 373} 374 375// ListByReservationOrderAndReservationResponder handles the response to the ListByReservationOrderAndReservation request. The method always 376// closes the http.Response Body. 377func (client ReservationsSummariesClient) ListByReservationOrderAndReservationResponder(resp *http.Response) (result ReservationSummariesListResult, err error) { 378 err = autorest.Respond( 379 resp, 380 azure.WithErrorUnlessStatusCode(http.StatusOK), 381 autorest.ByUnmarshallingJSON(&result), 382 autorest.ByClosing()) 383 result.Response = autorest.Response{Response: resp} 384 return 385} 386 387// listByReservationOrderAndReservationNextResults retrieves the next set of results, if any. 388func (client ReservationsSummariesClient) listByReservationOrderAndReservationNextResults(ctx context.Context, lastResults ReservationSummariesListResult) (result ReservationSummariesListResult, err error) { 389 req, err := lastResults.reservationSummariesListResultPreparer(ctx) 390 if err != nil { 391 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", nil, "Failure preparing next results request") 392 } 393 if req == nil { 394 return 395 } 396 resp, err := client.ListByReservationOrderAndReservationSender(req) 397 if err != nil { 398 result.Response = autorest.Response{Response: resp} 399 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", resp, "Failure sending next results request") 400 } 401 result, err = client.ListByReservationOrderAndReservationResponder(resp) 402 if err != nil { 403 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", resp, "Failure responding to next results request") 404 } 405 return 406} 407 408// ListByReservationOrderAndReservationComplete enumerates all values, automatically crossing page boundaries as required. 409func (client ReservationsSummariesClient) ListByReservationOrderAndReservationComplete(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (result ReservationSummariesListResultIterator, err error) { 410 if tracing.IsEnabled() { 411 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrderAndReservation") 412 defer func() { 413 sc := -1 414 if result.Response().Response.Response != nil { 415 sc = result.page.Response().Response.Response.StatusCode 416 } 417 tracing.EndSpan(ctx, sc, err) 418 }() 419 } 420 result.page, err = client.ListByReservationOrderAndReservation(ctx, reservationOrderID, reservationID, grain, filter) 421 return 422} 423