1package network 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 "net/http" 25) 26 27// LoadBalancersClient is the network Client 28type LoadBalancersClient struct { 29 BaseClient 30} 31 32// NewLoadBalancersClient creates an instance of the LoadBalancersClient client. 33func NewLoadBalancersClient(subscriptionID string) LoadBalancersClient { 34 return NewLoadBalancersClientWithBaseURI(DefaultBaseURI, subscriptionID) 35} 36 37// NewLoadBalancersClientWithBaseURI creates an instance of the LoadBalancersClient client. 38func NewLoadBalancersClientWithBaseURI(baseURI string, subscriptionID string) LoadBalancersClient { 39 return LoadBalancersClient{NewWithBaseURI(baseURI, subscriptionID)} 40} 41 42// CreateOrUpdate creates or updates a load balancer. 43// Parameters: 44// resourceGroupName - the name of the resource group. 45// loadBalancerName - the name of the load balancer. 46// parameters - parameters supplied to the create or update load balancer operation. 47func (client LoadBalancersClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (result LoadBalancersCreateOrUpdateFuture, err error) { 48 req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, loadBalancerName, parameters) 49 if err != nil { 50 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", nil, "Failure preparing request") 51 return 52 } 53 54 result, err = client.CreateOrUpdateSender(req) 55 if err != nil { 56 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "CreateOrUpdate", result.Response(), "Failure sending request") 57 return 58 } 59 60 return 61} 62 63// CreateOrUpdatePreparer prepares the CreateOrUpdate request. 64func (client LoadBalancersClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, parameters LoadBalancer) (*http.Request, error) { 65 pathParameters := map[string]interface{}{ 66 "loadBalancerName": autorest.Encode("path", loadBalancerName), 67 "resourceGroupName": autorest.Encode("path", resourceGroupName), 68 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 69 } 70 71 const APIVersion = "2016-12-01" 72 queryParameters := map[string]interface{}{ 73 "api-version": APIVersion, 74 } 75 76 preparer := autorest.CreatePreparer( 77 autorest.AsContentType("application/json; charset=utf-8"), 78 autorest.AsPut(), 79 autorest.WithBaseURL(client.BaseURI), 80 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), 81 autorest.WithJSON(parameters), 82 autorest.WithQueryParameters(queryParameters)) 83 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 84} 85 86// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the 87// http.Response Body if it receives an error. 88func (client LoadBalancersClient) CreateOrUpdateSender(req *http.Request) (future LoadBalancersCreateOrUpdateFuture, err error) { 89 sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client)) 90 future.Future = azure.NewFuture(req) 91 future.req = req 92 _, err = future.Done(sender) 93 if err != nil { 94 return 95 } 96 err = autorest.Respond(future.Response(), 97 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated)) 98 return 99} 100 101// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always 102// closes the http.Response Body. 103func (client LoadBalancersClient) CreateOrUpdateResponder(resp *http.Response) (result LoadBalancer, err error) { 104 err = autorest.Respond( 105 resp, 106 client.ByInspecting(), 107 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), 108 autorest.ByUnmarshallingJSON(&result), 109 autorest.ByClosing()) 110 result.Response = autorest.Response{Response: resp} 111 return 112} 113 114// Delete deletes the specified load balancer. 115// Parameters: 116// resourceGroupName - the name of the resource group. 117// loadBalancerName - the name of the load balancer. 118func (client LoadBalancersClient) Delete(ctx context.Context, resourceGroupName string, loadBalancerName string) (result LoadBalancersDeleteFuture, err error) { 119 req, err := client.DeletePreparer(ctx, resourceGroupName, loadBalancerName) 120 if err != nil { 121 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", nil, "Failure preparing request") 122 return 123 } 124 125 result, err = client.DeleteSender(req) 126 if err != nil { 127 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Delete", result.Response(), "Failure sending request") 128 return 129 } 130 131 return 132} 133 134// DeletePreparer prepares the Delete request. 135func (client LoadBalancersClient) DeletePreparer(ctx context.Context, resourceGroupName string, loadBalancerName string) (*http.Request, error) { 136 pathParameters := map[string]interface{}{ 137 "loadBalancerName": autorest.Encode("path", loadBalancerName), 138 "resourceGroupName": autorest.Encode("path", resourceGroupName), 139 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 140 } 141 142 const APIVersion = "2016-12-01" 143 queryParameters := map[string]interface{}{ 144 "api-version": APIVersion, 145 } 146 147 preparer := autorest.CreatePreparer( 148 autorest.AsDelete(), 149 autorest.WithBaseURL(client.BaseURI), 150 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), 151 autorest.WithQueryParameters(queryParameters)) 152 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 153} 154 155// DeleteSender sends the Delete request. The method will close the 156// http.Response Body if it receives an error. 157func (client LoadBalancersClient) DeleteSender(req *http.Request) (future LoadBalancersDeleteFuture, err error) { 158 sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client)) 159 future.Future = azure.NewFuture(req) 160 future.req = req 161 _, err = future.Done(sender) 162 if err != nil { 163 return 164 } 165 err = autorest.Respond(future.Response(), 166 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent)) 167 return 168} 169 170// DeleteResponder handles the response to the Delete request. The method always 171// closes the http.Response Body. 172func (client LoadBalancersClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { 173 err = autorest.Respond( 174 resp, 175 client.ByInspecting(), 176 azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent), 177 autorest.ByClosing()) 178 result.Response = resp 179 return 180} 181 182// Get gets the specified load balancer. 183// Parameters: 184// resourceGroupName - the name of the resource group. 185// loadBalancerName - the name of the load balancer. 186// expand - expands referenced resources. 187func (client LoadBalancersClient) Get(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (result LoadBalancer, err error) { 188 req, err := client.GetPreparer(ctx, resourceGroupName, loadBalancerName, expand) 189 if err != nil { 190 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", nil, "Failure preparing request") 191 return 192 } 193 194 resp, err := client.GetSender(req) 195 if err != nil { 196 result.Response = autorest.Response{Response: resp} 197 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure sending request") 198 return 199 } 200 201 result, err = client.GetResponder(resp) 202 if err != nil { 203 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "Get", resp, "Failure responding to request") 204 } 205 206 return 207} 208 209// GetPreparer prepares the Get request. 210func (client LoadBalancersClient) GetPreparer(ctx context.Context, resourceGroupName string, loadBalancerName string, expand string) (*http.Request, error) { 211 pathParameters := map[string]interface{}{ 212 "loadBalancerName": autorest.Encode("path", loadBalancerName), 213 "resourceGroupName": autorest.Encode("path", resourceGroupName), 214 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 215 } 216 217 const APIVersion = "2016-12-01" 218 queryParameters := map[string]interface{}{ 219 "api-version": APIVersion, 220 } 221 if len(expand) > 0 { 222 queryParameters["$expand"] = autorest.Encode("query", expand) 223 } 224 225 preparer := autorest.CreatePreparer( 226 autorest.AsGet(), 227 autorest.WithBaseURL(client.BaseURI), 228 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}", pathParameters), 229 autorest.WithQueryParameters(queryParameters)) 230 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 231} 232 233// GetSender sends the Get request. The method will close the 234// http.Response Body if it receives an error. 235func (client LoadBalancersClient) GetSender(req *http.Request) (*http.Response, error) { 236 return autorest.SendWithSender(client, req, 237 azure.DoRetryWithRegistration(client.Client)) 238} 239 240// GetResponder handles the response to the Get request. The method always 241// closes the http.Response Body. 242func (client LoadBalancersClient) GetResponder(resp *http.Response) (result LoadBalancer, err error) { 243 err = autorest.Respond( 244 resp, 245 client.ByInspecting(), 246 azure.WithErrorUnlessStatusCode(http.StatusOK), 247 autorest.ByUnmarshallingJSON(&result), 248 autorest.ByClosing()) 249 result.Response = autorest.Response{Response: resp} 250 return 251} 252 253// List gets all the load balancers in a resource group. 254// Parameters: 255// resourceGroupName - the name of the resource group. 256func (client LoadBalancersClient) List(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultPage, err error) { 257 result.fn = client.listNextResults 258 req, err := client.ListPreparer(ctx, resourceGroupName) 259 if err != nil { 260 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", nil, "Failure preparing request") 261 return 262 } 263 264 resp, err := client.ListSender(req) 265 if err != nil { 266 result.lblr.Response = autorest.Response{Response: resp} 267 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure sending request") 268 return 269 } 270 271 result.lblr, err = client.ListResponder(resp) 272 if err != nil { 273 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "List", resp, "Failure responding to request") 274 } 275 276 return 277} 278 279// ListPreparer prepares the List request. 280func (client LoadBalancersClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) { 281 pathParameters := map[string]interface{}{ 282 "resourceGroupName": autorest.Encode("path", resourceGroupName), 283 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 284 } 285 286 const APIVersion = "2016-12-01" 287 queryParameters := map[string]interface{}{ 288 "api-version": APIVersion, 289 } 290 291 preparer := autorest.CreatePreparer( 292 autorest.AsGet(), 293 autorest.WithBaseURL(client.BaseURI), 294 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers", pathParameters), 295 autorest.WithQueryParameters(queryParameters)) 296 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 297} 298 299// ListSender sends the List request. The method will close the 300// http.Response Body if it receives an error. 301func (client LoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) { 302 return autorest.SendWithSender(client, req, 303 azure.DoRetryWithRegistration(client.Client)) 304} 305 306// ListResponder handles the response to the List request. The method always 307// closes the http.Response Body. 308func (client LoadBalancersClient) ListResponder(resp *http.Response) (result LoadBalancerListResult, err error) { 309 err = autorest.Respond( 310 resp, 311 client.ByInspecting(), 312 azure.WithErrorUnlessStatusCode(http.StatusOK), 313 autorest.ByUnmarshallingJSON(&result), 314 autorest.ByClosing()) 315 result.Response = autorest.Response{Response: resp} 316 return 317} 318 319// listNextResults retrieves the next set of results, if any. 320func (client LoadBalancersClient) listNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { 321 req, err := lastResults.loadBalancerListResultPreparer() 322 if err != nil { 323 return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", nil, "Failure preparing next results request") 324 } 325 if req == nil { 326 return 327 } 328 resp, err := client.ListSender(req) 329 if err != nil { 330 result.Response = autorest.Response{Response: resp} 331 return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure sending next results request") 332 } 333 result, err = client.ListResponder(resp) 334 if err != nil { 335 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listNextResults", resp, "Failure responding to next results request") 336 } 337 return 338} 339 340// ListComplete enumerates all values, automatically crossing page boundaries as required. 341func (client LoadBalancersClient) ListComplete(ctx context.Context, resourceGroupName string) (result LoadBalancerListResultIterator, err error) { 342 result.page, err = client.List(ctx, resourceGroupName) 343 return 344} 345 346// ListAll gets all the load balancers in a subscription. 347func (client LoadBalancersClient) ListAll(ctx context.Context) (result LoadBalancerListResultPage, err error) { 348 result.fn = client.listAllNextResults 349 req, err := client.ListAllPreparer(ctx) 350 if err != nil { 351 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", nil, "Failure preparing request") 352 return 353 } 354 355 resp, err := client.ListAllSender(req) 356 if err != nil { 357 result.lblr.Response = autorest.Response{Response: resp} 358 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure sending request") 359 return 360 } 361 362 result.lblr, err = client.ListAllResponder(resp) 363 if err != nil { 364 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "ListAll", resp, "Failure responding to request") 365 } 366 367 return 368} 369 370// ListAllPreparer prepares the ListAll request. 371func (client LoadBalancersClient) ListAllPreparer(ctx context.Context) (*http.Request, error) { 372 pathParameters := map[string]interface{}{ 373 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 374 } 375 376 const APIVersion = "2016-12-01" 377 queryParameters := map[string]interface{}{ 378 "api-version": APIVersion, 379 } 380 381 preparer := autorest.CreatePreparer( 382 autorest.AsGet(), 383 autorest.WithBaseURL(client.BaseURI), 384 autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Network/loadBalancers", pathParameters), 385 autorest.WithQueryParameters(queryParameters)) 386 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 387} 388 389// ListAllSender sends the ListAll request. The method will close the 390// http.Response Body if it receives an error. 391func (client LoadBalancersClient) ListAllSender(req *http.Request) (*http.Response, error) { 392 return autorest.SendWithSender(client, req, 393 azure.DoRetryWithRegistration(client.Client)) 394} 395 396// ListAllResponder handles the response to the ListAll request. The method always 397// closes the http.Response Body. 398func (client LoadBalancersClient) ListAllResponder(resp *http.Response) (result LoadBalancerListResult, err error) { 399 err = autorest.Respond( 400 resp, 401 client.ByInspecting(), 402 azure.WithErrorUnlessStatusCode(http.StatusOK), 403 autorest.ByUnmarshallingJSON(&result), 404 autorest.ByClosing()) 405 result.Response = autorest.Response{Response: resp} 406 return 407} 408 409// listAllNextResults retrieves the next set of results, if any. 410func (client LoadBalancersClient) listAllNextResults(lastResults LoadBalancerListResult) (result LoadBalancerListResult, err error) { 411 req, err := lastResults.loadBalancerListResultPreparer() 412 if err != nil { 413 return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", nil, "Failure preparing next results request") 414 } 415 if req == nil { 416 return 417 } 418 resp, err := client.ListAllSender(req) 419 if err != nil { 420 result.Response = autorest.Response{Response: resp} 421 return result, autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure sending next results request") 422 } 423 result, err = client.ListAllResponder(resp) 424 if err != nil { 425 err = autorest.NewErrorWithError(err, "network.LoadBalancersClient", "listAllNextResults", resp, "Failure responding to next results request") 426 } 427 return 428} 429 430// ListAllComplete enumerates all values, automatically crossing page boundaries as required. 431func (client LoadBalancersClient) ListAllComplete(ctx context.Context) (result LoadBalancerListResultIterator, err error) { 432 result.page, err = client.ListAll(ctx) 433 return 434} 435