1package consumption 2 3// Copyright (c) Microsoft and contributors. All rights reserved. 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use this file except in compliance with the License. 7// You may obtain a copy of the License at 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// 14// See the License for the specific language governing permissions and 15// limitations under the License. 16// 17// Code generated by Microsoft (R) AutoRest Code Generator. 18// Changes may cause incorrect behavior and will be lost if the code is regenerated. 19 20import ( 21 "context" 22 "github.com/Azure/go-autorest/autorest" 23 "github.com/Azure/go-autorest/autorest/azure" 24 "github.com/Azure/go-autorest/tracing" 25 "net/http" 26) 27 28// ReservationsSummariesClient is the consumption management client provides access to consumption resources for Azure 29// Enterprise Subscriptions. 30type ReservationsSummariesClient struct { 31 BaseClient 32} 33 34// NewReservationsSummariesClient creates an instance of the ReservationsSummariesClient client. 35func NewReservationsSummariesClient(subscriptionID string) ReservationsSummariesClient { 36 return NewReservationsSummariesClientWithBaseURI(DefaultBaseURI, subscriptionID) 37} 38 39// NewReservationsSummariesClientWithBaseURI creates an instance of the ReservationsSummariesClient client using a 40// custom endpoint. Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, 41// Azure stack). 42func NewReservationsSummariesClientWithBaseURI(baseURI string, subscriptionID string) ReservationsSummariesClient { 43 return ReservationsSummariesClient{NewWithBaseURI(baseURI, subscriptionID)} 44} 45 46// ListByReservationOrder lists the reservations summaries for daily or monthly grain. 47// Parameters: 48// reservationOrderID - order Id of the reservation 49// grain - can be daily or monthly 50// filter - required only for daily grain. The properties/UsageDate for start date and end date. The filter 51// supports 'le' and 'ge' 52func (client ReservationsSummariesClient) ListByReservationOrder(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (result ReservationSummariesListResultPage, err error) { 53 if tracing.IsEnabled() { 54 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrder") 55 defer func() { 56 sc := -1 57 if result.rslr.Response.Response != nil { 58 sc = result.rslr.Response.Response.StatusCode 59 } 60 tracing.EndSpan(ctx, sc, err) 61 }() 62 } 63 result.fn = client.listByReservationOrderNextResults 64 req, err := client.ListByReservationOrderPreparer(ctx, reservationOrderID, grain, filter) 65 if err != nil { 66 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", nil, "Failure preparing request") 67 return 68 } 69 70 resp, err := client.ListByReservationOrderSender(req) 71 if err != nil { 72 result.rslr.Response = autorest.Response{Response: resp} 73 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", resp, "Failure sending request") 74 return 75 } 76 77 result.rslr, err = client.ListByReservationOrderResponder(resp) 78 if err != nil { 79 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrder", resp, "Failure responding to request") 80 return 81 } 82 if result.rslr.hasNextLink() && result.rslr.IsEmpty() { 83 err = result.NextWithContext(ctx) 84 return 85 } 86 87 return 88} 89 90// ListByReservationOrderPreparer prepares the ListByReservationOrder request. 91func (client ReservationsSummariesClient) ListByReservationOrderPreparer(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (*http.Request, error) { 92 pathParameters := map[string]interface{}{ 93 "reservationOrderId": autorest.Encode("path", reservationOrderID), 94 } 95 96 const APIVersion = "2018-10-01" 97 queryParameters := map[string]interface{}{ 98 "api-version": APIVersion, 99 "grain": autorest.Encode("query", grain), 100 } 101 if len(filter) > 0 { 102 queryParameters["$filter"] = autorest.Encode("query", filter) 103 } 104 105 preparer := autorest.CreatePreparer( 106 autorest.AsGet(), 107 autorest.WithBaseURL(client.BaseURI), 108 autorest.WithPathParameters("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/providers/Microsoft.Consumption/reservationSummaries", pathParameters), 109 autorest.WithQueryParameters(queryParameters)) 110 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 111} 112 113// ListByReservationOrderSender sends the ListByReservationOrder request. The method will close the 114// http.Response Body if it receives an error. 115func (client ReservationsSummariesClient) ListByReservationOrderSender(req *http.Request) (*http.Response, error) { 116 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 117} 118 119// ListByReservationOrderResponder handles the response to the ListByReservationOrder request. The method always 120// closes the http.Response Body. 121func (client ReservationsSummariesClient) ListByReservationOrderResponder(resp *http.Response) (result ReservationSummariesListResult, err error) { 122 err = autorest.Respond( 123 resp, 124 azure.WithErrorUnlessStatusCode(http.StatusOK), 125 autorest.ByUnmarshallingJSON(&result), 126 autorest.ByClosing()) 127 result.Response = autorest.Response{Response: resp} 128 return 129} 130 131// listByReservationOrderNextResults retrieves the next set of results, if any. 132func (client ReservationsSummariesClient) listByReservationOrderNextResults(ctx context.Context, lastResults ReservationSummariesListResult) (result ReservationSummariesListResult, err error) { 133 req, err := lastResults.reservationSummariesListResultPreparer(ctx) 134 if err != nil { 135 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", nil, "Failure preparing next results request") 136 } 137 if req == nil { 138 return 139 } 140 resp, err := client.ListByReservationOrderSender(req) 141 if err != nil { 142 result.Response = autorest.Response{Response: resp} 143 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", resp, "Failure sending next results request") 144 } 145 result, err = client.ListByReservationOrderResponder(resp) 146 if err != nil { 147 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderNextResults", resp, "Failure responding to next results request") 148 } 149 return 150} 151 152// ListByReservationOrderComplete enumerates all values, automatically crossing page boundaries as required. 153func (client ReservationsSummariesClient) ListByReservationOrderComplete(ctx context.Context, reservationOrderID string, grain Datagrain, filter string) (result ReservationSummariesListResultIterator, err error) { 154 if tracing.IsEnabled() { 155 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrder") 156 defer func() { 157 sc := -1 158 if result.Response().Response.Response != nil { 159 sc = result.page.Response().Response.Response.StatusCode 160 } 161 tracing.EndSpan(ctx, sc, err) 162 }() 163 } 164 result.page, err = client.ListByReservationOrder(ctx, reservationOrderID, grain, filter) 165 return 166} 167 168// ListByReservationOrderAndReservation lists the reservations summaries for daily or monthly grain. 169// Parameters: 170// reservationOrderID - order Id of the reservation 171// reservationID - id of the reservation 172// grain - can be daily or monthly 173// filter - required only for daily grain. The properties/UsageDate for start date and end date. The filter 174// supports 'le' and 'ge' 175func (client ReservationsSummariesClient) ListByReservationOrderAndReservation(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (result ReservationSummariesListResultPage, err error) { 176 if tracing.IsEnabled() { 177 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrderAndReservation") 178 defer func() { 179 sc := -1 180 if result.rslr.Response.Response != nil { 181 sc = result.rslr.Response.Response.StatusCode 182 } 183 tracing.EndSpan(ctx, sc, err) 184 }() 185 } 186 result.fn = client.listByReservationOrderAndReservationNextResults 187 req, err := client.ListByReservationOrderAndReservationPreparer(ctx, reservationOrderID, reservationID, grain, filter) 188 if err != nil { 189 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", nil, "Failure preparing request") 190 return 191 } 192 193 resp, err := client.ListByReservationOrderAndReservationSender(req) 194 if err != nil { 195 result.rslr.Response = autorest.Response{Response: resp} 196 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", resp, "Failure sending request") 197 return 198 } 199 200 result.rslr, err = client.ListByReservationOrderAndReservationResponder(resp) 201 if err != nil { 202 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "ListByReservationOrderAndReservation", resp, "Failure responding to request") 203 return 204 } 205 if result.rslr.hasNextLink() && result.rslr.IsEmpty() { 206 err = result.NextWithContext(ctx) 207 return 208 } 209 210 return 211} 212 213// ListByReservationOrderAndReservationPreparer prepares the ListByReservationOrderAndReservation request. 214func (client ReservationsSummariesClient) ListByReservationOrderAndReservationPreparer(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (*http.Request, error) { 215 pathParameters := map[string]interface{}{ 216 "reservationId": autorest.Encode("path", reservationID), 217 "reservationOrderId": autorest.Encode("path", reservationOrderID), 218 } 219 220 const APIVersion = "2018-10-01" 221 queryParameters := map[string]interface{}{ 222 "api-version": APIVersion, 223 "grain": autorest.Encode("query", grain), 224 } 225 if len(filter) > 0 { 226 queryParameters["$filter"] = autorest.Encode("query", filter) 227 } 228 229 preparer := autorest.CreatePreparer( 230 autorest.AsGet(), 231 autorest.WithBaseURL(client.BaseURI), 232 autorest.WithPathParameters("/providers/Microsoft.Capacity/reservationorders/{reservationOrderId}/reservations/{reservationId}/providers/Microsoft.Consumption/reservationSummaries", pathParameters), 233 autorest.WithQueryParameters(queryParameters)) 234 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 235} 236 237// ListByReservationOrderAndReservationSender sends the ListByReservationOrderAndReservation request. The method will close the 238// http.Response Body if it receives an error. 239func (client ReservationsSummariesClient) ListByReservationOrderAndReservationSender(req *http.Request) (*http.Response, error) { 240 return client.Send(req, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) 241} 242 243// ListByReservationOrderAndReservationResponder handles the response to the ListByReservationOrderAndReservation request. The method always 244// closes the http.Response Body. 245func (client ReservationsSummariesClient) ListByReservationOrderAndReservationResponder(resp *http.Response) (result ReservationSummariesListResult, err error) { 246 err = autorest.Respond( 247 resp, 248 azure.WithErrorUnlessStatusCode(http.StatusOK), 249 autorest.ByUnmarshallingJSON(&result), 250 autorest.ByClosing()) 251 result.Response = autorest.Response{Response: resp} 252 return 253} 254 255// listByReservationOrderAndReservationNextResults retrieves the next set of results, if any. 256func (client ReservationsSummariesClient) listByReservationOrderAndReservationNextResults(ctx context.Context, lastResults ReservationSummariesListResult) (result ReservationSummariesListResult, err error) { 257 req, err := lastResults.reservationSummariesListResultPreparer(ctx) 258 if err != nil { 259 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", nil, "Failure preparing next results request") 260 } 261 if req == nil { 262 return 263 } 264 resp, err := client.ListByReservationOrderAndReservationSender(req) 265 if err != nil { 266 result.Response = autorest.Response{Response: resp} 267 return result, autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", resp, "Failure sending next results request") 268 } 269 result, err = client.ListByReservationOrderAndReservationResponder(resp) 270 if err != nil { 271 err = autorest.NewErrorWithError(err, "consumption.ReservationsSummariesClient", "listByReservationOrderAndReservationNextResults", resp, "Failure responding to next results request") 272 } 273 return 274} 275 276// ListByReservationOrderAndReservationComplete enumerates all values, automatically crossing page boundaries as required. 277func (client ReservationsSummariesClient) ListByReservationOrderAndReservationComplete(ctx context.Context, reservationOrderID string, reservationID string, grain Datagrain, filter string) (result ReservationSummariesListResultIterator, err error) { 278 if tracing.IsEnabled() { 279 ctx = tracing.StartSpan(ctx, fqdn+"/ReservationsSummariesClient.ListByReservationOrderAndReservation") 280 defer func() { 281 sc := -1 282 if result.Response().Response.Response != nil { 283 sc = result.page.Response().Response.Response.StatusCode 284 } 285 tracing.EndSpan(ctx, sc, err) 286 }() 287 } 288 result.page, err = client.ListByReservationOrderAndReservation(ctx, reservationOrderID, reservationID, grain, filter) 289 return 290} 291